Index: clang/test/CodeGenCXX/cxx20-module-internal.cppm =================================================================== --- /dev/null +++ clang/test/CodeGenCXX/cxx20-module-internal.cppm @@ -0,0 +1,38 @@ +// 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(); +} + +// CHECK-DAG: void @_ZW1A6addsixv( +void addsix() { + Frob(nullptr); + frob(); + addone(); + void(x + y); +}