1*9eda5fc0SNathan Sidwell// RUN: %clang_cc1 -std=c++20 %s -triple %itanium_abi_triple -emit-llvm -o - | FileCheck %s 2*9eda5fc0SNathan Sidwell 3*9eda5fc0SNathan Sidwell// internal-linkage symbol mangling is implementation defined. Let's 4*9eda5fc0SNathan Sidwell// not mangle in the module attachment -- that unnecessarily bloats 5*9eda5fc0SNathan Sidwell// the symbols. 6*9eda5fc0SNathan Sidwell 7*9eda5fc0SNathan Sidwellexport module A; 8*9eda5fc0SNathan Sidwell 9*9eda5fc0SNathan Sidwell// CHECK-DAG: void @_ZL6addonev( 10*9eda5fc0SNathan Sidwellstatic void addone() {} 11*9eda5fc0SNathan Sidwell// CHECK-DAG: @_ZL1x = 12*9eda5fc0SNathan Sidwellstatic int x = 5; 13*9eda5fc0SNathan Sidwell 14*9eda5fc0SNathan Sidwellnamespace { 15*9eda5fc0SNathan Sidwell// CHECK-DAG: void @_ZN12_GLOBAL__N_14frobEv( 16*9eda5fc0SNathan Sidwellvoid frob() {} 17*9eda5fc0SNathan Sidwell// CHECK-DAG: @_ZN12_GLOBAL__N_11yE = 18*9eda5fc0SNathan Sidwellint y = 2; 19*9eda5fc0SNathan Sidwellstruct Bill { 20*9eda5fc0SNathan Sidwell void F(); 21*9eda5fc0SNathan Sidwell}; 22*9eda5fc0SNathan Sidwell// CHECK-DAG: void @_ZN12_GLOBAL__N_14Bill1FEv( 23*9eda5fc0SNathan Sidwellvoid Bill::F() {} 24*9eda5fc0SNathan Sidwell} // namespace 25*9eda5fc0SNathan Sidwell 26*9eda5fc0SNathan Sidwell// CHECK-DAG: void @_ZL4FrobPN12_GLOBAL__N_14BillE( 27*9eda5fc0SNathan Sidwellstatic void Frob(Bill *b) { 28*9eda5fc0SNathan Sidwell if (b) 29*9eda5fc0SNathan Sidwell b->F(); 30*9eda5fc0SNathan Sidwell} 31*9eda5fc0SNathan Sidwell 32*9eda5fc0SNathan Sidwellnamespace N { 33*9eda5fc0SNathan Sidwell// CHECK-DAG: void @_ZN1NL5innerEv( 34*9eda5fc0SNathan Sidwellstatic void inner() {} 35*9eda5fc0SNathan Sidwell// CHECK-DAG: @_ZN1NL1zE 36*9eda5fc0SNathan Sidwellstatic int z = 3; 37*9eda5fc0SNathan Sidwell} // namespace N 38*9eda5fc0SNathan Sidwell 39*9eda5fc0SNathan Sidwell// CHECK-DAG: void @_ZW1A6addsixv( 40*9eda5fc0SNathan Sidwellvoid addsix() { 41*9eda5fc0SNathan Sidwell Frob(nullptr); 42*9eda5fc0SNathan Sidwell frob(); 43*9eda5fc0SNathan Sidwell addone(); 44*9eda5fc0SNathan Sidwell void(x + y + N::z); 45*9eda5fc0SNathan Sidwell N::inner(); 46*9eda5fc0SNathan Sidwell} 47