12e9977c2SChuanqi Xu// RUN: rm -fr %t 22e9977c2SChuanqi Xu// RUN: mkdir %t 32e9977c2SChuanqi Xu// RUN: split-file %s %t 42e9977c2SChuanqi Xu// 52e9977c2SChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/a.cppm -emit-module-interface -o %t/m-a.pcm 62e9977c2SChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/b.cppm -emit-module-interface -o %t/m-b.pcm \ 72e9977c2SChuanqi Xu// RUN: -fprebuilt-module-path=%t 82e9977c2SChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/m.cppm -emit-module-interface -o %t/m.pcm \ 92e9977c2SChuanqi Xu// RUN: -fprebuilt-module-path=%t 102e9977c2SChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/use.cppm -fprebuilt-module-path=%t -emit-obj 112e9977c2SChuanqi Xu 12*da00c60dSChuanqi Xu// Test again with reduced BMI. 13*da00c60dSChuanqi Xu// RUN: rm -fr %t 14*da00c60dSChuanqi Xu// RUN: mkdir %t 15*da00c60dSChuanqi Xu// RUN: split-file %s %t 16*da00c60dSChuanqi Xu// 17*da00c60dSChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/a.cppm -emit-reduced-module-interface -o %t/m-a.pcm 18*da00c60dSChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/b.cppm -emit-reduced-module-interface -o %t/m-b.pcm \ 19*da00c60dSChuanqi Xu// RUN: -fprebuilt-module-path=%t 20*da00c60dSChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/m.cppm -emit-reduced-module-interface -o %t/m.pcm \ 21*da00c60dSChuanqi Xu// RUN: -fprebuilt-module-path=%t 22*da00c60dSChuanqi Xu// RUN: %clang_cc1 -std=c++20 %t/use.cppm -fprebuilt-module-path=%t -emit-obj 23*da00c60dSChuanqi Xu 24*da00c60dSChuanqi Xu 252e9977c2SChuanqi Xu//--- a.cppm 262e9977c2SChuanqi Xuexport module m:a; 272e9977c2SChuanqi Xunamespace n { 282e9977c2SChuanqi Xuexport class a { 292e9977c2SChuanqi Xupublic: 302e9977c2SChuanqi Xu virtual ~a() {} 312e9977c2SChuanqi Xu}; 322e9977c2SChuanqi Xu} 332e9977c2SChuanqi Xu 342e9977c2SChuanqi Xu//--- b.cppm 352e9977c2SChuanqi Xuexport module m:b; 362e9977c2SChuanqi Xunamespace n { 372e9977c2SChuanqi Xuclass a; 382e9977c2SChuanqi Xu} 392e9977c2SChuanqi Xu 402e9977c2SChuanqi Xu//--- m.cppm 412e9977c2SChuanqi Xuexport module m; 422e9977c2SChuanqi Xuexport import :a; 432e9977c2SChuanqi Xuexport import :b; 442e9977c2SChuanqi Xu 452e9977c2SChuanqi Xu//--- use.cppm 462e9977c2SChuanqi Xu// expected-no-diagnostics 472e9977c2SChuanqi Xuexport module u; 482e9977c2SChuanqi Xuexport import m; 492e9977c2SChuanqi Xu 502e9977c2SChuanqi Xustruct aa : public n::a { 512e9977c2SChuanqi Xu aa() {} 522e9977c2SChuanqi Xu}; 532e9977c2SChuanqi Xuauto foo(n::a*) { 542e9977c2SChuanqi Xu return; 552e9977c2SChuanqi Xu} 562e9977c2SChuanqi Xu 572e9977c2SChuanqi Xuvoid use() { 582e9977c2SChuanqi Xu n::a _; 592e9977c2SChuanqi Xu} 60