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