| // RUN: %clang_cc1 -std=c++20 %s -triple %itanium_abi_triple -emit-llvm -o - | FileCheck %s |
| |
| // internal-linkage symbol mangling is implementation defined. Let's |
| // not mangle in the module attachment -- that unnecessarily bloats |
| // the symbols. |
| |
| export module A; |
| |
| // CHECK-DAG: void @_ZL6addonev( |
| static void addone() {} |
| // CHECK-DAG: @_ZL1x = |
| static int x = 5; |
| |
| namespace { |
| // CHECK-DAG: void @_ZN12_GLOBAL__N_14frobEv( |
| void frob() {} |
| // CHECK-DAG: @_ZN12_GLOBAL__N_11yE = |
| int y = 2; |
| struct Bill { |
| void F(); |
| }; |
| // CHECK-DAG: void @_ZN12_GLOBAL__N_14Bill1FEv( |
| void Bill::F() {} |
| } // namespace |
| |
| // CHECK-DAG: void @_ZL4FrobPN12_GLOBAL__N_14BillE( |
| static void Frob(Bill *b) { |
| if (b) |
| b->F(); |
| } |
| |
| namespace N { |
| // CHECK-DAG: void @_ZN1NL5innerEv( |
| static void inner() {} |
| // CHECK-DAG: @_ZN1NL1zE |
| static int z = 3; |
| } // namespace N |
| |
| // CHECK-DAG: void @_ZW1A6addsixv( |
| void addsix() { |
| Frob(nullptr); |
| frob(); |
| addone(); |
| void(x + y + N::z); |
| N::inner(); |
| } |