diff options
Diffstat (limited to 'clang/test/Modules/pr120277.cppm')
| -rw-r--r-- | clang/test/Modules/pr120277.cppm | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/clang/test/Modules/pr120277.cppm b/clang/test/Modules/pr120277.cppm new file mode 100644 index 000000000000..a4f55ef113b2 --- /dev/null +++ b/clang/test/Modules/pr120277.cppm @@ -0,0 +1,58 @@ +// RUN: rm -rf %t +// RUN: mkdir -p %t +// RUN: split-file %s %t +// +// RUN: %clang_cc1 -std=c++20 %t/a.cppm -emit-module-interface -o %t/a.pcm +// RUN: %clang_cc1 -std=c++20 %t/b.cppm -emit-module-interface -o %t/b.pcm \ +// RUN: -fprebuilt-module-path=%t +// RUN: %clang_cc1 -std=c++20 %t/c.cppm -emit-module-interface -o %t/c.pcm \ +// RUN: -fprebuilt-module-path=%t +// RUN: %clang_cc1 -std=c++20 %t/d.cppm -emit-module-interface -o %t/d.pcm \ +// RUN: -fprebuilt-module-path=%t +// RUN: %clang_cc1 -std=c++20 %t/d.pcm -emit-llvm -o %t/d.ll \ +// RUN: -fprebuilt-module-path=%t +// RUN: cat %t/d.ll | FileCheck %t/d.cppm + +//--- a.cppm +export module a; + +export template<int> +struct a { + static auto f() { + } +}; + +//--- b.cppm +export module b; + +import a; + +void b() { + a<0> t; +} + +//--- c.cppm +export module c; + +import a; + +void c() { + a<0>::f(); +} + +//--- d.cppm +export module d; + +import a; +import b; +import c; + +struct d { + static void g() { + a<0>::f(); + a<1>::f(); + } +}; + +// fine enough to check it won't crash +// CHECK: define |
