|  | // 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(); | 
|  | } |