diff options
author | Chuanqi Xu <yedeng.yd@linux.alibaba.com> | 2024-01-29 14:32:29 +0800 |
---|---|---|
committer | Tom Stellard <tstellar@redhat.com> | 2024-02-06 21:30:14 -0800 |
commit | 70195e0d67080c2d0d1f321db69ebb40042a1c7a (patch) | |
tree | 995b0df86f13902d8a43cde725abefc8a570e764 /clang/test | |
parent | a0e1cc0aefbc879cb2861003e487576e9a6b3c93 (diff) | |
download | llvm-70195e0d67080c2d0d1f321db69ebb40042a1c7a.zip llvm-70195e0d67080c2d0d1f321db69ebb40042a1c7a.tar.gz llvm-70195e0d67080c2d0d1f321db69ebb40042a1c7a.tar.bz2 |
[C++20] [Modules] Remove previous workaround for odr hashing enums
Previosly we land
https://github.com/llvm/llvm-project/commit/085eae6b863881fb9fda323e5b672b04a00ed19e
to workaround the false positive ODR violations in
https://github.com/llvm/llvm-project/issues/76638.
However, we decided to not perform ODR checks for decls from GMF in
https://github.com/llvm/llvm-project/issues/79240 and we land the
corresponding change. So we should be able to remove the workaround now.
The original tests get remained.
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/Modules/cxx20-modules-enum-odr.cppm | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/clang/test/Modules/cxx20-modules-enum-odr.cppm b/clang/test/Modules/cxx20-modules-enum-odr.cppm new file mode 100644 index 0000000..831c011 --- /dev/null +++ b/clang/test/Modules/cxx20-modules-enum-odr.cppm @@ -0,0 +1,51 @@ +// RUN: rm -rf %t +// RUN: mkdir -p %t +// RUN: split-file %s %t +// +// RUN: %clang_cc1 -std=c++20 %t/mod1.cppm -emit-module-interface -o %t/mod1.pcm +// RUN: %clang_cc1 -std=c++20 %t/mod2.cppm -emit-module-interface -o %t/mod2.pcm +// RUN: %clang_cc1 -std=c++20 %t/test.cpp -fprebuilt-module-path=%t -verify -fsyntax-only + +//--- size_t.h + +extern "C" { + typedef unsigned int size_t; +} + +//--- csize_t +namespace std { + using :: size_t; +} + +//--- align.h +namespace std { + enum class align_val_t : size_t {}; +} + +//--- mod1.cppm +module; +#include "size_t.h" +#include "align.h" +export module mod1; +namespace std { +export using std::align_val_t; +} + +//--- mod2.cppm +module; +#include "size_t.h" +#include "csize_t" +#include "align.h" +export module mod2; +namespace std { +export using std::align_val_t; +} + +//--- test.cpp +// expected-no-diagnostics +import mod1; +import mod2; +void test() { + std::align_val_t v; +} + |