mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-05-14 01:46:41 +00:00

Close https://github.com/llvm/llvm-project/issues/59719. The root cause of the problem is that we forgot to serialize a new introduced bit to FunctionDeclBits. Maybe we need to find some methods to work for detecting this.
58 lines
1.2 KiB
C++
58 lines
1.2 KiB
C++
// https://github.com/llvm/llvm-project/issues/59780
|
|
//
|
|
// RUN: rm -rf %t
|
|
// RUN: mkdir %t
|
|
// RUN: split-file %s %t
|
|
//
|
|
// RUN: %clang_cc1 -std=c++20 %t/data.cppm -emit-module-interface -o %t/data.pcm
|
|
// RUN: %clang_cc1 -std=c++20 %t/main.cpp -fprebuilt-module-path=%t -fsyntax-only -verify
|
|
|
|
//--- foo.h
|
|
namespace std {
|
|
|
|
template <class _Tp>
|
|
class expected {
|
|
public:
|
|
expected(_Tp&& __u)
|
|
{}
|
|
|
|
constexpr ~expected()
|
|
requires(__is_trivially_destructible(_Tp))
|
|
= default;
|
|
|
|
constexpr ~expected()
|
|
requires(!__is_trivially_destructible(_Tp))
|
|
{
|
|
}
|
|
};
|
|
|
|
template <class _Tp>
|
|
class unique_ptr {
|
|
public:
|
|
unique_ptr(void* __p) {}
|
|
~unique_ptr() {}
|
|
};
|
|
|
|
}
|
|
|
|
//--- data.cppm
|
|
module;
|
|
#include "foo.h"
|
|
export module data;
|
|
export namespace std {
|
|
using std::unique_ptr;
|
|
using std::expected;
|
|
}
|
|
|
|
export std::expected<std::unique_ptr<int>> parse() {
|
|
return std::unique_ptr<int>(nullptr);
|
|
}
|
|
|
|
//--- main.cpp
|
|
// expected-no-diagnostics
|
|
import data;
|
|
|
|
int main(int argc, const char *argv[]) {
|
|
std::expected<std::unique_ptr<int>> result = parse();
|
|
}
|