[InstCombine] Preserve NSW flags for `lshr (mul nuw X, C1), C2 -> mul nuw nsw X,...
[llvm-project.git] / clang / test / CodeGenCXX / cxx20-module-internal.cppm
blobb45358325c423db1af5bd13cf3d0809b90d8c9a4
1 // RUN: %clang_cc1 -std=c++20 %s -triple %itanium_abi_triple -emit-llvm -o - | FileCheck %s
3 // internal-linkage symbol mangling is implementation defined.  Let's
4 // not mangle in the module attachment -- that unnecessarily bloats
5 // the symbols.
7 export module A;
9 // CHECK-DAG: void @_ZL6addonev(
10 static void addone() {}
11 // CHECK-DAG: @_ZL1x =
12 static int x = 5;
14 namespace {
15 // CHECK-DAG: void @_ZN12_GLOBAL__N_14frobEv(
16 void frob() {}
17 // CHECK-DAG: @_ZN12_GLOBAL__N_11yE =
18 int y = 2;
19 struct Bill {
20   void F();
22 // CHECK-DAG: void @_ZN12_GLOBAL__N_14Bill1FEv(
23 void Bill::F() {}
24 } // namespace
26 // CHECK-DAG: void @_ZL4FrobPN12_GLOBAL__N_14BillE(
27 static void Frob(Bill *b) {
28   if (b)
29     b->F();
32 namespace N {
33 // CHECK-DAG: void @_ZN1NL5innerEv(
34 static void inner() {}
35 // CHECK-DAG: @_ZN1NL1zE
36 static int z = 3;
37 } // namespace N
39 // CHECK-DAG: void @_ZW1A6addsixv(
40 void addsix() {
41   Frob(nullptr);
42   frob();
43   addone();
44   void(x + y + N::z);
45   N::inner();