forked from OSchip/llvm-project
[clang] Verify internal entity module mangling
Internal symbol mangling is implementation-defined. We do not mangle any module attachment, and this adds a test to verify that. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D123220
This commit is contained in:
parent
7c3d8c8977
commit
9eda5fc0c6
|
@ -0,0 +1,46 @@
|
|||
// 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();
|
||||
}
|
Loading…
Reference in New Issue