Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / Modules / pr61065_2.cppm
blob10cc1a06b7e450a5c53b90285b2caa7e9234f66d
1 // RUN: rm -rf %t
2 // RUN: mkdir -p %t
3 // RUN: split-file %s %t
4 //
5 // RUN: %clang_cc1 -std=c++20 %t/a.cppm -emit-module-interface -o %t/a.pcm
6 // RUN: %clang_cc1 -std=c++20 %t/b.cppm -emit-module-interface -o %t/b.pcm \
7 // RUN:     -fprebuilt-module-path=%t
8 // RUN: %clang_cc1 -std=c++20 %t/c.cppm -emit-module-interface -o %t/c.pcm \
9 // RUN:     -fprebuilt-module-path=%t
10 // RUN: %clang_cc1 -std=c++20 %t/d.cppm -emit-module-interface -o %t/d.pcm \
11 // RUN:     -fprebuilt-module-path=%t
12 // RUN: %clang_cc1 -std=c++20 %t/e.cpp -fsyntax-only -verify -fprebuilt-module-path=%t
14 //--- a.cppm
15 export module a;
17 struct WithCtor {
18   WithCtor();
21 export template <typename T>
22 struct Getter {
23   union {
24     WithCtor container;
25   };
28 //--- b.cppm
29 export module b;
31 import a;
33 export template <typename T>
34 class AnySpan {
35  public:
36   AnySpan();
37   AnySpan(Getter<T> getter)
38       : getter_(getter) {}
40  private:
41   Getter<T> getter_;
44 //--- c.cppm
45 export module c;
46 import b;
48 export inline void RegisterInt322(
49    AnySpan<const int> sibling_field_nums) {
50   sibling_field_nums = sibling_field_nums;
53 //--- d.cppm
54 // expected-no-diagnostics
55 export module d;
56 import c;
57 import b;
59 export inline void RegisterInt32(
60    AnySpan<const int> sibling_field_nums = {}) {
61   sibling_field_nums = sibling_field_nums;
64 //--- e.cpp
65 import d;
66 import b;
68 // expected-no-diagnostics
69 void foo(AnySpan<const int> s) {
70   s = AnySpan<const int>(s);