xref: /llvm-project/clang/test/Modules/module-init-duplicated-import.cppm (revision 7c1d9b15eee3a34678addab2bab66f3020ac0753)
13f092736SChuanqi Xu// RUN: rm -rf %t
23f092736SChuanqi Xu// RUN: split-file %s %t
33f092736SChuanqi Xu// RUN: cd %t
43f092736SChuanqi Xu//
53f092736SChuanqi Xu// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++20 %t/a.cppm \
63f092736SChuanqi Xu// RUN:      -emit-module-interface -o %t/a.pcm
73f092736SChuanqi Xu// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++20 %t/m.cppm \
83f092736SChuanqi Xu// RUN:      -emit-module-interface -fmodule-file=a=%t/a.pcm -o %t/m.pcm
93f092736SChuanqi Xu// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++20 %t/m.pcm  \
10*7c1d9b15SFangrui Song// RUN:      -fmodule-file=a=%t/a.pcm -emit-llvm -o - | FileCheck %t/m.cppm
113f092736SChuanqi Xu
12da00c60dSChuanqi Xu// Test again with reduced BMI.
13da00c60dSChuanqi Xu// Note that we can't use reduced BMI here for m.cppm since it is required
14da00c60dSChuanqi Xu// to generate the backend code.
15da00c60dSChuanqi Xu// RUN: rm %t/a.pcm %t/m.pcm
16da00c60dSChuanqi Xu// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++20 %t/a.cppm \
17da00c60dSChuanqi Xu// RUN:      -emit-reduced-module-interface -o %t/a.pcm
18da00c60dSChuanqi Xu// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++20 %t/m.cppm \
19da00c60dSChuanqi Xu// RUN:      -emit-module-interface -fmodule-file=a=%t/a.pcm -o %t/m.pcm
20da00c60dSChuanqi Xu// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++20 %t/m.pcm  \
21*7c1d9b15SFangrui Song// RUN:      -fmodule-file=a=%t/a.pcm -emit-llvm -o - | FileCheck %t/m.cppm
22da00c60dSChuanqi Xu
233f092736SChuanqi Xu//--- a.cppm
243f092736SChuanqi Xuexport module a;
253f092736SChuanqi Xuexport struct A {
263f092736SChuanqi Xu  A(){};
273f092736SChuanqi Xu};
283f092736SChuanqi Xuexport A __dynamic_inited_a;
293f092736SChuanqi Xu
303f092736SChuanqi Xu//--- m.cppm
313f092736SChuanqi Xuexport module m;
323f092736SChuanqi Xuimport a;
333f092736SChuanqi Xuexport import a;
343f092736SChuanqi Xu
353f092736SChuanqi Xu
363f092736SChuanqi Xu// CHECK: define void @_ZGIW1m
373f092736SChuanqi Xu// CHECK: store i8 1, ptr @_ZGIW1m__in_chrg
383f092736SChuanqi Xu// CHECK: call{{.*}}@_ZGIW1a
39