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