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