1*afda39a5SIain Sandoe 
2*afda39a5SIain Sandoe // RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++20 %s \
3*afda39a5SIain Sandoe // RUN:    -emit-module-interface -o HasPMF.pcm
4*afda39a5SIain Sandoe // RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++20 HasPMF.pcm \
5*afda39a5SIain Sandoe // RUN:  -S -emit-llvm -o - | FileCheck %s
6*afda39a5SIain Sandoe 
7*afda39a5SIain Sandoe module;
8*afda39a5SIain Sandoe 
9*afda39a5SIain Sandoe struct Glob {
10*afda39a5SIain Sandoe   Glob(){};
11*afda39a5SIain Sandoe };
12*afda39a5SIain Sandoe 
13*afda39a5SIain Sandoe Glob G;
14*afda39a5SIain Sandoe 
15*afda39a5SIain Sandoe export module HasPMF;
16*afda39a5SIain Sandoe 
17*afda39a5SIain Sandoe export struct InMod {
18*afda39a5SIain Sandoe   InMod(){};
19*afda39a5SIain Sandoe };
20*afda39a5SIain Sandoe 
21*afda39a5SIain Sandoe export InMod IM;
22*afda39a5SIain Sandoe 
23*afda39a5SIain Sandoe module :private;
24*afda39a5SIain Sandoe 
25*afda39a5SIain Sandoe struct InPMF {
26*afda39a5SIain Sandoe   InPMF(){};
27*afda39a5SIain Sandoe };
28*afda39a5SIain Sandoe 
29*afda39a5SIain Sandoe InPMF P;
30*afda39a5SIain Sandoe 
31*afda39a5SIain Sandoe // CHECK: define internal void @__cxx_global_var_init
32*afda39a5SIain Sandoe // CHECK: call {{.*}} @_ZN4GlobC1Ev
33*afda39a5SIain Sandoe // CHECK: define internal void @__cxx_global_var_init
34*afda39a5SIain Sandoe // CHECK: call {{.*}} @_ZNW6HasPMF5InPMFC1Ev
35*afda39a5SIain Sandoe // CHECK: define internal void @__cxx_global_var_init
36*afda39a5SIain Sandoe // CHECK: call {{.*}} @_ZNW6HasPMF5InModC1Ev
37*afda39a5SIain Sandoe // CHECK: define void @_ZGIW6HasPMF
38*afda39a5SIain Sandoe // CHECK: store i8 1, ptr @_ZGIW6HasPMF__in_chrg
39*afda39a5SIain Sandoe // CHECK: call void @__cxx_global_var_init
40*afda39a5SIain Sandoe // CHECK: call void @__cxx_global_var_init
41*afda39a5SIain Sandoe // CHECK: call void @__cxx_global_var_init
42