47 lines · plain
1// RUN: %clang_cc1 -std=c++20 %s -triple %itanium_abi_triple -emit-llvm -o - | FileCheck %s2 3// internal-linkage symbol mangling is implementation defined. Let's4// not mangle in the module attachment -- that unnecessarily bloats5// 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} // namespace25 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: @_ZN1NL1zE36static int z = 3;37} // namespace N38 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