[PAC] Fix address discrimination for type info vtable pointers (#102199)
In #99726, `-fptrauth-type-info-vtable-pointer-discrimination` was introduced, which is intended to enable type and address discrimination for type_info vtable pointers. However, some codegen logic for actually enabling address discrimination was missing. This patch addresses the issue. Fixes #101716
This commit is contained in:
@@ -3437,7 +3437,7 @@ class ItaniumRTTIBuilder {
|
||||
llvm::Constant *GetAddrOfExternalRTTIDescriptor(QualType Ty);
|
||||
|
||||
/// BuildVTablePointer - Build the vtable pointer for the given type.
|
||||
void BuildVTablePointer(const Type *Ty);
|
||||
void BuildVTablePointer(const Type *Ty, llvm::Constant *StorageAddress);
|
||||
|
||||
/// BuildSIClassTypeInfo - Build an abi::__si_class_type_info, used for single
|
||||
/// inheritance, according to the Itanium C++ ABI, 2.9.5p6b.
|
||||
@@ -3834,7 +3834,8 @@ static bool CanUseSingleInheritance(const CXXRecordDecl *RD) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void ItaniumRTTIBuilder::BuildVTablePointer(const Type *Ty) {
|
||||
void ItaniumRTTIBuilder::BuildVTablePointer(const Type *Ty,
|
||||
llvm::Constant *StorageAddress) {
|
||||
// abi::__class_type_info.
|
||||
static const char * const ClassTypeInfo =
|
||||
"_ZTVN10__cxxabiv117__class_type_infoE";
|
||||
@@ -3981,9 +3982,12 @@ void ItaniumRTTIBuilder::BuildVTablePointer(const Type *Ty) {
|
||||
VTable, Two);
|
||||
}
|
||||
|
||||
if (auto &Schema = CGM.getCodeGenOpts().PointerAuth.CXXTypeInfoVTablePointer)
|
||||
VTable = CGM.getConstantSignedPointer(VTable, Schema, nullptr, GlobalDecl(),
|
||||
QualType(Ty, 0));
|
||||
if (const auto &Schema =
|
||||
CGM.getCodeGenOpts().PointerAuth.CXXTypeInfoVTablePointer)
|
||||
VTable = CGM.getConstantSignedPointer(
|
||||
VTable, Schema,
|
||||
Schema.isAddressDiscriminated() ? StorageAddress : nullptr,
|
||||
GlobalDecl(), QualType(Ty, 0));
|
||||
|
||||
Fields.push_back(VTable);
|
||||
}
|
||||
@@ -4099,8 +4103,18 @@ llvm::Constant *ItaniumRTTIBuilder::BuildTypeInfo(
|
||||
llvm::GlobalVariable::LinkageTypes Linkage,
|
||||
llvm::GlobalValue::VisibilityTypes Visibility,
|
||||
llvm::GlobalValue::DLLStorageClassTypes DLLStorageClass) {
|
||||
SmallString<256> Name;
|
||||
llvm::raw_svector_ostream Out(Name);
|
||||
CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out);
|
||||
llvm::Module &M = CGM.getModule();
|
||||
llvm::GlobalVariable *OldGV = M.getNamedGlobal(Name);
|
||||
// int8 is an arbitrary type to be replaced later with replaceInitializer.
|
||||
llvm::GlobalVariable *GV =
|
||||
new llvm::GlobalVariable(M, CGM.Int8Ty, /*isConstant=*/true, Linkage,
|
||||
/*Initializer=*/nullptr, Name);
|
||||
|
||||
// Add the vtable pointer.
|
||||
BuildVTablePointer(cast<Type>(Ty));
|
||||
BuildVTablePointer(cast<Type>(Ty), GV);
|
||||
|
||||
// And the name.
|
||||
llvm::GlobalVariable *TypeName = GetAddrOfTypeName(Ty, Linkage);
|
||||
@@ -4218,16 +4232,7 @@ llvm::Constant *ItaniumRTTIBuilder::BuildTypeInfo(
|
||||
llvm_unreachable("HLSL doesn't support RTTI");
|
||||
}
|
||||
|
||||
llvm::Constant *Init = llvm::ConstantStruct::getAnon(Fields);
|
||||
|
||||
SmallString<256> Name;
|
||||
llvm::raw_svector_ostream Out(Name);
|
||||
CGM.getCXXABI().getMangleContext().mangleCXXRTTI(Ty, Out);
|
||||
llvm::Module &M = CGM.getModule();
|
||||
llvm::GlobalVariable *OldGV = M.getNamedGlobal(Name);
|
||||
llvm::GlobalVariable *GV =
|
||||
new llvm::GlobalVariable(M, Init->getType(),
|
||||
/*isConstant=*/true, Linkage, Init, Name);
|
||||
GV->replaceInitializer(llvm::ConstantStruct::getAnon(Fields));
|
||||
|
||||
// Export the typeinfo in the same circumstances as the vtable is exported.
|
||||
auto GVDLLStorageClass = DLLStorageClass;
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
// RUN: %clang_cc1 %s -triple=aarch64-unknown-fuchsia -O1 -o - -emit-llvm -fhalf-no-semantic-interposition | FileCheck %s
|
||||
|
||||
// The inline function is emitted in each module with the same comdat
|
||||
// CHECK: $_ZTS1A = comdat any
|
||||
// CHECK: $_ZTI1A = comdat any
|
||||
// CHECK: $_ZTS1A = comdat any
|
||||
// CHECK: $_ZTI1B.rtti_proxy = comdat any
|
||||
|
||||
// The VTable is emitted everywhere used
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
// RUN: %clang_cc1 %s -triple=aarch64-unknown-fuchsia -O1 -o - -emit-llvm | FileCheck %s
|
||||
|
||||
// CHECK: $_ZTV1A = comdat any
|
||||
// CHECK: $_ZTS1A = comdat any
|
||||
// CHECK: $_ZTI1A = comdat any
|
||||
// CHECK: $_ZTS1A = comdat any
|
||||
// CHECK: $_ZTI1A.rtti_proxy = comdat any
|
||||
|
||||
// The VTable is linkonce_odr and in a comdat here bc it’s key function is inline defined.
|
||||
|
||||
@@ -8,12 +8,12 @@
|
||||
// CHECK: $_ZN1A3fooEv = comdat any
|
||||
// CHECK: $_ZN1B3fooEv = comdat any
|
||||
// CHECK: $_ZTV1A = comdat any
|
||||
// CHECK: $_ZTS1A = comdat any
|
||||
// CHECK: $_ZTI1A = comdat any
|
||||
// CHECK: $_ZTS1A = comdat any
|
||||
// CHECK: $_ZTI1A.rtti_proxy = comdat any
|
||||
// CHECK: $_ZTV1B = comdat any
|
||||
// CHECK: $_ZTS1B = comdat any
|
||||
// CHECK: $_ZTI1B = comdat any
|
||||
// CHECK: $_ZTS1B = comdat any
|
||||
// CHECK: $_ZTI1B.rtti_proxy = comdat any
|
||||
|
||||
// Both the vtables for A and B are emitted and in their own comdats.
|
||||
|
||||
@@ -7,17 +7,17 @@
|
||||
// A::foo() has a comdat since it is an inline function
|
||||
// CHECK: $_ZN1A3fooEv = comdat any
|
||||
// CHECK: $_ZTV1A = comdat any
|
||||
// CHECK: $_ZTI1A = comdat any
|
||||
// CHECK: $_ZTS1A = comdat any
|
||||
|
||||
// The VTable for A has its own comdat section bc it has no key function
|
||||
// CHECK: $_ZTI1A = comdat any
|
||||
// CHECK: $_ZTI1A.rtti_proxy = comdat any
|
||||
|
||||
// The VTable for A is emitted here and in a comdat section since it has no key function, and is used in this module when creating an instance of A.
|
||||
// CHECK: @_ZTV1A.local = linkonce_odr hidden unnamed_addr constant { [3 x i32] } { [3 x i32] [i32 0, i32 trunc (i64 sub (i64 ptrtoint (ptr @_ZTI1A.rtti_proxy to i64), i64 ptrtoint (ptr getelementptr inbounds ({ [3 x i32] }, ptr @_ZTV1A.local, i32 0, i32 0, i32 2) to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr dso_local_equivalent @_ZN1A3fooEv to i64), i64 ptrtoint (ptr getelementptr inbounds ({ [3 x i32] }, ptr @_ZTV1A.local, i32 0, i32 0, i32 2) to i64)) to i32)] }, comdat($_ZTV1A), align 4
|
||||
// CHECK: @_ZTI1A = linkonce_odr constant { ptr, ptr } { ptr getelementptr inbounds (i8, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i32 8), ptr @_ZTS1A }, comdat, align 8
|
||||
// CHECK: @_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr]
|
||||
// CHECK: @_ZTS1A = linkonce_odr constant [3 x i8] c"1A\00", comdat, align 1
|
||||
// CHECK: @_ZTI1A = linkonce_odr constant { ptr, ptr } { ptr getelementptr inbounds (i8, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i32 8), ptr @_ZTS1A }, comdat, align 8
|
||||
// CHECK: @_ZTI1A.rtti_proxy = linkonce_odr hidden unnamed_addr constant ptr @_ZTI1A, comdat
|
||||
// CHECK: @_ZTV1A = linkonce_odr unnamed_addr alias { [3 x i32] }, ptr @_ZTV1A.local
|
||||
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
// The vtable definition itself is private so we can take relative references to
|
||||
// it. The vtable symbol will be exposed through a public alias.
|
||||
// CHECK: @_ZTV1A.local = internal unnamed_addr constant { [3 x i32] } { [3 x i32] [i32 0, i32 trunc (i64 sub (i64 ptrtoint (ptr @_ZTI1A.rtti_proxy to i64), i64 ptrtoint (ptr getelementptr inbounds ({ [3 x i32] }, ptr @_ZTV1A.local, i32 0, i32 0, i32 2) to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint (ptr dso_local_equivalent @_ZN1A3fooEv to i64), i64 ptrtoint (ptr getelementptr inbounds ({ [3 x i32] }, ptr @_ZTV1A.local, i32 0, i32 0, i32 2) to i64)) to i32)] }, align 4
|
||||
// CHECK: @_ZTI1A ={{.*}} constant { ptr, ptr } { ptr getelementptr inbounds (i8, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i32 8), ptr @_ZTS1A }, align 8
|
||||
// CHECK: @_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr]
|
||||
// CHECK: @_ZTS1A ={{.*}} constant [3 x i8] c"1A\00", align 1
|
||||
// CHECK: @_ZTI1A ={{.*}} constant { ptr, ptr } { ptr getelementptr inbounds (i8, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i32 8), ptr @_ZTS1A }, align 8
|
||||
|
||||
// The rtti should be in a comdat
|
||||
// CHECK: @_ZTI1A.rtti_proxy = {{.*}}comdat
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
// CHECK: $_ZTI1A.rtti_proxy = comdat any
|
||||
// CHECK: $_ZTI1B.rtti_proxy = comdat any
|
||||
|
||||
// CHECK: @_ZTI1A ={{.*}} constant { ptr, ptr } { ptr getelementptr inbounds (i8, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i32 8), ptr @_ZTS1A }, align 8
|
||||
// CHECK: @_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr]
|
||||
// CHECK: @_ZTS1A ={{.*}} constant [3 x i8] c"1A\00", align 1
|
||||
// CHECK: @_ZTI1A ={{.*}} constant { ptr, ptr } { ptr getelementptr inbounds (i8, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i32 8), ptr @_ZTS1A }, align 8
|
||||
// CHECK: @_ZTI1B ={{.*}} constant { ptr, ptr, ptr } { ptr getelementptr inbounds (i8, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i32 8), ptr @_ZTS1B, ptr @_ZTI1A }, align 8
|
||||
// CHECK: @_ZTVN10__cxxabiv120__si_class_type_infoE = external global [0 x ptr]
|
||||
// CHECK: @_ZTS1B ={{.*}} constant [3 x i8] c"1B\00", align 1
|
||||
// CHECK: @_ZTI1B ={{.*}} constant { ptr, ptr, ptr } { ptr getelementptr inbounds (i8, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i32 8), ptr @_ZTS1B, ptr @_ZTI1A }, align 8
|
||||
// CHECK: @_ZTI1A.rtti_proxy = linkonce_odr hidden unnamed_addr constant ptr @_ZTI1A, comdat
|
||||
// CHECK: @_ZTI1B.rtti_proxy = linkonce_odr hidden unnamed_addr constant ptr @_ZTI1B, comdat
|
||||
|
||||
|
||||
@@ -50,17 +50,17 @@ namespace test2 {
|
||||
|
||||
struct __attribute__((visibility("hidden"))) B {};
|
||||
const std::type_info &b0 = typeid(B);
|
||||
// CHECK-GLOBALS: @_ZTSN5test21BE = linkonce_odr hidden constant
|
||||
// CHECK-GLOBALS: @_ZTIN5test21BE = linkonce_odr hidden constant { {{.*}}, ptr @_ZTSN5test21BE }
|
||||
// CHECK-GLOBALS: @_ZTSN5test21BE = linkonce_odr hidden constant
|
||||
|
||||
const std::type_info &b1 = typeid(B*);
|
||||
// CHECK-GLOBALS: @_ZTSPN5test21BE = linkonce_odr hidden constant
|
||||
// CHECK-GLOBALS: @_ZTIPN5test21BE = linkonce_odr hidden constant { {{.*}}, ptr @_ZTSPN5test21BE, i32 0, ptr @_ZTIN5test21BE
|
||||
// CHECK-GLOBALS: @_ZTSPN5test21BE = linkonce_odr hidden constant
|
||||
|
||||
struct C {};
|
||||
const std::type_info &c0 = typeid(C);
|
||||
// CHECK-GLOBALS: @_ZTSN5test21CE = linkonce_odr constant [11 x i8] c"N5test21CE\00"
|
||||
// CHECK-GLOBALS: @_ZTIN5test21CE = linkonce_odr constant { {{.*}}, ptr @_ZTSN5test21CE }
|
||||
// CHECK-GLOBALS: @_ZTSN5test21CE = linkonce_odr constant [11 x i8] c"N5test21CE\00"
|
||||
}
|
||||
|
||||
// va_list should be based on "char *" rather than "ptr".
|
||||
|
||||
@@ -10,17 +10,17 @@ B fail;
|
||||
// CHECK: @_ZTV1B = linkonce_odr unnamed_addr addrspace(1) constant { [3 x ptr addrspace(1)] } { [3 x ptr addrspace(1)] [ptr addrspace(1) null, ptr addrspace(1) @_ZTI1B, ptr addrspace(1) addrspacecast (ptr @_ZN1A1fEv to ptr addrspace(1))] }, comdat, align 8
|
||||
// CHECK: @fail = addrspace(1) global { ptr addrspace(1) } { ptr addrspace(1) getelementptr inbounds inrange(-16, 8) ({ [3 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTV1B, i32 0, i32 0, i32 2) }, align 8
|
||||
// CHECK: @_ZTI1A = external addrspace(1) constant ptr addrspace(1)
|
||||
// CHECK: @_ZTI1B = linkonce_odr addrspace(1) constant { ptr addrspace(1), ptr addrspace(1), ptr addrspace(1) } { ptr addrspace(1) getelementptr inbounds (ptr addrspace(1), ptr addrspace(1) @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr addrspace(1) @_ZTS1B, ptr addrspace(1) @_ZTI1A }, comdat, align 8
|
||||
// CHECK: @_ZTVN10__cxxabiv120__si_class_type_infoE = external addrspace(1) global [0 x ptr addrspace(1)]
|
||||
// CHECK: @_ZTS1B = linkonce_odr addrspace(1) constant [3 x i8] c"1B\00", comdat, align 1
|
||||
// CHECK: @_ZTI1B = linkonce_odr addrspace(1) constant { ptr addrspace(1), ptr addrspace(1), ptr addrspace(1) } { ptr addrspace(1) getelementptr inbounds (ptr addrspace(1), ptr addrspace(1) @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr addrspace(1) @_ZTS1B, ptr addrspace(1) @_ZTI1A }, comdat, align 8
|
||||
// CHECK: @__oclc_ABI_version = weak_odr hidden local_unnamed_addr addrspace(4) constant i32 500
|
||||
//.
|
||||
// WITH-NONZERO-DEFAULT-AS: @_ZTV1B = linkonce_odr unnamed_addr addrspace(1) constant { [3 x ptr addrspace(1)] } { [3 x ptr addrspace(1)] [ptr addrspace(1) null, ptr addrspace(1) @_ZTI1B, ptr addrspace(1) addrspacecast (ptr addrspace(4) @_ZN1A1fEv to ptr addrspace(1))] }, comdat, align 8
|
||||
// WITH-NONZERO-DEFAULT-AS: @fail = addrspace(1) global { ptr addrspace(1) } { ptr addrspace(1) getelementptr inbounds inrange(-16, 8) ({ [3 x ptr addrspace(1)] }, ptr addrspace(1) @_ZTV1B, i32 0, i32 0, i32 2) }, align 8
|
||||
// WITH-NONZERO-DEFAULT-AS: @_ZTI1A = external addrspace(1) constant ptr addrspace(1)
|
||||
// WITH-NONZERO-DEFAULT-AS: @_ZTI1B = linkonce_odr addrspace(1) constant { ptr addrspace(1), ptr addrspace(1), ptr addrspace(1) } { ptr addrspace(1) getelementptr inbounds (ptr addrspace(1), ptr addrspace(1) @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr addrspace(1) @_ZTS1B, ptr addrspace(1) @_ZTI1A }, comdat, align 8
|
||||
// WITH-NONZERO-DEFAULT-AS: @_ZTVN10__cxxabiv120__si_class_type_infoE = external addrspace(1) global [0 x ptr addrspace(1)]
|
||||
// WITH-NONZERO-DEFAULT-AS: @_ZTS1B = linkonce_odr addrspace(1) constant [3 x i8] c"1B\00", comdat, align 1
|
||||
// WITH-NONZERO-DEFAULT-AS: @_ZTI1B = linkonce_odr addrspace(1) constant { ptr addrspace(1), ptr addrspace(1), ptr addrspace(1) } { ptr addrspace(1) getelementptr inbounds (ptr addrspace(1), ptr addrspace(1) @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), ptr addrspace(1) @_ZTS1B, ptr addrspace(1) @_ZTI1A }, comdat, align 8
|
||||
//.
|
||||
// CHECK-LABEL: define dso_local noundef nonnull align 8 dereferenceable(8) ptr @_Z1fP1A(
|
||||
// CHECK-SAME: ptr noundef [[A:%.*]]) #[[ATTR0:[0-9]+]] personality ptr @__gxx_personality_v0 {
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
// CHECK: @_ZTIN5test11AE = linkonce_odr constant
|
||||
// CHECK: @_ZTIN5test11BE = linkonce_odr constant
|
||||
// CHECK: @_ZTIN5test11CE = linkonce_odr constant
|
||||
// CHECK: @_ZTIN5test11DE = linkonce_odr constant
|
||||
// CHECK: @_ZTIPN5test11DE = linkonce_odr constant {{.*}} @_ZTIN5test11DE
|
||||
// CHECK: @_ZTIN5test11DE = linkonce_odr constant
|
||||
|
||||
// PR6974: this shouldn't crash
|
||||
namespace test0 {
|
||||
|
||||
@@ -7,6 +7,6 @@
|
||||
// under -fvisibility=hidden the type of function f, due to its va_list (aka
|
||||
// __builtin_va_list, aka __va_list_tag (*)[1]) parameter would be hidden:
|
||||
|
||||
// CHECK: @_ZTSFvP13__va_list_tagE = linkonce_odr constant
|
||||
// CHECK: @_ZTIFvP13__va_list_tagE = linkonce_odr constant
|
||||
// CHECK: @_ZTSFvP13__va_list_tagE = linkonce_odr constant
|
||||
void f(va_list) { (void)typeid(f); }
|
||||
|
||||
@@ -16,20 +16,20 @@
|
||||
// C is an incomplete class type, so any direct or indirect pointer types should have
|
||||
// internal linkage, as should the type info for C itself.
|
||||
struct C;
|
||||
// CHECK: @_ZTSP1C = internal constant
|
||||
// CHECK: @_ZTS1C = internal constant
|
||||
// CHECK: @_ZTI1C = internal constant
|
||||
// CHECK: @_ZTIP1C = internal constant
|
||||
// CHECK: @_ZTSPP1C = internal constant
|
||||
// CHECK: @_ZTSP1C = internal constant
|
||||
// CHECK: @_ZTI1C = internal constant
|
||||
// CHECK: @_ZTS1C = internal constant
|
||||
// CHECK: @_ZTIPP1C = internal constant
|
||||
// CHECK: @_ZTSPP1C = internal constant
|
||||
|
||||
struct __attribute__((type_visibility("default"))) D;
|
||||
// CHECK: @_ZTSP1D = internal constant
|
||||
// CHECK: @_ZTS1D = internal constant
|
||||
// CHECK: @_ZTI1D = internal constant
|
||||
// CHECK: @_ZTIP1D = internal constant
|
||||
// CHECK: @_ZTSPP1D = internal constant
|
||||
// CHECK: @_ZTSP1D = internal constant
|
||||
// CHECK: @_ZTI1D = internal constant
|
||||
// CHECK: @_ZTS1D = internal constant
|
||||
// CHECK: @_ZTIPP1D = internal constant
|
||||
// CHECK: @_ZTSPP1D = internal constant
|
||||
|
||||
void __attribute__((visibility("default"))) tfunc() {
|
||||
(void)typeid(C *);
|
||||
@@ -46,12 +46,12 @@ void s::foo() {}
|
||||
// UNSPECIFIED-DEF: @_ZTV1s = unnamed_addr constant
|
||||
// UNSPECIFIED-HID: @_ZTV1s = hidden unnamed_addr constant
|
||||
// UNSPECIFIED-EXP: @_ZTV1s = dllexport unnamed_addr constant
|
||||
// UNSPECIFIED-DEF: @_ZTS1s = constant
|
||||
// UNSPECIFIED-HID: @_ZTS1s = hidden constant
|
||||
// UNSPECIFIED-EXP: @_ZTS1s = dllexport constant
|
||||
// UNSPECIFIED-DEF: @_ZTI1s = constant
|
||||
// UNSPECIFIED-HID: @_ZTI1s = hidden constant
|
||||
// UNSPECIFIED-EXP: @_ZTI1s = dllexport constant
|
||||
// UNSPECIFIED-DEF: @_ZTS1s = constant
|
||||
// UNSPECIFIED-HID: @_ZTS1s = hidden constant
|
||||
// UNSPECIFIED-EXP: @_ZTS1s = dllexport constant
|
||||
|
||||
// explicit default visibility RTTI & vtable
|
||||
struct __attribute__((type_visibility("default"))) t {
|
||||
@@ -61,12 +61,12 @@ void t::foo() {}
|
||||
// EXPLICIT-DEF: @_ZTV1t = unnamed_addr constant
|
||||
// EXPLICIT-HID: @_ZTV1t = hidden unnamed_addr constant
|
||||
// EXPLICIT-EXP: @_ZTV1t = dllexport unnamed_addr constant
|
||||
// EXPLICIT-DEF: @_ZTS1t = constant
|
||||
// EXPLICIT-HID: @_ZTS1t = hidden constant
|
||||
// EXPLICIT-EXP: @_ZTS1t = dllexport constant
|
||||
// EXPLICIT-DEF: @_ZTI1t = constant
|
||||
// EXPLICIT-HID: @_ZTI1t = hidden constant
|
||||
// EXPLICIT-EXP: @_ZTI1t = dllexport constant
|
||||
// EXPLICIT-DEF: @_ZTS1t = constant
|
||||
// EXPLICIT-HID: @_ZTS1t = hidden constant
|
||||
// EXPLICIT-EXP: @_ZTS1t = dllexport constant
|
||||
|
||||
#ifdef FUNDAMENTAL_IS_EXPLICIT
|
||||
#define TYPE_VIS __attribute__((type_visibility("default")))
|
||||
@@ -86,511 +86,511 @@ __fundamental_type_info::~__fundamental_type_info() {}
|
||||
|
||||
// __cxxabiv1::__fundamental_type_info
|
||||
// FUND-DEF: @_ZTVN10__cxxabiv123__fundamental_type_infoE = unnamed_addr constant
|
||||
// FUND-DEF: @_ZTSN10__cxxabiv123__fundamental_type_infoE = constant
|
||||
// FUND-DEF: @_ZTIN10__cxxabiv123__fundamental_type_infoE = constant
|
||||
// FUND-DEF: @_ZTSN10__cxxabiv123__fundamental_type_infoE = constant
|
||||
// FUND-HID: @_ZTVN10__cxxabiv123__fundamental_type_infoE = hidden unnamed_addr constant
|
||||
// FUND-HID: @_ZTSN10__cxxabiv123__fundamental_type_infoE = hidden constant
|
||||
// FUND-HID: @_ZTIN10__cxxabiv123__fundamental_type_infoE = hidden constant
|
||||
// FUND-HID: @_ZTSN10__cxxabiv123__fundamental_type_infoE = hidden constant
|
||||
// FUND-EXP: @_ZTVN10__cxxabiv123__fundamental_type_infoE = dllexport unnamed_addr constant
|
||||
// FUND-EXP: @_ZTSN10__cxxabiv123__fundamental_type_infoE = dllexport constant
|
||||
// FUND-EXP: @_ZTIN10__cxxabiv123__fundamental_type_infoE = dllexport constant
|
||||
// FUND-EXP: @_ZTSN10__cxxabiv123__fundamental_type_infoE = dllexport constant
|
||||
|
||||
// void
|
||||
// FUND-DEF: @_ZTSv = constant
|
||||
// FUND-DEF: @_ZTIv = constant
|
||||
// FUND-DEF: @_ZTSPv = constant
|
||||
// FUND-DEF: @_ZTSv = constant
|
||||
// FUND-DEF: @_ZTIPv = constant
|
||||
// FUND-DEF: @_ZTSPKv = constant
|
||||
// FUND-DEF: @_ZTSPv = constant
|
||||
// FUND-DEF: @_ZTIPKv = constant
|
||||
// FUND-HID: @_ZTSv = hidden constant
|
||||
// FUND-DEF: @_ZTSPKv = constant
|
||||
// FUND-HID: @_ZTIv = hidden constant
|
||||
// FUND-HID: @_ZTSPv = hidden constant
|
||||
// FUND-HID: @_ZTSv = hidden constant
|
||||
// FUND-HID: @_ZTIPv = hidden constant
|
||||
// FUND-HID: @_ZTSPKv = hidden constant
|
||||
// FUND-HID: @_ZTSPv = hidden constant
|
||||
// FUND-HID: @_ZTIPKv = hidden constant
|
||||
// FUND-EXP: @_ZTSv = dllexport constant
|
||||
// FUND-HID: @_ZTSPKv = hidden constant
|
||||
// FUND-EXP: @_ZTIv = dllexport constant
|
||||
// FUND-EXP: @_ZTSPv = dllexport constant
|
||||
// FUND-EXP: @_ZTSv = dllexport constant
|
||||
// FUND-EXP: @_ZTIPv = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKv = dllexport constant
|
||||
// FUND-EXP: @_ZTSPv = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKv = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKv = dllexport constant
|
||||
|
||||
// std::nullptr_t
|
||||
// FUND-DEF: @_ZTSDn = constant
|
||||
// FUND-DEF: @_ZTIDn = constant
|
||||
// FUND-DEF: @_ZTSPDn = constant
|
||||
// FUND-DEF: @_ZTSDn = constant
|
||||
// FUND-DEF: @_ZTIPDn = constant
|
||||
// FUND-DEF: @_ZTSPKDn = constant
|
||||
// FUND-DEF: @_ZTSPDn = constant
|
||||
// FUND-DEF: @_ZTIPKDn = constant
|
||||
// FUND-HID: @_ZTSDn = hidden constant
|
||||
// FUND-DEF: @_ZTSPKDn = constant
|
||||
// FUND-HID: @_ZTIDn = hidden constant
|
||||
// FUND-HID: @_ZTSPDn = hidden constant
|
||||
// FUND-HID: @_ZTSDn = hidden constant
|
||||
// FUND-HID: @_ZTIPDn = hidden constant
|
||||
// FUND-HID: @_ZTSPKDn = hidden constant
|
||||
// FUND-HID: @_ZTSPDn = hidden constant
|
||||
// FUND-HID: @_ZTIPKDn = hidden constant
|
||||
// FUND-EXP: @_ZTSDn = dllexport constant
|
||||
// FUND-HID: @_ZTSPKDn = hidden constant
|
||||
// FUND-EXP: @_ZTIDn = dllexport constant
|
||||
// FUND-EXP: @_ZTSPDn = dllexport constant
|
||||
// FUND-EXP: @_ZTSDn = dllexport constant
|
||||
// FUND-EXP: @_ZTIPDn = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKDn = dllexport constant
|
||||
// FUND-EXP: @_ZTSPDn = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKDn = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKDn = dllexport constant
|
||||
|
||||
// bool
|
||||
// FUND-DEF: @_ZTSb = constant
|
||||
// FUND-DEF: @_ZTIb = constant
|
||||
// FUND-DEF: @_ZTSPb = constant
|
||||
// FUND-DEF: @_ZTSb = constant
|
||||
// FUND-DEF: @_ZTIPb = constant
|
||||
// FUND-DEF: @_ZTSPKb = constant
|
||||
// FUND-DEF: @_ZTSPb = constant
|
||||
// FUND-DEF: @_ZTIPKb = constant
|
||||
// FUND-HID: @_ZTSb = hidden constant
|
||||
// FUND-DEF: @_ZTSPKb = constant
|
||||
// FUND-HID: @_ZTIb = hidden constant
|
||||
// FUND-HID: @_ZTSPb = hidden constant
|
||||
// FUND-HID: @_ZTSb = hidden constant
|
||||
// FUND-HID: @_ZTIPb = hidden constant
|
||||
// FUND-HID: @_ZTSPKb = hidden constant
|
||||
// FUND-HID: @_ZTSPb = hidden constant
|
||||
// FUND-HID: @_ZTIPKb = hidden constant
|
||||
// FUND-EXP: @_ZTSb = dllexport constant
|
||||
// FUND-HID: @_ZTSPKb = hidden constant
|
||||
// FUND-EXP: @_ZTIb = dllexport constant
|
||||
// FUND-EXP: @_ZTSPb = dllexport constant
|
||||
// FUND-EXP: @_ZTSb = dllexport constant
|
||||
// FUND-EXP: @_ZTIPb = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKb = dllexport constant
|
||||
// FUND-EXP: @_ZTSPb = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKb = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKb = dllexport constant
|
||||
|
||||
// wchar_t
|
||||
// FUND-DEF: @_ZTSw = constant
|
||||
// FUND-DEF: @_ZTIw = constant
|
||||
// FUND-DEF: @_ZTSPw = constant
|
||||
// FUND-DEF: @_ZTSw = constant
|
||||
// FUND-DEF: @_ZTIPw = constant
|
||||
// FUND-DEF: @_ZTSPKw = constant
|
||||
// FUND-DEF: @_ZTSPw = constant
|
||||
// FUND-DEF: @_ZTIPKw = constant
|
||||
// FUND-HID: @_ZTSw = hidden constant
|
||||
// FUND-DEF: @_ZTSPKw = constant
|
||||
// FUND-HID: @_ZTIw = hidden constant
|
||||
// FUND-HID: @_ZTSPw = hidden constant
|
||||
// FUND-HID: @_ZTSw = hidden constant
|
||||
// FUND-HID: @_ZTIPw = hidden constant
|
||||
// FUND-HID: @_ZTSPKw = hidden constant
|
||||
// FUND-HID: @_ZTSPw = hidden constant
|
||||
// FUND-HID: @_ZTIPKw = hidden constant
|
||||
// FUND-EXP: @_ZTSw = dllexport constant
|
||||
// FUND-HID: @_ZTSPKw = hidden constant
|
||||
// FUND-EXP: @_ZTIw = dllexport constant
|
||||
// FUND-EXP: @_ZTSPw = dllexport constant
|
||||
// FUND-EXP: @_ZTSw = dllexport constant
|
||||
// FUND-EXP: @_ZTIPw = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKw = dllexport constant
|
||||
// FUND-EXP: @_ZTSPw = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKw = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKw = dllexport constant
|
||||
|
||||
// char
|
||||
// FUND-DEF: @_ZTSc = constant
|
||||
// FUND-DEF: @_ZTIc = constant
|
||||
// FUND-DEF: @_ZTSPc = constant
|
||||
// FUND-DEF: @_ZTSc = constant
|
||||
// FUND-DEF: @_ZTIPc = constant
|
||||
// FUND-DEF: @_ZTSPKc = constant
|
||||
// FUND-DEF: @_ZTSPc = constant
|
||||
// FUND-DEF: @_ZTIPKc = constant
|
||||
// FUND-HID: @_ZTSc = hidden constant
|
||||
// FUND-DEF: @_ZTSPKc = constant
|
||||
// FUND-HID: @_ZTIc = hidden constant
|
||||
// FUND-HID: @_ZTSPc = hidden constant
|
||||
// FUND-HID: @_ZTSc = hidden constant
|
||||
// FUND-HID: @_ZTIPc = hidden constant
|
||||
// FUND-HID: @_ZTSPKc = hidden constant
|
||||
// FUND-HID: @_ZTSPc = hidden constant
|
||||
// FUND-HID: @_ZTIPKc = hidden constant
|
||||
// FUND-EXP: @_ZTSc = dllexport constant
|
||||
// FUND-HID: @_ZTSPKc = hidden constant
|
||||
// FUND-EXP: @_ZTIc = dllexport constant
|
||||
// FUND-EXP: @_ZTSPc = dllexport constant
|
||||
// FUND-EXP: @_ZTSc = dllexport constant
|
||||
// FUND-EXP: @_ZTIPc = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKc = dllexport constant
|
||||
// FUND-EXP: @_ZTSPc = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKc = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKc = dllexport constant
|
||||
|
||||
// unsigned char
|
||||
// FUND-DEF: @_ZTSh = constant
|
||||
// FUND-DEF: @_ZTIh = constant
|
||||
// FUND-DEF: @_ZTSPh = constant
|
||||
// FUND-DEF: @_ZTSh = constant
|
||||
// FUND-DEF: @_ZTIPh = constant
|
||||
// FUND-DEF: @_ZTSPKh = constant
|
||||
// FUND-DEF: @_ZTSPh = constant
|
||||
// FUND-DEF: @_ZTIPKh = constant
|
||||
// FUND-HID: @_ZTSh = hidden constant
|
||||
// FUND-DEF: @_ZTSPKh = constant
|
||||
// FUND-HID: @_ZTIh = hidden constant
|
||||
// FUND-HID: @_ZTSPh = hidden constant
|
||||
// FUND-HID: @_ZTSh = hidden constant
|
||||
// FUND-HID: @_ZTIPh = hidden constant
|
||||
// FUND-HID: @_ZTSPKh = hidden constant
|
||||
// FUND-HID: @_ZTSPh = hidden constant
|
||||
// FUND-HID: @_ZTIPKh = hidden constant
|
||||
// FUND-EXP: @_ZTSh = dllexport constant
|
||||
// FUND-HID: @_ZTSPKh = hidden constant
|
||||
// FUND-EXP: @_ZTIh = dllexport constant
|
||||
// FUND-EXP: @_ZTSPh = dllexport constant
|
||||
// FUND-EXP: @_ZTSh = dllexport constant
|
||||
// FUND-EXP: @_ZTIPh = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKh = dllexport constant
|
||||
// FUND-EXP: @_ZTSPh = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKh = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKh = dllexport constant
|
||||
|
||||
// signed char
|
||||
// FUND-DEF: @_ZTSa = constant
|
||||
// FUND-DEF: @_ZTIa = constant
|
||||
// FUND-DEF: @_ZTSPa = constant
|
||||
// FUND-DEF: @_ZTSa = constant
|
||||
// FUND-DEF: @_ZTIPa = constant
|
||||
// FUND-DEF: @_ZTSPKa = constant
|
||||
// FUND-DEF: @_ZTSPa = constant
|
||||
// FUND-DEF: @_ZTIPKa = constant
|
||||
// FUND-HID: @_ZTSa = hidden constant
|
||||
// FUND-DEF: @_ZTSPKa = constant
|
||||
// FUND-HID: @_ZTIa = hidden constant
|
||||
// FUND-HID: @_ZTSPa = hidden constant
|
||||
// FUND-HID: @_ZTSa = hidden constant
|
||||
// FUND-HID: @_ZTIPa = hidden constant
|
||||
// FUND-HID: @_ZTSPKa = hidden constant
|
||||
// FUND-HID: @_ZTSPa = hidden constant
|
||||
// FUND-HID: @_ZTIPKa = hidden constant
|
||||
// FUND-EXP: @_ZTSa = dllexport constant
|
||||
// FUND-HID: @_ZTSPKa = hidden constant
|
||||
// FUND-EXP: @_ZTIa = dllexport constant
|
||||
// FUND-EXP: @_ZTSPa = dllexport constant
|
||||
// FUND-EXP: @_ZTSa = dllexport constant
|
||||
// FUND-EXP: @_ZTIPa = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKa = dllexport constant
|
||||
// FUND-EXP: @_ZTSPa = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKa = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKa = dllexport constant
|
||||
|
||||
// short
|
||||
// FUND-DEF: @_ZTSs = constant
|
||||
// FUND-DEF: @_ZTIs = constant
|
||||
// FUND-DEF: @_ZTSPs = constant
|
||||
// FUND-DEF: @_ZTSs = constant
|
||||
// FUND-DEF: @_ZTIPs = constant
|
||||
// FUND-DEF: @_ZTSPKs = constant
|
||||
// FUND-DEF: @_ZTSPs = constant
|
||||
// FUND-DEF: @_ZTIPKs = constant
|
||||
// FUND-HID: @_ZTSs = hidden constant
|
||||
// FUND-DEF: @_ZTSPKs = constant
|
||||
// FUND-HID: @_ZTIs = hidden constant
|
||||
// FUND-HID: @_ZTSPs = hidden constant
|
||||
// FUND-HID: @_ZTSs = hidden constant
|
||||
// FUND-HID: @_ZTIPs = hidden constant
|
||||
// FUND-HID: @_ZTSPKs = hidden constant
|
||||
// FUND-HID: @_ZTSPs = hidden constant
|
||||
// FUND-HID: @_ZTIPKs = hidden constant
|
||||
// FUND-EXP: @_ZTSs = dllexport constant
|
||||
// FUND-HID: @_ZTSPKs = hidden constant
|
||||
// FUND-EXP: @_ZTIs = dllexport constant
|
||||
// FUND-EXP: @_ZTSPs = dllexport constant
|
||||
// FUND-EXP: @_ZTSs = dllexport constant
|
||||
// FUND-EXP: @_ZTIPs = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKs = dllexport constant
|
||||
// FUND-EXP: @_ZTSPs = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKs = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKs = dllexport constant
|
||||
|
||||
// unsigned short
|
||||
// FUND-DEF: @_ZTSt = constant
|
||||
// FUND-DEF: @_ZTIt = constant
|
||||
// FUND-DEF: @_ZTSPt = constant
|
||||
// FUND-DEF: @_ZTSt = constant
|
||||
// FUND-DEF: @_ZTIPt = constant
|
||||
// FUND-DEF: @_ZTSPKt = constant
|
||||
// FUND-DEF: @_ZTSPt = constant
|
||||
// FUND-DEF: @_ZTIPKt = constant
|
||||
// FUND-HID: @_ZTSt = hidden constant
|
||||
// FUND-DEF: @_ZTSPKt = constant
|
||||
// FUND-HID: @_ZTIt = hidden constant
|
||||
// FUND-HID: @_ZTSPt = hidden constant
|
||||
// FUND-HID: @_ZTSt = hidden constant
|
||||
// FUND-HID: @_ZTIPt = hidden constant
|
||||
// FUND-HID: @_ZTSPKt = hidden constant
|
||||
// FUND-HID: @_ZTSPt = hidden constant
|
||||
// FUND-HID: @_ZTIPKt = hidden constant
|
||||
// FUND-EXP: @_ZTSt = dllexport constant
|
||||
// FUND-HID: @_ZTSPKt = hidden constant
|
||||
// FUND-EXP: @_ZTIt = dllexport constant
|
||||
// FUND-EXP: @_ZTSPt = dllexport constant
|
||||
// FUND-EXP: @_ZTSt = dllexport constant
|
||||
// FUND-EXP: @_ZTIPt = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKt = dllexport constant
|
||||
// FUND-EXP: @_ZTSPt = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKt = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKt = dllexport constant
|
||||
|
||||
// int
|
||||
// FUND-DEF: @_ZTSi = constant
|
||||
// FUND-DEF: @_ZTIi = constant
|
||||
// FUND-DEF: @_ZTSPi = constant
|
||||
// FUND-DEF: @_ZTSi = constant
|
||||
// FUND-DEF: @_ZTIPi = constant
|
||||
// FUND-DEF: @_ZTSPKi = constant
|
||||
// FUND-DEF: @_ZTSPi = constant
|
||||
// FUND-DEF: @_ZTIPKi = constant
|
||||
// FUND-HID: @_ZTSi = hidden constant
|
||||
// FUND-DEF: @_ZTSPKi = constant
|
||||
// FUND-HID: @_ZTIi = hidden constant
|
||||
// FUND-HID: @_ZTSPi = hidden constant
|
||||
// FUND-HID: @_ZTSi = hidden constant
|
||||
// FUND-HID: @_ZTIPi = hidden constant
|
||||
// FUND-HID: @_ZTSPKi = hidden constant
|
||||
// FUND-HID: @_ZTSPi = hidden constant
|
||||
// FUND-HID: @_ZTIPKi = hidden constant
|
||||
// FUND-EXP: @_ZTSi = dllexport constant
|
||||
// FUND-HID: @_ZTSPKi = hidden constant
|
||||
// FUND-EXP: @_ZTIi = dllexport constant
|
||||
// FUND-EXP: @_ZTSPi = dllexport constant
|
||||
// FUND-EXP: @_ZTSi = dllexport constant
|
||||
// FUND-EXP: @_ZTIPi = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKi = dllexport constant
|
||||
// FUND-EXP: @_ZTSPi = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKi = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKi = dllexport constant
|
||||
|
||||
// unsigned int
|
||||
// FUND-DEF: @_ZTSj = constant
|
||||
// FUND-DEF: @_ZTIj = constant
|
||||
// FUND-DEF: @_ZTSPj = constant
|
||||
// FUND-DEF: @_ZTSj = constant
|
||||
// FUND-DEF: @_ZTIPj = constant
|
||||
// FUND-DEF: @_ZTSPKj = constant
|
||||
// FUND-DEF: @_ZTSPj = constant
|
||||
// FUND-DEF: @_ZTIPKj = constant
|
||||
// FUND-HID: @_ZTSj = hidden constant
|
||||
// FUND-DEF: @_ZTSPKj = constant
|
||||
// FUND-HID: @_ZTIj = hidden constant
|
||||
// FUND-HID: @_ZTSPj = hidden constant
|
||||
// FUND-HID: @_ZTSj = hidden constant
|
||||
// FUND-HID: @_ZTIPj = hidden constant
|
||||
// FUND-HID: @_ZTSPKj = hidden constant
|
||||
// FUND-HID: @_ZTSPj = hidden constant
|
||||
// FUND-HID: @_ZTIPKj = hidden constant
|
||||
// FUND-EXP: @_ZTSj = dllexport constant
|
||||
// FUND-HID: @_ZTSPKj = hidden constant
|
||||
// FUND-EXP: @_ZTIj = dllexport constant
|
||||
// FUND-EXP: @_ZTSPj = dllexport constant
|
||||
// FUND-EXP: @_ZTSj = dllexport constant
|
||||
// FUND-EXP: @_ZTIPj = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKj = dllexport constant
|
||||
// FUND-EXP: @_ZTSPj = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKj = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKj = dllexport constant
|
||||
|
||||
// long
|
||||
// FUND-DEF: @_ZTSl = constant
|
||||
// FUND-DEF: @_ZTIl = constant
|
||||
// FUND-DEF: @_ZTSPl = constant
|
||||
// FUND-DEF: @_ZTSl = constant
|
||||
// FUND-DEF: @_ZTIPl = constant
|
||||
// FUND-DEF: @_ZTSPKl = constant
|
||||
// FUND-DEF: @_ZTSPl = constant
|
||||
// FUND-DEF: @_ZTIPKl = constant
|
||||
// FUND-HID: @_ZTSl = hidden constant
|
||||
// FUND-DEF: @_ZTSPKl = constant
|
||||
// FUND-HID: @_ZTIl = hidden constant
|
||||
// FUND-HID: @_ZTSPl = hidden constant
|
||||
// FUND-HID: @_ZTSl = hidden constant
|
||||
// FUND-HID: @_ZTIPl = hidden constant
|
||||
// FUND-HID: @_ZTSPKl = hidden constant
|
||||
// FUND-HID: @_ZTSPl = hidden constant
|
||||
// FUND-HID: @_ZTIPKl = hidden constant
|
||||
// FUND-EXP: @_ZTSl = dllexport constant
|
||||
// FUND-HID: @_ZTSPKl = hidden constant
|
||||
// FUND-EXP: @_ZTIl = dllexport constant
|
||||
// FUND-EXP: @_ZTSPl = dllexport constant
|
||||
// FUND-EXP: @_ZTSl = dllexport constant
|
||||
// FUND-EXP: @_ZTIPl = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKl = dllexport constant
|
||||
// FUND-EXP: @_ZTSPl = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKl = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKl = dllexport constant
|
||||
|
||||
// unsigned long
|
||||
// FUND-DEF: @_ZTSm = constant
|
||||
// FUND-DEF: @_ZTIm = constant
|
||||
// FUND-DEF: @_ZTSPm = constant
|
||||
// FUND-DEF: @_ZTSm = constant
|
||||
// FUND-DEF: @_ZTIPm = constant
|
||||
// FUND-DEF: @_ZTSPKm = constant
|
||||
// FUND-DEF: @_ZTSPm = constant
|
||||
// FUND-DEF: @_ZTIPKm = constant
|
||||
// FUND-HID: @_ZTSm = hidden constant
|
||||
// FUND-DEF: @_ZTSPKm = constant
|
||||
// FUND-HID: @_ZTIm = hidden constant
|
||||
// FUND-HID: @_ZTSPm = hidden constant
|
||||
// FUND-HID: @_ZTSm = hidden constant
|
||||
// FUND-HID: @_ZTIPm = hidden constant
|
||||
// FUND-HID: @_ZTSPKm = hidden constant
|
||||
// FUND-HID: @_ZTSPm = hidden constant
|
||||
// FUND-HID: @_ZTIPKm = hidden constant
|
||||
// FUND-EXP: @_ZTSm = dllexport constant
|
||||
// FUND-HID: @_ZTSPKm = hidden constant
|
||||
// FUND-EXP: @_ZTIm = dllexport constant
|
||||
// FUND-EXP: @_ZTSPm = dllexport constant
|
||||
// FUND-EXP: @_ZTSm = dllexport constant
|
||||
// FUND-EXP: @_ZTIPm = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKm = dllexport constant
|
||||
// FUND-EXP: @_ZTSPm = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKm = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKm = dllexport constant
|
||||
|
||||
// long long
|
||||
// FUND-DEF: @_ZTSx = constant
|
||||
// FUND-DEF: @_ZTIx = constant
|
||||
// FUND-DEF: @_ZTSPx = constant
|
||||
// FUND-DEF: @_ZTSx = constant
|
||||
// FUND-DEF: @_ZTIPx = constant
|
||||
// FUND-DEF: @_ZTSPKx = constant
|
||||
// FUND-DEF: @_ZTSPx = constant
|
||||
// FUND-DEF: @_ZTIPKx = constant
|
||||
// FUND-HID: @_ZTSx = hidden constant
|
||||
// FUND-DEF: @_ZTSPKx = constant
|
||||
// FUND-HID: @_ZTIx = hidden constant
|
||||
// FUND-HID: @_ZTSPx = hidden constant
|
||||
// FUND-HID: @_ZTSx = hidden constant
|
||||
// FUND-HID: @_ZTIPx = hidden constant
|
||||
// FUND-HID: @_ZTSPKx = hidden constant
|
||||
// FUND-HID: @_ZTSPx = hidden constant
|
||||
// FUND-HID: @_ZTIPKx = hidden constant
|
||||
// FUND-EXP: @_ZTSx = dllexport constant
|
||||
// FUND-HID: @_ZTSPKx = hidden constant
|
||||
// FUND-EXP: @_ZTIx = dllexport constant
|
||||
// FUND-EXP: @_ZTSPx = dllexport constant
|
||||
// FUND-EXP: @_ZTSx = dllexport constant
|
||||
// FUND-EXP: @_ZTIPx = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKx = dllexport constant
|
||||
// FUND-EXP: @_ZTSPx = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKx = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKx = dllexport constant
|
||||
|
||||
// unsigned long long
|
||||
// FUND-DEF: @_ZTSy = constant
|
||||
// FUND-DEF: @_ZTIy = constant
|
||||
// FUND-DEF: @_ZTSPy = constant
|
||||
// FUND-DEF: @_ZTSy = constant
|
||||
// FUND-DEF: @_ZTIPy = constant
|
||||
// FUND-DEF: @_ZTSPKy = constant
|
||||
// FUND-DEF: @_ZTSPy = constant
|
||||
// FUND-DEF: @_ZTIPKy = constant
|
||||
// FUND-HID: @_ZTSy = hidden constant
|
||||
// FUND-DEF: @_ZTSPKy = constant
|
||||
// FUND-HID: @_ZTIy = hidden constant
|
||||
// FUND-HID: @_ZTSPy = hidden constant
|
||||
// FUND-HID: @_ZTSy = hidden constant
|
||||
// FUND-HID: @_ZTIPy = hidden constant
|
||||
// FUND-HID: @_ZTSPKy = hidden constant
|
||||
// FUND-HID: @_ZTSPy = hidden constant
|
||||
// FUND-HID: @_ZTIPKy = hidden constant
|
||||
// FUND-EXP: @_ZTSy = dllexport constant
|
||||
// FUND-HID: @_ZTSPKy = hidden constant
|
||||
// FUND-EXP: @_ZTIy = dllexport constant
|
||||
// FUND-EXP: @_ZTSPy = dllexport constant
|
||||
// FUND-EXP: @_ZTSy = dllexport constant
|
||||
// FUND-EXP: @_ZTIPy = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKy = dllexport constant
|
||||
// FUND-EXP: @_ZTSPy = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKy = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKy = dllexport constant
|
||||
|
||||
// __int128
|
||||
// FUND-DEF: @_ZTSn = constant
|
||||
// FUND-DEF: @_ZTIn = constant
|
||||
// FUND-DEF: @_ZTSPn = constant
|
||||
// FUND-DEF: @_ZTSn = constant
|
||||
// FUND-DEF: @_ZTIPn = constant
|
||||
// FUND-DEF: @_ZTSPKn = constant
|
||||
// FUND-DEF: @_ZTSPn = constant
|
||||
// FUND-DEF: @_ZTIPKn = constant
|
||||
// FUND-HID: @_ZTSn = hidden constant
|
||||
// FUND-DEF: @_ZTSPKn = constant
|
||||
// FUND-HID: @_ZTIn = hidden constant
|
||||
// FUND-HID: @_ZTSPn = hidden constant
|
||||
// FUND-HID: @_ZTSn = hidden constant
|
||||
// FUND-HID: @_ZTIPn = hidden constant
|
||||
// FUND-HID: @_ZTSPKn = hidden constant
|
||||
// FUND-HID: @_ZTSPn = hidden constant
|
||||
// FUND-HID: @_ZTIPKn = hidden constant
|
||||
// FUND-EXP: @_ZTSn = dllexport constant
|
||||
// FUND-HID: @_ZTSPKn = hidden constant
|
||||
// FUND-EXP: @_ZTIn = dllexport constant
|
||||
// FUND-EXP: @_ZTSPn = dllexport constant
|
||||
// FUND-EXP: @_ZTSn = dllexport constant
|
||||
// FUND-EXP: @_ZTIPn = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKn = dllexport constant
|
||||
// FUND-EXP: @_ZTSPn = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKn = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKn = dllexport constant
|
||||
|
||||
// unsigned __int128
|
||||
// FUND-DEF: @_ZTSo = constant
|
||||
// FUND-DEF: @_ZTIo = constant
|
||||
// FUND-DEF: @_ZTSPo = constant
|
||||
// FUND-DEF: @_ZTSo = constant
|
||||
// FUND-DEF: @_ZTIPo = constant
|
||||
// FUND-DEF: @_ZTSPKo = constant
|
||||
// FUND-DEF: @_ZTSPo = constant
|
||||
// FUND-DEF: @_ZTIPKo = constant
|
||||
// FUND-HID: @_ZTSo = hidden constant
|
||||
// FUND-DEF: @_ZTSPKo = constant
|
||||
// FUND-HID: @_ZTIo = hidden constant
|
||||
// FUND-HID: @_ZTSPo = hidden constant
|
||||
// FUND-HID: @_ZTSo = hidden constant
|
||||
// FUND-HID: @_ZTIPo = hidden constant
|
||||
// FUND-HID: @_ZTSPKo = hidden constant
|
||||
// FUND-HID: @_ZTSPo = hidden constant
|
||||
// FUND-HID: @_ZTIPKo = hidden constant
|
||||
// FUND-EXP: @_ZTSo = dllexport constant
|
||||
// FUND-HID: @_ZTSPKo = hidden constant
|
||||
// FUND-EXP: @_ZTIo = dllexport constant
|
||||
// FUND-EXP: @_ZTSPo = dllexport constant
|
||||
// FUND-EXP: @_ZTSo = dllexport constant
|
||||
// FUND-EXP: @_ZTIPo = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKo = dllexport constant
|
||||
// FUND-EXP: @_ZTSPo = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKo = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKo = dllexport constant
|
||||
|
||||
// half
|
||||
// FUND-DEF: @_ZTSDh = constant
|
||||
// FUND-DEF: @_ZTIDh = constant
|
||||
// FUND-DEF: @_ZTSPDh = constant
|
||||
// FUND-DEF: @_ZTSDh = constant
|
||||
// FUND-DEF: @_ZTIPDh = constant
|
||||
// FUND-DEF: @_ZTSPKDh = constant
|
||||
// FUND-DEF: @_ZTSPDh = constant
|
||||
// FUND-DEF: @_ZTIPKDh = constant
|
||||
// FUND-HID: @_ZTSDh = hidden constant
|
||||
// FUND-DEF: @_ZTSPKDh = constant
|
||||
// FUND-HID: @_ZTIDh = hidden constant
|
||||
// FUND-HID: @_ZTSPDh = hidden constant
|
||||
// FUND-HID: @_ZTSDh = hidden constant
|
||||
// FUND-HID: @_ZTIPDh = hidden constant
|
||||
// FUND-HID: @_ZTSPKDh = hidden constant
|
||||
// FUND-HID: @_ZTSPDh = hidden constant
|
||||
// FUND-HID: @_ZTIPKDh = hidden constant
|
||||
// FUND-EXP: @_ZTSDh = dllexport constant
|
||||
// FUND-HID: @_ZTSPKDh = hidden constant
|
||||
// FUND-EXP: @_ZTIDh = dllexport constant
|
||||
// FUND-EXP: @_ZTSPDh = dllexport constant
|
||||
// FUND-EXP: @_ZTSDh = dllexport constant
|
||||
// FUND-EXP: @_ZTIPDh = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKDh = dllexport constant
|
||||
// FUND-EXP: @_ZTSPDh = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKDh = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKDh = dllexport constant
|
||||
|
||||
// float
|
||||
// FUND-DEF: @_ZTSf = constant
|
||||
// FUND-DEF: @_ZTIf = constant
|
||||
// FUND-DEF: @_ZTSPf = constant
|
||||
// FUND-DEF: @_ZTSf = constant
|
||||
// FUND-DEF: @_ZTIPf = constant
|
||||
// FUND-DEF: @_ZTSPKf = constant
|
||||
// FUND-DEF: @_ZTSPf = constant
|
||||
// FUND-DEF: @_ZTIPKf = constant
|
||||
// FUND-HID: @_ZTSf = hidden constant
|
||||
// FUND-DEF: @_ZTSPKf = constant
|
||||
// FUND-HID: @_ZTIf = hidden constant
|
||||
// FUND-HID: @_ZTSPf = hidden constant
|
||||
// FUND-HID: @_ZTSf = hidden constant
|
||||
// FUND-HID: @_ZTIPf = hidden constant
|
||||
// FUND-HID: @_ZTSPKf = hidden constant
|
||||
// FUND-HID: @_ZTSPf = hidden constant
|
||||
// FUND-HID: @_ZTIPKf = hidden constant
|
||||
// FUND-EXP: @_ZTSf = dllexport constant
|
||||
// FUND-HID: @_ZTSPKf = hidden constant
|
||||
// FUND-EXP: @_ZTIf = dllexport constant
|
||||
// FUND-EXP: @_ZTSPf = dllexport constant
|
||||
// FUND-EXP: @_ZTSf = dllexport constant
|
||||
// FUND-EXP: @_ZTIPf = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKf = dllexport constant
|
||||
// FUND-EXP: @_ZTSPf = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKf = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKf = dllexport constant
|
||||
|
||||
// double
|
||||
// FUND-DEF: @_ZTSd = constant
|
||||
// FUND-DEF: @_ZTId = constant
|
||||
// FUND-DEF: @_ZTSPd = constant
|
||||
// FUND-DEF: @_ZTSd = constant
|
||||
// FUND-DEF: @_ZTIPd = constant
|
||||
// FUND-DEF: @_ZTSPKd = constant
|
||||
// FUND-DEF: @_ZTSPd = constant
|
||||
// FUND-DEF: @_ZTIPKd = constant
|
||||
// FUND-HID: @_ZTSd = hidden constant
|
||||
// FUND-DEF: @_ZTSPKd = constant
|
||||
// FUND-HID: @_ZTId = hidden constant
|
||||
// FUND-HID: @_ZTSPd = hidden constant
|
||||
// FUND-HID: @_ZTSd = hidden constant
|
||||
// FUND-HID: @_ZTIPd = hidden constant
|
||||
// FUND-HID: @_ZTSPKd = hidden constant
|
||||
// FUND-HID: @_ZTSPd = hidden constant
|
||||
// FUND-HID: @_ZTIPKd = hidden constant
|
||||
// FUND-EXP: @_ZTSd = dllexport constant
|
||||
// FUND-HID: @_ZTSPKd = hidden constant
|
||||
// FUND-EXP: @_ZTId = dllexport constant
|
||||
// FUND-EXP: @_ZTSPd = dllexport constant
|
||||
// FUND-EXP: @_ZTSd = dllexport constant
|
||||
// FUND-EXP: @_ZTIPd = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKd = dllexport constant
|
||||
// FUND-EXP: @_ZTSPd = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKd = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKd = dllexport constant
|
||||
|
||||
// long double
|
||||
// FUND-DEF: @_ZTSe = constant
|
||||
// FUND-DEF: @_ZTIe = constant
|
||||
// FUND-DEF: @_ZTSPe = constant
|
||||
// FUND-DEF: @_ZTSe = constant
|
||||
// FUND-DEF: @_ZTIPe = constant
|
||||
// FUND-DEF: @_ZTSPKe = constant
|
||||
// FUND-DEF: @_ZTSPe = constant
|
||||
// FUND-DEF: @_ZTIPKe = constant
|
||||
// FUND-HID: @_ZTSe = hidden constant
|
||||
// FUND-DEF: @_ZTSPKe = constant
|
||||
// FUND-HID: @_ZTIe = hidden constant
|
||||
// FUND-HID: @_ZTSPe = hidden constant
|
||||
// FUND-HID: @_ZTSe = hidden constant
|
||||
// FUND-HID: @_ZTIPe = hidden constant
|
||||
// FUND-HID: @_ZTSPKe = hidden constant
|
||||
// FUND-HID: @_ZTSPe = hidden constant
|
||||
// FUND-HID: @_ZTIPKe = hidden constant
|
||||
// FUND-EXP: @_ZTSe = dllexport constant
|
||||
// FUND-HID: @_ZTSPKe = hidden constant
|
||||
// FUND-EXP: @_ZTIe = dllexport constant
|
||||
// FUND-EXP: @_ZTSPe = dllexport constant
|
||||
// FUND-EXP: @_ZTSe = dllexport constant
|
||||
// FUND-EXP: @_ZTIPe = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKe = dllexport constant
|
||||
// FUND-EXP: @_ZTSPe = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKe = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKe = dllexport constant
|
||||
|
||||
// __ieee128
|
||||
// FUND-DEF: @_ZTSu9__ieee128 = constant
|
||||
// FUND-DEF: @_ZTIu9__ieee128 = constant
|
||||
// FUND-DEF: @_ZTSPu9__ieee128 = constant
|
||||
// FUND-DEF: @_ZTSu9__ieee128 = constant
|
||||
// FUND-DEF: @_ZTIPu9__ieee128 = constant
|
||||
// FUND-DEF: @_ZTSPKu9__ieee128 = constant
|
||||
// FUND-DEF: @_ZTSPu9__ieee128 = constant
|
||||
// FUND-DEF: @_ZTIPKu9__ieee128 = constant
|
||||
// FUND-HID: @_ZTSu9__ieee128 = hidden constant
|
||||
// FUND-DEF: @_ZTSPKu9__ieee128 = constant
|
||||
// FUND-HID: @_ZTIu9__ieee128 = hidden constant
|
||||
// FUND-HID: @_ZTSPu9__ieee128 = hidden constant
|
||||
// FUND-HID: @_ZTSu9__ieee128 = hidden constant
|
||||
// FUND-HID: @_ZTIPu9__ieee128 = hidden constant
|
||||
// FUND-HID: @_ZTSPKu9__ieee128 = hidden constant
|
||||
// FUND-HID: @_ZTSPu9__ieee128 = hidden constant
|
||||
// FUND-HID: @_ZTIPKu9__ieee128 = hidden constant
|
||||
// FUND-EXP: @_ZTSu9__ieee128 = dllexport constant
|
||||
// FUND-HID: @_ZTSPKu9__ieee128 = hidden constant
|
||||
// FUND-EXP: @_ZTIu9__ieee128 = dllexport constant
|
||||
// FUND-EXP: @_ZTSPu9__ieee128 = dllexport constant
|
||||
// FUND-EXP: @_ZTSu9__ieee128 = dllexport constant
|
||||
// FUND-EXP: @_ZTIPu9__ieee128 = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKu9__ieee128 = dllexport constant
|
||||
// FUND-EXP: @_ZTSPu9__ieee128 = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKu9__ieee128 = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKu9__ieee128 = dllexport constant
|
||||
|
||||
// char8_t
|
||||
// FUND-DEF: @_ZTSDu = constant
|
||||
// FUND-DEF: @_ZTIDu = constant
|
||||
// FUND-DEF: @_ZTSPDu = constant
|
||||
// FUND-DEF: @_ZTSDu = constant
|
||||
// FUND-DEF: @_ZTIPDu = constant
|
||||
// FUND-DEF: @_ZTSPKDu = constant
|
||||
// FUND-DEF: @_ZTSPDu = constant
|
||||
// FUND-DEF: @_ZTIPKDu = constant
|
||||
// FUND-HID: @_ZTSDu = hidden constant
|
||||
// FUND-DEF: @_ZTSPKDu = constant
|
||||
// FUND-HID: @_ZTIDu = hidden constant
|
||||
// FUND-HID: @_ZTSPDu = hidden constant
|
||||
// FUND-HID: @_ZTSDu = hidden constant
|
||||
// FUND-HID: @_ZTIPDu = hidden constant
|
||||
// FUND-HID: @_ZTSPKDu = hidden constant
|
||||
// FUND-HID: @_ZTSPDu = hidden constant
|
||||
// FUND-HID: @_ZTIPKDu = hidden constant
|
||||
// FUND-EXP: @_ZTSDu = dllexport constant
|
||||
// FUND-HID: @_ZTSPKDu = hidden constant
|
||||
// FUND-EXP: @_ZTIDu = dllexport constant
|
||||
// FUND-EXP: @_ZTSPDu = dllexport constant
|
||||
// FUND-EXP: @_ZTSDu = dllexport constant
|
||||
// FUND-EXP: @_ZTIPDu = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKDu = dllexport constant
|
||||
// FUND-EXP: @_ZTSPDu = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKDu = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKDu = dllexport constant
|
||||
|
||||
// char16_t
|
||||
// FUND-DEF: @_ZTSDs = constant
|
||||
// FUND-DEF: @_ZTIDs = constant
|
||||
// FUND-DEF: @_ZTSPDs = constant
|
||||
// FUND-DEF: @_ZTSDs = constant
|
||||
// FUND-DEF: @_ZTIPDs = constant
|
||||
// FUND-DEF: @_ZTSPKDs = constant
|
||||
// FUND-DEF: @_ZTSPDs = constant
|
||||
// FUND-DEF: @_ZTIPKDs = constant
|
||||
// FUND-HID: @_ZTSDs = hidden constant
|
||||
// FUND-DEF: @_ZTSPKDs = constant
|
||||
// FUND-HID: @_ZTIDs = hidden constant
|
||||
// FUND-HID: @_ZTSPDs = hidden constant
|
||||
// FUND-HID: @_ZTSDs = hidden constant
|
||||
// FUND-HID: @_ZTIPDs = hidden constant
|
||||
// FUND-HID: @_ZTSPKDs = hidden constant
|
||||
// FUND-HID: @_ZTSPDs = hidden constant
|
||||
// FUND-HID: @_ZTIPKDs = hidden constant
|
||||
// FUND-EXP: @_ZTSDs = dllexport constant
|
||||
// FUND-HID: @_ZTSPKDs = hidden constant
|
||||
// FUND-EXP: @_ZTIDs = dllexport constant
|
||||
// FUND-EXP: @_ZTSPDs = dllexport constant
|
||||
// FUND-EXP: @_ZTSDs = dllexport constant
|
||||
// FUND-EXP: @_ZTIPDs = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKDs = dllexport constant
|
||||
// FUND-EXP: @_ZTSPDs = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKDs = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKDs = dllexport constant
|
||||
|
||||
// char32_t
|
||||
// FUND-DEF: @_ZTSDi = constant
|
||||
// FUND-DEF: @_ZTIDi = constant
|
||||
// FUND-DEF: @_ZTSPDi = constant
|
||||
// FUND-DEF: @_ZTSDi = constant
|
||||
// FUND-DEF: @_ZTIPDi = constant
|
||||
// FUND-DEF: @_ZTSPKDi = constant
|
||||
// FUND-DEF: @_ZTSPDi = constant
|
||||
// FUND-DEF: @_ZTIPKDi = constant
|
||||
// FUND-HID: @_ZTSDi = hidden constant
|
||||
// FUND-DEF: @_ZTSPKDi = constant
|
||||
// FUND-HID: @_ZTIDi = hidden constant
|
||||
// FUND-HID: @_ZTSPDi = hidden constant
|
||||
// FUND-HID: @_ZTSDi = hidden constant
|
||||
// FUND-HID: @_ZTIPDi = hidden constant
|
||||
// FUND-HID: @_ZTSPKDi = hidden constant
|
||||
// FUND-HID: @_ZTSPDi = hidden constant
|
||||
// FUND-HID: @_ZTIPKDi = hidden constant
|
||||
// FUND-EXP: @_ZTSDi = dllexport constant
|
||||
// FUND-HID: @_ZTSPKDi = hidden constant
|
||||
// FUND-EXP: @_ZTIDi = dllexport constant
|
||||
// FUND-EXP: @_ZTSPDi = dllexport constant
|
||||
// FUND-EXP: @_ZTSDi = dllexport constant
|
||||
// FUND-EXP: @_ZTIPDi = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKDi = dllexport constant
|
||||
// FUND-EXP: @_ZTSPDi = dllexport constant
|
||||
// FUND-EXP: @_ZTIPKDi = dllexport constant
|
||||
// FUND-EXP: @_ZTSPKDi = dllexport constant
|
||||
|
||||
@@ -40,13 +40,13 @@ inline
|
||||
Base::~Base() {}
|
||||
|
||||
// CHECK: @_ZTVW3Mod4Base = unnamed_addr constant
|
||||
// CHECK: @_ZTSW3Mod4Base = constant
|
||||
// CHECK: @_ZTIW3Mod4Base = constant
|
||||
// CHECK: @_ZTSW3Mod4Base = constant
|
||||
|
||||
// With the new Itanium C++ ABI, the linkage of vtables in modules don't need to be linkonce ODR.
|
||||
// CHECK-INLINE: @_ZTVW3Mod4Base = {{.*}}unnamed_addr constant
|
||||
// CHECK-INLINE: @_ZTSW3Mod4Base = {{.*}}constant
|
||||
// CHECK-INLINE: @_ZTIW3Mod4Base = {{.*}}constant
|
||||
// CHECK-INLINE: @_ZTSW3Mod4Base = {{.*}}constant
|
||||
|
||||
module :private;
|
||||
int private_use() {
|
||||
@@ -61,12 +61,12 @@ int use() {
|
||||
return 43;
|
||||
}
|
||||
|
||||
// CHECK-NOT: @_ZTSW3Mod4Base
|
||||
// CHECK-NOT: @_ZTIW3Mod4Base
|
||||
// CHECK-NOT: @_ZTSW3Mod4Base
|
||||
// CHECK: @_ZTVW3Mod4Base = external
|
||||
|
||||
// CHECK-INLINE-NOT: @_ZTSW3Mod4Base
|
||||
// CHECK-INLINE-NOT: @_ZTIW3Mod4Base
|
||||
// CHECK-INLINE-NOT: @_ZTSW3Mod4Base
|
||||
// CHECK-INLINE: @_ZTVW3Mod4Base = external
|
||||
|
||||
// Check the case that the declaration of the key function comes from another
|
||||
@@ -86,8 +86,8 @@ int a_use() {
|
||||
}
|
||||
|
||||
// CHECK: @_ZTVW1M1C = unnamed_addr constant
|
||||
// CHECK: @_ZTSW1M1C = constant
|
||||
// CHECK: @_ZTIW1M1C = constant
|
||||
// CHECK: @_ZTSW1M1C = constant
|
||||
|
||||
//--- M-B.cppm
|
||||
export module M:B;
|
||||
@@ -101,5 +101,5 @@ int b_use() {
|
||||
}
|
||||
|
||||
// CHECK: @_ZTVW1M1C = external
|
||||
// CHECK-NOT: @_ZTSW1M1C
|
||||
// CHECK-NOT: @_ZTIW1M1C
|
||||
// CHECK-NOT: @_ZTSW1M1C
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
|
||||
struct A { int a; };
|
||||
|
||||
// DARWIN: @_ZTI1A = linkonce_odr hidden constant { ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), i32 2), ptr inttoptr (i64 add (i64 ptrtoint (ptr @_ZTS1A to i64), i64 -9223372036854775808) to ptr) }
|
||||
// DARWIN: @_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr]
|
||||
// DARWIN: @_ZTS1A = linkonce_odr hidden constant [3 x i8] c"1A\00"
|
||||
// DARWIN: @_ZTI1A = linkonce_odr hidden constant { ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), i32 2), ptr inttoptr (i64 add (i64 ptrtoint (ptr @_ZTS1A to i64), i64 -9223372036854775808) to ptr) }
|
||||
|
||||
// ELF: @_ZTI1A = linkonce_odr constant { ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), i32 2), ptr @_ZTS1A }
|
||||
// ELF: @_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr]
|
||||
// ELF: @_ZTS1A = linkonce_odr constant [3 x i8] c"1A\00"
|
||||
// ELF: @_ZTI1A = linkonce_odr constant { ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), i32 2), ptr @_ZTS1A }
|
||||
|
||||
auto ATI = typeid(A);
|
||||
|
||||
@@ -60,12 +60,13 @@ static_assert(__has_feature(ptrauth_type_info_vtable_pointer_discrimination) ==
|
||||
extern "C" int disc_std_type_info = __builtin_ptrauth_string_discriminator("_ZTVSt9type_info");
|
||||
|
||||
// CHECK: @_ZTV10TestStruct = unnamed_addr constant { [4 x ptr] } { [4 x ptr] [ptr null, ptr @_ZTI10TestStruct, ptr ptrauth (ptr @_ZN10TestStructD1Ev, i32 0, i64 52216, ptr getelementptr inbounds ({ [4 x ptr] }, ptr @_ZTV10TestStruct, i32 0, i32 0, i32 2)), ptr ptrauth (ptr @_ZN10TestStructD0Ev, i32 0, i64 39671, ptr getelementptr inbounds ({ [4 x ptr] }, ptr @_ZTV10TestStruct, i32 0, i32 0, i32 3))] }, align 8
|
||||
// CHECK: @_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr]
|
||||
// CHECK: @_ZTS10TestStruct = constant [13 x i8] c"10TestStruct\00", align 1
|
||||
|
||||
// NODISC: @_ZTI10TestStruct = constant { ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), i32 2), ptr @_ZTS10TestStruct }, align 8
|
||||
|
||||
// DISC: @_ZTI10TestStruct = constant { ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), i32 2, i64 [[STDTYPEINFO_DISC]]), ptr @_ZTS10TestStruct }, align 8
|
||||
// DISC: @_ZTI10TestStruct = constant { ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), i32 2, i64 [[STDTYPEINFO_DISC]], ptr @_ZTI10TestStruct), ptr @_ZTS10TestStruct }, align 8
|
||||
|
||||
// CHECK: @_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr]
|
||||
// CHECK: @_ZTS10TestStruct = constant [13 x i8] c"10TestStruct\00", align 1
|
||||
|
||||
struct TestStruct {
|
||||
virtual ~TestStruct();
|
||||
|
||||
@@ -94,30 +94,30 @@
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZN1AD1Ev, i32 0, i64 2043, ptr getelementptr inbounds ({ [7 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 5)),
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZN1AD0Ev, i32 0, i64 63674, ptr getelementptr inbounds ({ [7 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 6))] }, align 8
|
||||
|
||||
// CHECK: @_ZTI1A = constant { ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), i32 2), ptr @_ZTS1A }, align 8
|
||||
|
||||
// CHECK: @_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr]
|
||||
|
||||
// CHECK: @_ZTS1A = constant [3 x i8] c"1A\00", align 1
|
||||
|
||||
// CHECK: @_ZTI1A = constant { ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), i32 2), ptr @_ZTS1A }, align 8
|
||||
// CHECK: @_ZTI1C = constant { ptr, ptr, i32, i32, ptr, i64 } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 2), i32 2), ptr @_ZTS1C, i32 0, i32 1, ptr @_ZTI1B, i64 -6141 }, align 8
|
||||
|
||||
// CHECK: @_ZTVN10__cxxabiv121__vmi_class_type_infoE = external global [0 x ptr]
|
||||
|
||||
// CHECK: @_ZTS1C = constant [3 x i8] c"1C\00", align 1
|
||||
|
||||
// DARWIN: @_ZTI1B = linkonce_odr hidden constant { ptr, ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), i32 2), ptr inttoptr (i64 add (i64 ptrtoint (ptr @_ZTS1B to i64), i64 -9223372036854775808) to ptr), ptr @_ZTI1A }, align 8
|
||||
// ELF: @_ZTI1B = linkonce_odr constant { ptr, ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), i32 2), ptr @_ZTS1B, ptr @_ZTI1A }, comdat, align 8
|
||||
|
||||
// CHECK: @_ZTVN10__cxxabiv120__si_class_type_infoE = external global [0 x ptr]
|
||||
|
||||
// DARWIN: @_ZTS1B = linkonce_odr hidden constant [3 x i8] c"1B\00", align 1
|
||||
// ELF: @_ZTS1B = linkonce_odr constant [3 x i8] c"1B\00", comdat, align 1
|
||||
|
||||
// DARWIN: @_ZTI1B = linkonce_odr hidden constant { ptr, ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), i32 2), ptr inttoptr (i64 add (i64 ptrtoint (ptr @_ZTS1B to i64), i64 -9223372036854775808) to ptr), ptr @_ZTI1A }, align 8
|
||||
// ELF: @_ZTI1B = linkonce_odr constant { ptr, ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2), i32 2), ptr @_ZTS1B, ptr @_ZTI1A }, comdat, align 8
|
||||
|
||||
// CHECK: @_ZTI1C = constant { ptr, ptr, i32, i32, ptr, i64 } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 2), i32 2), ptr @_ZTS1C, i32 0, i32 1, ptr @_ZTI1B, i64 -6141 }, align 8
|
||||
// CHECK: @_ZTI1D = constant { ptr, ptr, i32, i32, ptr, i64 } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 2), i32 2), ptr @_ZTS1D, i32 0, i32 1, ptr @_ZTI1B, i64 -6141 }, align 8
|
||||
|
||||
// CHECK: @_ZTS1D = constant [3 x i8] c"1D\00", align 1
|
||||
|
||||
// CHECK: @_ZTI1D = constant { ptr, ptr, i32, i32, ptr, i64 } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 2), i32 2), ptr @_ZTS1D, i32 0, i32 1, ptr @_ZTI1B, i64 -6141 }, align 8
|
||||
|
||||
// CHECK: @_ZTV1E = unnamed_addr constant { [7 x ptr] } { [7 x ptr] [ptr null, ptr @_ZTI1E,
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZN1E1fEv, i32 0, i64 28408, ptr getelementptr inbounds ({ [7 x ptr] }, ptr @_ZTV1E, i32 0, i32 0, i32 2)),
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZN1E1gEv, i32 0, i64 22926, ptr getelementptr inbounds ({ [7 x ptr] }, ptr @_ZTV1E, i32 0, i32 0, i32 3)),
|
||||
@@ -125,10 +125,10 @@
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZN1ED1Ev, i32 0, i64 5817, ptr getelementptr inbounds ({ [7 x ptr] }, ptr @_ZTV1E, i32 0, i32 0, i32 5)),
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZN1ED0Ev, i32 0, i64 26464, ptr getelementptr inbounds ({ [7 x ptr] }, ptr @_ZTV1E, i32 0, i32 0, i32 6))] }, align 8
|
||||
|
||||
// CHECK: @_ZTS1E = constant [3 x i8] c"1E\00", align 1
|
||||
|
||||
// CHECK: @_ZTI1E = constant { ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), i32 2), ptr @_ZTS1E }, align 8
|
||||
|
||||
// CHECK: @_ZTS1E = constant [3 x i8] c"1E\00", align 1
|
||||
|
||||
// CHECK: @_ZTC1F0_1C = unnamed_addr constant { [5 x ptr], [11 x ptr] } { [5 x ptr] [ptr inttoptr (i64 16 to ptr), ptr null, ptr @_ZTI1C,
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZN1CD1Ev, i32 0, i64 31214, ptr getelementptr inbounds ({ [5 x ptr], [11 x ptr] }, ptr @_ZTC1F0_1C, i32 0, i32 0, i32 3)),
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZN1CD0Ev, i32 0, i64 8507, ptr getelementptr inbounds ({ [5 x ptr], [11 x ptr] }, ptr @_ZTC1F0_1C, i32 0, i32 0, i32 4))], [11 x ptr] [ptr inttoptr (i64 -16 to ptr), ptr null, ptr null, ptr null, ptr inttoptr (i64 -16 to ptr), ptr @_ZTI1C,
|
||||
@@ -149,10 +149,10 @@
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZTv0_n48_N1DD1Ev, i32 0, i64 2043, ptr getelementptr inbounds ({ [7 x ptr], [11 x ptr] }, ptr @_ZTC1F8_1D, i32 0, i32 1, i32 9)),
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZTv0_n48_N1DD0Ev, i32 0, i64 63674, ptr getelementptr inbounds ({ [7 x ptr], [11 x ptr] }, ptr @_ZTC1F8_1D, i32 0, i32 1, i32 10))] }, align 8
|
||||
|
||||
// CHECK: @_ZTS1F = constant [3 x i8] c"1F\00", align 1
|
||||
|
||||
// CHECK: @_ZTI1F = constant { ptr, ptr, i32, i32, ptr, i64, ptr, i64, ptr, i64 } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 2), i32 2), ptr @_ZTS1F, i32 3, i32 3, ptr @_ZTI1C, i64 2, ptr @_ZTI1D, i64 2050, ptr @_ZTI1E, i64 -8189 }, align 8
|
||||
|
||||
// CHECK: @_ZTS1F = constant [3 x i8] c"1F\00", align 1
|
||||
|
||||
// CHECK: @_ZTC1G0_1C = unnamed_addr constant { [5 x ptr], [11 x ptr] } { [5 x ptr] [ptr inttoptr (i64 24 to ptr), ptr null, ptr @_ZTI1C,
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZN1CD1Ev, i32 0, i64 31214, ptr getelementptr inbounds ({ [5 x ptr], [11 x ptr] }, ptr @_ZTC1G0_1C, i32 0, i32 0, i32 3)),
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZN1CD0Ev, i32 0, i64 8507, ptr getelementptr inbounds ({ [5 x ptr], [11 x ptr] }, ptr @_ZTC1G0_1C, i32 0, i32 0, i32 4))], [11 x ptr] [ptr inttoptr (i64 -24 to ptr), ptr null, ptr null, ptr null, ptr inttoptr (i64 -24 to ptr), ptr @_ZTI1C,
|
||||
@@ -173,10 +173,10 @@
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZTv0_n48_N1DD1Ev, i32 0, i64 2043, ptr getelementptr inbounds ({ [7 x ptr], [11 x ptr] }, ptr @_ZTC1G8_1D, i32 0, i32 1, i32 9)),
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZTv0_n48_N1DD0Ev, i32 0, i64 63674, ptr getelementptr inbounds ({ [7 x ptr], [11 x ptr] }, ptr @_ZTC1G8_1D, i32 0, i32 1, i32 10))] }, align 8
|
||||
|
||||
// CHECK: @_ZTS1G = constant [3 x i8] c"1G\00", align 1
|
||||
|
||||
// CHECK: @_ZTI1G = constant { ptr, ptr, i32, i32, ptr, i64, ptr, i64, ptr, i64 } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 2), i32 2), ptr @_ZTS1G, i32 3, i32 3, ptr @_ZTI1E, i64 -8189, ptr @_ZTI1C, i64 2, ptr @_ZTI1D, i64 2050 }, align 8
|
||||
|
||||
// CHECK: @_ZTS1G = constant [3 x i8] c"1G\00", align 1
|
||||
|
||||
// CHECK: @_ZTV1B = linkonce_odr unnamed_addr constant { [7 x ptr] } { [7 x ptr] [ptr null, ptr @_ZTI1B,
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZN1A1fEv, i32 0, i64 55636, ptr getelementptr inbounds ({ [7 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 2)),
|
||||
// CHECK-SAME: ptr ptrauth (ptr @_ZN1A1gEv, i32 0, i64 19402, ptr getelementptr inbounds ({ [7 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 3)),
|
||||
|
||||
@@ -3,73 +3,73 @@
|
||||
|
||||
#include <typeinfo>
|
||||
|
||||
// CHECK-BOTH: _ZTSP1C = internal constant
|
||||
// CHECK-BOTH: _ZTS1C = internal constant
|
||||
// CHECK-BOTH: _ZTI1C = internal constant
|
||||
// CHECK-BOTH: _ZTIP1C = internal constant
|
||||
// CHECK-BOTH: _ZTSPP1C = internal constant
|
||||
// CHECK-BOTH: _ZTSP1C = internal constant
|
||||
// CHECK-BOTH: _ZTI1C = internal constant
|
||||
// CHECK-BOTH: _ZTS1C = internal constant
|
||||
// CHECK-BOTH: _ZTIPP1C = internal constant
|
||||
// CHECK-BOTH: _ZTSM1Ci = internal constant
|
||||
// CHECK-BOTH: _ZTSPP1C = internal constant
|
||||
// CHECK-BOTH: _ZTIM1Ci = internal constant
|
||||
// CHECK-BOTH: _ZTSPM1Ci = internal constant
|
||||
// CHECK-BOTH: _ZTSM1Ci = internal constant
|
||||
// CHECK-BOTH: _ZTIPM1Ci = internal constant
|
||||
// CHECK-BOTH: _ZTSM1CS_ = internal constant
|
||||
// CHECK-BOTH: _ZTSPM1Ci = internal constant
|
||||
// CHECK-BOTH: _ZTIM1CS_ = internal constant
|
||||
// CHECK-BOTH: _ZTSM1CPS_ = internal constant
|
||||
// CHECK-BOTH: _ZTSM1CS_ = internal constant
|
||||
// CHECK-BOTH: _ZTIM1CPS_ = internal constant
|
||||
// CHECK-BOTH: _ZTSM1CPS_ = internal constant
|
||||
// CHECK-BOTH: _ZTIM1A1C = internal constant
|
||||
// CHECK-BOTH: _ZTSM1A1C = internal constant
|
||||
// CHECK: _ZTS1A = linkonce_odr constant
|
||||
// CHECK-WITH-HIDDEN: _ZTS1A = linkonce_odr hidden constant
|
||||
// CHECK: _ZTI1A = linkonce_odr constant
|
||||
// CHECK-WITH-HIDDEN: _ZTI1A = linkonce_odr hidden constant
|
||||
// CHECK-BOTH: _ZTIM1A1C = internal constant
|
||||
// CHECK-BOTH: _ZTSM1AP1C = internal constant
|
||||
// CHECK: _ZTS1A = linkonce_odr constant
|
||||
// CHECK-WITH-HIDDEN: _ZTS1A = linkonce_odr hidden constant
|
||||
// CHECK-BOTH: _ZTIM1AP1C = internal constant
|
||||
// CHECK-BOTH: _ZTSM1AP1C = internal constant
|
||||
|
||||
// CHECK-WITH-HIDDEN: _ZTSFN12_GLOBAL__N_11DEvE = internal constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTSPK2T4 = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTS2T4 = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTI2T4 = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTIPK2T4 = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTSZ2t5vE1A = internal constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTIPK2T4 = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTSPK2T4 = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTI2T4 = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTS2T4 = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTIZ2t5vE1A = internal constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTSZ2t6vE1A = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTSZ2t5vE1A = internal constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTIZ2t6vE1A = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTSPZ2t7vE1A = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTSZ2t7vE1A = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTIZ2t7vE1A = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTSZ2t6vE1A = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTIPZ2t7vE1A = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTSPZ2t7vE1A = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTIZ2t7vE1A = linkonce_odr hidden constant
|
||||
// CHECK-WITH-HIDDEN: @_ZTSZ2t7vE1A = linkonce_odr hidden constant
|
||||
|
||||
// CHECK: _ZTSN12_GLOBAL__N_11DE = internal constant
|
||||
// CHECK: _ZTIN12_GLOBAL__N_11DE = internal constant
|
||||
// CHECK: _ZTSPN12_GLOBAL__N_11DE = internal constant
|
||||
// CHECK: _ZTSN12_GLOBAL__N_11DE = internal constant
|
||||
// CHECK: _ZTIPN12_GLOBAL__N_11DE = internal constant
|
||||
// CHECK: _ZTSFN12_GLOBAL__N_11DEvE = internal constant
|
||||
// CHECK: _ZTSPN12_GLOBAL__N_11DE = internal constant
|
||||
// CHECK: _ZTIFN12_GLOBAL__N_11DEvE = internal constant
|
||||
// CHECK: _ZTSFvN12_GLOBAL__N_11DEE = internal constant
|
||||
// CHECK: _ZTSFN12_GLOBAL__N_11DEvE = internal constant
|
||||
// CHECK: _ZTIFvN12_GLOBAL__N_11DEE = internal constant
|
||||
// CHECK: _ZTSPFvvE = linkonce_odr constant
|
||||
// CHECK: _ZTSFvvE = linkonce_odr constant
|
||||
// CHECK: _ZTIFvvE = linkonce_odr constant
|
||||
// CHECK: _ZTSFvN12_GLOBAL__N_11DEE = internal constant
|
||||
// CHECK: _ZTIPFvvE = linkonce_odr constant
|
||||
// CHECK: _ZTSN12_GLOBAL__N_11EE = internal constant
|
||||
// CHECK: _ZTSPFvvE = linkonce_odr constant
|
||||
// CHECK: _ZTIFvvE = linkonce_odr constant
|
||||
// CHECK: _ZTSFvvE = linkonce_odr constant
|
||||
// CHECK: _ZTIN12_GLOBAL__N_11EE = internal constant
|
||||
// CHECK: _ZTSA10_i = linkonce_odr constant
|
||||
// CHECK: _ZTSN12_GLOBAL__N_11EE = internal constant
|
||||
// CHECK: _ZTIA10_i = linkonce_odr constant
|
||||
// CHECK: _ZTSA10_i = linkonce_odr constant
|
||||
// CHECK: _ZTI1TILj0EE = linkonce_odr constant
|
||||
// CHECK: _ZTI1TILj1EE = weak_odr constant
|
||||
// CHECK: _ZTI1TILj2EE = external constant
|
||||
// CHECK: _ZTSZ2t5vE1A = internal constant
|
||||
// CHECK: _ZTIZ2t5vE1A = internal constant
|
||||
// CHECK: _ZTS1B ={{.*}} constant
|
||||
// CHECK: _ZTSZ2t5vE1A = internal constant
|
||||
// CHECK: _ZTI1B ={{.*}} constant
|
||||
// CHECK: _ZTS1B ={{.*}} constant
|
||||
// CHECK: _ZTS1F = linkonce_odr constant
|
||||
// CHECK: _ZTSZ2t6vE1A = linkonce_odr constant
|
||||
// CHECK: _ZTIZ2t6vE1A = linkonce_odr constant
|
||||
// CHECK: _ZTSPZ2t7vE1A = linkonce_odr constant
|
||||
// CHECK: _ZTSZ2t7vE1A = linkonce_odr constant
|
||||
// CHECK: _ZTIZ2t7vE1A = linkonce_odr constant
|
||||
// CHECK: _ZTSZ2t6vE1A = linkonce_odr constant
|
||||
// CHECK: _ZTIPZ2t7vE1A = linkonce_odr constant
|
||||
// CHECK: _ZTSPZ2t7vE1A = linkonce_odr constant
|
||||
// CHECK: _ZTIZ2t7vE1A = linkonce_odr constant
|
||||
// CHECK: _ZTSZ2t7vE1A = linkonce_odr constant
|
||||
|
||||
// CHECK: _ZTIN12_GLOBAL__N_11DE
|
||||
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
|
||||
namespace Test1 {
|
||||
// A is explicitly marked hidden, so all RTTI data should also be marked hidden.
|
||||
// CHECK-TEST1: @_ZTSN5Test11AE = linkonce_odr hidden constant
|
||||
// CHECK-TEST1: @_ZTIN5Test11AE = linkonce_odr hidden constant
|
||||
// CHECK-TEST1: @_ZTSPN5Test11AE = linkonce_odr hidden constant
|
||||
// CHECK-TEST1: @_ZTSN5Test11AE = linkonce_odr hidden constant
|
||||
// CHECK-TEST1: @_ZTIPN5Test11AE = linkonce_odr hidden constant
|
||||
// CHECK-TEST1: @_ZTSPN5Test11AE = linkonce_odr hidden constant
|
||||
struct __attribute__((visibility("hidden"))) A { };
|
||||
|
||||
void f() {
|
||||
@@ -20,8 +20,8 @@ namespace Test1 {
|
||||
|
||||
namespace Test2 {
|
||||
// A is weak, so its linkage should be linkoce_odr, but not marked hidden.
|
||||
// CHECK-TEST2: @_ZTSN5Test21AE = linkonce_odr constant
|
||||
// CHECK-TEST2: @_ZTIN5Test21AE = linkonce_odr constant
|
||||
// CHECK-TEST2: @_ZTSN5Test21AE = linkonce_odr constant
|
||||
struct A { };
|
||||
void f() {
|
||||
(void)typeid(A);
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
// CHECK: @gv = {{.*}}, partition "foo"
|
||||
// CHECK: @_ZTV1S = {{.*}}, partition "foo"
|
||||
// CHECK: @_ZTS1S = {{.*}}, partition "foo"
|
||||
// CHECK: @_ZTI1S = {{.*}}, partition "foo"
|
||||
// CHECK: @_ZTS1S = {{.*}}, partition "foo"
|
||||
|
||||
// CHECK: @_Z5ifuncv = {{.*}}, partition "foo"
|
||||
|
||||
|
||||
@@ -26,12 +26,12 @@ namespace temp0 {
|
||||
template struct B<A>;
|
||||
// FUNS-LABEL: define weak_odr void @_ZN5temp01BINS_1AEE3fooEv(
|
||||
// VARS: @_ZTVN5temp01BINS_1AEEE = weak_odr unnamed_addr constant
|
||||
// VARS: @_ZTSN5temp01BINS_1AEEE = weak_odr constant
|
||||
// VARS: @_ZTIN5temp01BINS_1AEEE = weak_odr constant
|
||||
// VARS: @_ZTSN5temp01BINS_1AEEE = weak_odr constant
|
||||
// FUNS-HIDDEN-LABEL: define weak_odr hidden void @_ZN5temp01BINS_1AEE3fooEv(
|
||||
// VARS-HIDDEN: @_ZTVN5temp01BINS_1AEEE = weak_odr hidden unnamed_addr constant
|
||||
// VARS-HIDDEN: @_ZTSN5temp01BINS_1AEEE = weak_odr hidden constant
|
||||
// VARS-HIDDEN: @_ZTIN5temp01BINS_1AEEE = weak_odr hidden constant
|
||||
// VARS-HIDDEN: @_ZTSN5temp01BINS_1AEEE = weak_odr hidden constant
|
||||
}
|
||||
|
||||
namespace temp1 {
|
||||
@@ -43,12 +43,12 @@ namespace temp1 {
|
||||
template struct B<A>;
|
||||
// FUNS-LABEL: define weak_odr void @_ZN5temp11BINS_1AEE3fooEv(
|
||||
// VARS: @_ZTVN5temp11BINS_1AEEE = weak_odr unnamed_addr constant
|
||||
// VARS: @_ZTSN5temp11BINS_1AEEE = weak_odr constant
|
||||
// VARS: @_ZTIN5temp11BINS_1AEEE = weak_odr constant
|
||||
// VARS: @_ZTSN5temp11BINS_1AEEE = weak_odr constant
|
||||
// FUNS-HIDDEN-LABEL: define weak_odr hidden void @_ZN5temp11BINS_1AEE3fooEv(
|
||||
// VARS-HIDDEN: @_ZTVN5temp11BINS_1AEEE = weak_odr unnamed_addr constant
|
||||
// VARS-HIDDEN: @_ZTSN5temp11BINS_1AEEE = weak_odr constant
|
||||
// VARS-HIDDEN: @_ZTIN5temp11BINS_1AEEE = weak_odr constant
|
||||
// VARS-HIDDEN: @_ZTSN5temp11BINS_1AEEE = weak_odr constant
|
||||
}
|
||||
|
||||
namespace temp2 {
|
||||
@@ -60,12 +60,12 @@ namespace temp2 {
|
||||
template struct B<A>;
|
||||
// FUNS-LABEL: define weak_odr void @_ZN5temp21BINS_1AEE3fooEv(
|
||||
// VARS: @_ZTVN5temp21BINS_1AEEE = weak_odr unnamed_addr constant
|
||||
// VARS: @_ZTSN5temp21BINS_1AEEE = weak_odr constant
|
||||
// VARS: @_ZTIN5temp21BINS_1AEEE = weak_odr constant
|
||||
// VARS: @_ZTSN5temp21BINS_1AEEE = weak_odr constant
|
||||
// FUNS-HIDDEN-LABEL: define weak_odr hidden void @_ZN5temp21BINS_1AEE3fooEv(
|
||||
// VARS-HIDDEN: @_ZTVN5temp21BINS_1AEEE = weak_odr hidden unnamed_addr constant
|
||||
// VARS-HIDDEN: @_ZTSN5temp21BINS_1AEEE = weak_odr hidden constant
|
||||
// VARS-HIDDEN: @_ZTIN5temp21BINS_1AEEE = weak_odr hidden constant
|
||||
// VARS-HIDDEN: @_ZTSN5temp21BINS_1AEEE = weak_odr hidden constant
|
||||
}
|
||||
|
||||
namespace temp3 {
|
||||
@@ -77,12 +77,12 @@ namespace temp3 {
|
||||
template struct B<A>;
|
||||
// FUNS-LABEL: define weak_odr hidden void @_ZN5temp31BINS_1AEE3fooEv(
|
||||
// VARS: @_ZTVN5temp31BINS_1AEEE = weak_odr hidden unnamed_addr constant
|
||||
// VARS: @_ZTSN5temp31BINS_1AEEE = weak_odr hidden constant
|
||||
// VARS: @_ZTIN5temp31BINS_1AEEE = weak_odr hidden constant
|
||||
// VARS: @_ZTSN5temp31BINS_1AEEE = weak_odr hidden constant
|
||||
// FUNS-HIDDEN-LABEL: define weak_odr hidden void @_ZN5temp31BINS_1AEE3fooEv(
|
||||
// VARS-HIDDEN: @_ZTVN5temp31BINS_1AEEE = weak_odr hidden unnamed_addr constant
|
||||
// VARS-HIDDEN: @_ZTSN5temp31BINS_1AEEE = weak_odr hidden constant
|
||||
// VARS-HIDDEN: @_ZTIN5temp31BINS_1AEEE = weak_odr hidden constant
|
||||
// VARS-HIDDEN: @_ZTSN5temp31BINS_1AEEE = weak_odr hidden constant
|
||||
}
|
||||
|
||||
namespace temp4 {
|
||||
@@ -94,12 +94,12 @@ namespace temp4 {
|
||||
template struct B<A>;
|
||||
// FUNS-LABEL: define weak_odr void @_ZN5temp41BINS_1AEE3fooEv(
|
||||
// VARS: @_ZTVN5temp41BINS_1AEEE = weak_odr hidden unnamed_addr constant
|
||||
// VARS: @_ZTSN5temp41BINS_1AEEE = weak_odr hidden constant
|
||||
// VARS: @_ZTIN5temp41BINS_1AEEE = weak_odr hidden constant
|
||||
// VARS: @_ZTSN5temp41BINS_1AEEE = weak_odr hidden constant
|
||||
// FUNS-HIDDEN-LABEL: define weak_odr hidden void @_ZN5temp41BINS_1AEE3fooEv(
|
||||
// VARS-HIDDEN: @_ZTVN5temp41BINS_1AEEE = weak_odr hidden unnamed_addr constant
|
||||
// VARS-HIDDEN: @_ZTSN5temp41BINS_1AEEE = weak_odr hidden constant
|
||||
// VARS-HIDDEN: @_ZTIN5temp41BINS_1AEEE = weak_odr hidden constant
|
||||
// VARS-HIDDEN: @_ZTSN5temp41BINS_1AEEE = weak_odr hidden constant
|
||||
}
|
||||
|
||||
namespace type0 {
|
||||
@@ -110,12 +110,12 @@ namespace type0 {
|
||||
void A::foo() {}
|
||||
// FUNS-LABEL: define void @_ZN5type01A3fooEv(
|
||||
// VARS: @_ZTVN5type01AE = unnamed_addr constant
|
||||
// VARS: @_ZTSN5type01AE = constant
|
||||
// VARS: @_ZTIN5type01AE = constant
|
||||
// VARS: @_ZTSN5type01AE = constant
|
||||
// FUNS-HIDDEN-LABEL: define hidden void @_ZN5type01A3fooEv(
|
||||
// VARS-HIDDEN: @_ZTVN5type01AE = unnamed_addr constant
|
||||
// VARS-HIDDEN: @_ZTSN5type01AE = constant
|
||||
// VARS-HIDDEN: @_ZTIN5type01AE = constant
|
||||
// VARS-HIDDEN: @_ZTSN5type01AE = constant
|
||||
}
|
||||
|
||||
namespace type1 {
|
||||
@@ -126,12 +126,12 @@ namespace type1 {
|
||||
void A::foo() {}
|
||||
// FUNS-LABEL: define hidden void @_ZN5type11A3fooEv(
|
||||
// VARS: @_ZTVN5type11AE = unnamed_addr constant
|
||||
// VARS: @_ZTSN5type11AE = constant
|
||||
// VARS: @_ZTIN5type11AE = constant
|
||||
// VARS: @_ZTSN5type11AE = constant
|
||||
// FUNS-HIDDEN-LABEL: define hidden void @_ZN5type11A3fooEv(
|
||||
// VARS-HIDDEN: @_ZTVN5type11AE = unnamed_addr constant
|
||||
// VARS-HIDDEN: @_ZTSN5type11AE = constant
|
||||
// VARS-HIDDEN: @_ZTIN5type11AE = constant
|
||||
// VARS-HIDDEN: @_ZTSN5type11AE = constant
|
||||
}
|
||||
|
||||
namespace type2 {
|
||||
@@ -142,12 +142,12 @@ namespace type2 {
|
||||
void A::foo() {}
|
||||
// FUNS-LABEL: define void @_ZN5type21A3fooEv(
|
||||
// VARS: @_ZTVN5type21AE = hidden unnamed_addr constant
|
||||
// VARS: @_ZTSN5type21AE = hidden constant
|
||||
// VARS: @_ZTIN5type21AE = hidden constant
|
||||
// VARS: @_ZTSN5type21AE = hidden constant
|
||||
// FUNS-HIDDEN-LABEL: define hidden void @_ZN5type21A3fooEv(
|
||||
// VARS-HIDDEN: @_ZTVN5type21AE = hidden unnamed_addr constant
|
||||
// VARS-HIDDEN: @_ZTSN5type21AE = hidden constant
|
||||
// VARS-HIDDEN: @_ZTIN5type21AE = hidden constant
|
||||
// VARS-HIDDEN: @_ZTSN5type21AE = hidden constant
|
||||
}
|
||||
|
||||
namespace type3 {
|
||||
@@ -158,11 +158,11 @@ namespace type3 {
|
||||
void A::foo() {}
|
||||
// FUNS-LABEL: define void @_ZN5type31A3fooEv(
|
||||
// VARS: @_ZTVN5type31AE = hidden unnamed_addr constant
|
||||
// VARS: @_ZTSN5type31AE = hidden constant
|
||||
// VARS: @_ZTIN5type31AE = hidden constant
|
||||
// VARS: @_ZTSN5type31AE = hidden constant
|
||||
// FUNS-HIDDEN-LABEL: define void @_ZN5type31A3fooEv(
|
||||
// VARS-HIDDEN: @_ZTVN5type31AE = hidden unnamed_addr constant
|
||||
// VARS-HIDDEN: @_ZTSN5type31AE = hidden constant
|
||||
// VARS-HIDDEN: @_ZTIN5type31AE = hidden constant
|
||||
// VARS-HIDDEN: @_ZTSN5type31AE = hidden constant
|
||||
}
|
||||
|
||||
|
||||
@@ -15,12 +15,12 @@ class B : A {
|
||||
// NO-AS: @_ZTISt9type_info = external constant ptr
|
||||
// AS: @_ZTIi = external addrspace(1) constant ptr addrspace(1)
|
||||
// NO-AS: @_ZTIi = external constant ptr
|
||||
// AS: @_ZTI1A = linkonce_odr addrspace(1) constant { ptr addrspace(1), ptr addrspace(1) } { ptr addrspace(1) getelementptr inbounds (ptr addrspace(1), ptr addrspace(1) @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr addrspace(1) @_ZTS1A }, comdat, align 8
|
||||
// NO-AS: @_ZTI1A = linkonce_odr constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8
|
||||
// AS: @_ZTVN10__cxxabiv117__class_type_infoE = external addrspace(1) global [0 x ptr addrspace(1)]
|
||||
// NO-AS: @_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr]
|
||||
// AS: @_ZTS1A = linkonce_odr addrspace(1) constant [3 x i8] c"1A\00", comdat, align 1
|
||||
// NO-AS: @_ZTS1A = linkonce_odr constant [3 x i8] c"1A\00", comdat, align 1
|
||||
// AS: @_ZTI1A = linkonce_odr addrspace(1) constant { ptr addrspace(1), ptr addrspace(1) } { ptr addrspace(1) getelementptr inbounds (ptr addrspace(1), ptr addrspace(1) @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr addrspace(1) @_ZTS1A }, comdat, align 8
|
||||
// NO-AS: @_ZTI1A = linkonce_odr constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat, align 8
|
||||
// AS: @_ZTIf = external addrspace(1) constant ptr addrspace(1)
|
||||
// NO-AS: @_ZTIf = external constant ptr
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@ namespace test0 {
|
||||
// CHECK: declare void @_ZN5test01A3barEv()
|
||||
|
||||
const std::type_info &ti = typeid(A);
|
||||
// CHECK-GLOBAL: @_ZTSN5test01AE = linkonce_odr constant
|
||||
// CHECK-GLOBAL: @_ZTIN5test01AE = linkonce_odr constant
|
||||
// CHECK-GLOBAL: @_ZTSN5test01AE = linkonce_odr constant
|
||||
// CHECK-GLOBAL: @_ZN5test02tiE = hidden constant
|
||||
}
|
||||
|
||||
@@ -40,8 +40,8 @@ namespace test1 {
|
||||
// CHECK: declare hidden void @_ZN5test11A3barEv()
|
||||
|
||||
const std::type_info &ti = typeid(A);
|
||||
// CHECK-GLOBAL: @_ZTSN5test11AE = linkonce_odr hidden constant
|
||||
// CHECK-GLOBAL: @_ZTIN5test11AE = linkonce_odr hidden constant
|
||||
// CHECK-GLOBAL: @_ZTSN5test11AE = linkonce_odr hidden constant
|
||||
// CHECK-GLOBAL: @_ZN5test12tiE = hidden constant
|
||||
}
|
||||
|
||||
@@ -56,8 +56,8 @@ namespace test2 {
|
||||
// CHECK: declare void @_ZN5test21A3barEv()
|
||||
|
||||
const std::type_info &ti = typeid(A);
|
||||
// CHECK-GLOBAL: @_ZTSN5test21AE = linkonce_odr constant
|
||||
// CHECK-GLOBAL: @_ZTIN5test21AE = linkonce_odr constant
|
||||
// CHECK-GLOBAL: @_ZTSN5test21AE = linkonce_odr constant
|
||||
// CHECK-GLOBAL: @_ZN5test22tiE = hidden constant
|
||||
}
|
||||
|
||||
@@ -73,8 +73,8 @@ namespace test3 {
|
||||
// CHECK: declare void @_ZN5test31BINS_1AEE3barEv()
|
||||
|
||||
const std::type_info &ti = typeid(B<A>);
|
||||
// CHECK-GLOBAL: @_ZTSN5test31BINS_1AEEE = linkonce_odr constant
|
||||
// CHECK-GLOBAL: @_ZTIN5test31BINS_1AEEE = linkonce_odr constant
|
||||
// CHECK-GLOBAL: @_ZTSN5test31BINS_1AEEE = linkonce_odr constant
|
||||
}
|
||||
|
||||
namespace test4 {
|
||||
@@ -89,8 +89,8 @@ namespace test4 {
|
||||
// CHECK: declare void @_ZN5test41BINS_1AEE3barEv()
|
||||
|
||||
const std::type_info &ti = typeid(B<A>);
|
||||
// CHECK-GLOBAL: @_ZTSN5test41BINS_1AEEE = linkonce_odr constant
|
||||
// CHECK-GLOBAL: @_ZTIN5test41BINS_1AEEE = linkonce_odr constant
|
||||
// CHECK-GLOBAL: @_ZTSN5test41BINS_1AEEE = linkonce_odr constant
|
||||
}
|
||||
|
||||
namespace test5 {
|
||||
@@ -105,6 +105,6 @@ namespace test5 {
|
||||
// CHECK: declare hidden void @_ZN5test51BINS_1AEE3barEv()
|
||||
|
||||
const std::type_info &ti = typeid(B<A>);
|
||||
// CHECK-GLOBAL: @_ZTSN5test51BINS_1AEEE = linkonce_odr hidden constant
|
||||
// CHECK-GLOBAL: @_ZTIN5test51BINS_1AEEE = linkonce_odr hidden constant
|
||||
// CHECK-GLOBAL: @_ZTSN5test51BINS_1AEEE = linkonce_odr hidden constant
|
||||
}
|
||||
|
||||
@@ -9,5 +9,5 @@ struct A {
|
||||
void A::f() {}
|
||||
|
||||
// CHECK: @_ZTV1A ={{.*}} unnamed_addr addrspace(1) constant { [5 x ptr addrspace(1)] } { [5 x ptr addrspace(1)] [ptr addrspace(1) null, ptr addrspace(1) @_ZTI1A, ptr addrspace(1) addrspacecast (ptr @_ZN1A1fEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN1A1gEv to ptr addrspace(1)), ptr addrspace(1) addrspacecast (ptr @_ZN1A1hEv to ptr addrspace(1))]
|
||||
// CHECK: @_ZTS1A ={{.*}} constant [3 x i8] c"1A\00", align 1
|
||||
// CHECK: @_ZTI1A ={{.*}} addrspace(1) constant { ptr addrspace(1), ptr addrspace(1) } { ptr addrspace(1) getelementptr inbounds (ptr addrspace(1), ptr addrspace(1) @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr addrspace(1) @_ZTS1A }, align 8
|
||||
// CHECK: @_ZTS1A ={{.*}} constant [3 x i8] c"1A\00", align 1
|
||||
|
||||
@@ -10,8 +10,8 @@ struct A {
|
||||
void A::f() {}
|
||||
|
||||
// CHECK-32: @_ZTV1A ={{.*}} unnamed_addr constant { [5 x ptr] } { [5 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEv, ptr @_ZN1A1gEv, ptr @_ZN1A1hEv] }, align 4
|
||||
// CHECK-32: @_ZTS1A ={{.*}} constant [3 x i8] c"1A\00", align 1
|
||||
// CHECK-32: @_ZTI1A ={{.*}} constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i32 2), ptr @_ZTS1A }, align 4
|
||||
// CHECK-32: @_ZTS1A ={{.*}} constant [3 x i8] c"1A\00", align 1
|
||||
// CHECK-64: @_ZTV1A ={{.*}} unnamed_addr constant { [5 x ptr] } { [5 x ptr] [ptr null, ptr @_ZTI1A, ptr @_ZN1A1fEv, ptr @_ZN1A1gEv, ptr @_ZN1A1hEv] }, align 8
|
||||
// CHECK-64: @_ZTS1A ={{.*}} constant [3 x i8] c"1A\00", align 1
|
||||
// CHECK-64: @_ZTI1A ={{.*}} constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, align 8
|
||||
// CHECK-64: @_ZTS1A ={{.*}} constant [3 x i8] c"1A\00", align 1
|
||||
|
||||
@@ -49,8 +49,8 @@ void g() {
|
||||
// This tests mainly that the typeinfo and typename constants have their linkage
|
||||
// updated correctly.
|
||||
|
||||
// CHECK-TEST2: @_ZTSN5Test21AE ={{.*}} constant
|
||||
// CHECK-TEST2: @_ZTIN5Test21AE ={{.*}} constant
|
||||
// CHECK-TEST2: @_ZTSN5Test21AE ={{.*}} constant
|
||||
// CHECK-TEST2: @_ZTVN5Test21AE ={{.*}} unnamed_addr constant
|
||||
namespace Test2 {
|
||||
struct A {
|
||||
|
||||
@@ -90,8 +90,8 @@ struct Test2a {
|
||||
// V-table should be defined with strong linkage.
|
||||
Test2a::Test2a() { use(typeid(Test2a)); }
|
||||
// CHECK: @_ZTV6Test2a ={{.*}} unnamed_addr constant
|
||||
// CHECK-LATE: @_ZTS6Test2a ={{.*}} constant
|
||||
// CHECK-LATE: @_ZTI6Test2a ={{.*}} constant
|
||||
// CHECK-LATE: @_ZTS6Test2a ={{.*}} constant
|
||||
|
||||
// 'bar' becomes the key function when 'foo' is defined inline.
|
||||
void Test2a::bar() {}
|
||||
@@ -111,8 +111,8 @@ void Test2b::bar() {}
|
||||
// V-table should be defined with strong linkage.
|
||||
Test2b::Test2b() { use(typeid(Test2b)); }
|
||||
// CHECK: @_ZTV6Test2b ={{.*}} unnamed_addr constant
|
||||
// CHECK-LATE: @_ZTS6Test2b ={{.*}} constant
|
||||
// CHECK-LATE: @_ZTI6Test2b ={{.*}} constant
|
||||
// CHECK-LATE: @_ZTS6Test2b ={{.*}} constant
|
||||
|
||||
inline void Test2b::foo() {}
|
||||
|
||||
@@ -131,8 +131,8 @@ inline void Test2c::foo() {}
|
||||
// V-table should be defined with strong linkage.
|
||||
Test2c::Test2c() { use(typeid(Test2c)); }
|
||||
// CHECK: @_ZTV6Test2c ={{.*}} unnamed_addr constant
|
||||
// CHECK: @_ZTS6Test2c ={{.*}} constant
|
||||
// CHECK: @_ZTI6Test2c ={{.*}} constant
|
||||
// CHECK: @_ZTS6Test2c ={{.*}} constant
|
||||
|
||||
/*** Test3a ******************************************************************/
|
||||
|
||||
@@ -145,8 +145,8 @@ struct Test3a {
|
||||
// V-table should be defined with weak linkage.
|
||||
Test3a::Test3a() { use(typeid(Test3a)); }
|
||||
// CHECK: @_ZTV6Test3a = linkonce_odr unnamed_addr constant
|
||||
// CHECK-LATE: @_ZTS6Test3a = linkonce_odr constant
|
||||
// CHECK-LATE: @_ZTI6Test3a = linkonce_odr constant
|
||||
// CHECK-LATE: @_ZTS6Test3a = linkonce_odr constant
|
||||
|
||||
// There ceases to be a key function after these declarations.
|
||||
inline void Test3a::bar() {}
|
||||
@@ -166,8 +166,8 @@ inline void Test3b::bar() {}
|
||||
// V-table should be defined with weak linkage.
|
||||
Test3b::Test3b() { use(typeid(Test3b)); }
|
||||
// CHECK: @_ZTV6Test3b = linkonce_odr unnamed_addr constant
|
||||
// CHECK-LATE: @_ZTS6Test3b = linkonce_odr constant
|
||||
// CHECK-LATE: @_ZTI6Test3b = linkonce_odr constant
|
||||
// CHECK-LATE: @_ZTS6Test3b = linkonce_odr constant
|
||||
|
||||
inline void Test3b::foo() {}
|
||||
|
||||
@@ -186,8 +186,8 @@ inline void Test3c::foo() {}
|
||||
// V-table should be defined with weak linkage.
|
||||
Test3c::Test3c() { use(typeid(Test3c)); }
|
||||
// CHECK: @_ZTV6Test3c = linkonce_odr unnamed_addr constant
|
||||
// CHECK: @_ZTS6Test3c = linkonce_odr constant
|
||||
// CHECK: @_ZTI6Test3c = linkonce_odr constant
|
||||
// CHECK: @_ZTS6Test3c = linkonce_odr constant
|
||||
|
||||
/*** Test4a ******************************************************************/
|
||||
|
||||
@@ -200,8 +200,8 @@ template <class T> struct Test4a {
|
||||
// V-table should be defined with weak linkage.
|
||||
template <> Test4a<int>::Test4a() { use(typeid(Test4a)); }
|
||||
// CHECK: @_ZTV6Test4aIiE = linkonce_odr unnamed_addr constant
|
||||
// CHECK: @_ZTS6Test4aIiE = linkonce_odr constant
|
||||
// CHECK: @_ZTI6Test4aIiE = linkonce_odr constant
|
||||
// CHECK: @_ZTS6Test4aIiE = linkonce_odr constant
|
||||
|
||||
// There ceases to be a key function after these declarations.
|
||||
template <> inline void Test4a<int>::bar() {}
|
||||
@@ -221,8 +221,8 @@ template <> inline void Test4b<int>::bar() {}
|
||||
// V-table should be defined with weak linkage.
|
||||
template <> Test4b<int>::Test4b() { use(typeid(Test4b)); }
|
||||
// CHECK: @_ZTV6Test4bIiE = linkonce_odr unnamed_addr constant
|
||||
// CHECK: @_ZTS6Test4bIiE = linkonce_odr constant
|
||||
// CHECK: @_ZTI6Test4bIiE = linkonce_odr constant
|
||||
// CHECK: @_ZTS6Test4bIiE = linkonce_odr constant
|
||||
|
||||
template <> inline void Test4b<int>::foo() {}
|
||||
|
||||
@@ -241,8 +241,8 @@ template <> inline void Test4c<int>::foo() {}
|
||||
// V-table should be defined with weak linkage.
|
||||
template <> Test4c<int>::Test4c() { use(typeid(Test4c)); }
|
||||
// CHECK: @_ZTV6Test4cIiE = linkonce_odr unnamed_addr constant
|
||||
// CHECK: @_ZTS6Test4cIiE = linkonce_odr constant
|
||||
// CHECK: @_ZTI6Test4cIiE = linkonce_odr constant
|
||||
// CHECK: @_ZTS6Test4cIiE = linkonce_odr constant
|
||||
|
||||
/*** Test5a ******************************************************************/
|
||||
|
||||
@@ -258,8 +258,8 @@ template <> inline void Test5a<int>::foo();
|
||||
// V-table should be defined with weak linkage.
|
||||
template <> Test5a<int>::Test5a() { use(typeid(Test5a)); }
|
||||
// CHECK: @_ZTV6Test5aIiE = linkonce_odr unnamed_addr constant
|
||||
// CHECK: @_ZTS6Test5aIiE = linkonce_odr constant
|
||||
// CHECK: @_ZTI6Test5aIiE = linkonce_odr constant
|
||||
// CHECK: @_ZTS6Test5aIiE = linkonce_odr constant
|
||||
|
||||
// There ceases to be a key function after these declarations.
|
||||
template <> inline void Test5a<int>::bar() {}
|
||||
@@ -280,8 +280,8 @@ template <> inline void Test5b<int>::bar() {}
|
||||
// V-table should be defined with weak linkage.
|
||||
template <> Test5b<int>::Test5b() { use(typeid(Test5b)); }
|
||||
// CHECK: @_ZTV6Test5bIiE = linkonce_odr unnamed_addr constant
|
||||
// CHECK: @_ZTS6Test5bIiE = linkonce_odr constant
|
||||
// CHECK: @_ZTI6Test5bIiE = linkonce_odr constant
|
||||
// CHECK: @_ZTS6Test5bIiE = linkonce_odr constant
|
||||
|
||||
template <> inline void Test5a<int>::foo();
|
||||
template <> inline void Test5b<int>::foo() {}
|
||||
@@ -303,5 +303,5 @@ template <> inline void Test5c<int>::foo() {}
|
||||
// V-table should be defined with weak linkage.
|
||||
template <> Test5c<int>::Test5c() { use(typeid(Test5c)); }
|
||||
// CHECK: @_ZTV6Test5cIiE = linkonce_odr unnamed_addr constant
|
||||
// CHECK: @_ZTS6Test5cIiE = linkonce_odr constant
|
||||
// CHECK: @_ZTI6Test5cIiE = linkonce_odr constant
|
||||
// CHECK: @_ZTS6Test5cIiE = linkonce_odr constant
|
||||
|
||||
@@ -63,8 +63,8 @@ struct Test1a {
|
||||
// V-table needs to be defined weakly.
|
||||
Test1a::Test1a() { use(typeid(Test1a)); }
|
||||
// CHECK: @_ZTV6Test1a = linkonce_odr {{(dso_local )?}}unnamed_addr constant
|
||||
// CHECK-LATE: @_ZTS6Test1a = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK-LATE: @_ZTI6Test1a = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK-LATE: @_ZTS6Test1a = linkonce_odr {{(dso_local )?}}constant
|
||||
|
||||
// This defines the key function.
|
||||
inline void Test1a::foo() {}
|
||||
@@ -83,8 +83,8 @@ inline void Test1b::foo() {}
|
||||
// V-table should be defined weakly..
|
||||
Test1b::Test1b() { use(typeid(Test1b)); }
|
||||
// CHECK: @_ZTV6Test1b = linkonce_odr {{(dso_local )?}}unnamed_addr constant
|
||||
// CHECK: @_ZTS6Test1b = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK: @_ZTI6Test1b = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK: @_ZTS6Test1b = linkonce_odr {{(dso_local )?}}constant
|
||||
|
||||
/*** Test2a ******************************************************************/
|
||||
|
||||
@@ -97,8 +97,8 @@ struct Test2a {
|
||||
// V-table should be defined with weak linkage.
|
||||
Test2a::Test2a() { use(typeid(Test2a)); }
|
||||
// CHECK: @_ZTV6Test2a = linkonce_odr {{(dso_local )?}}unnamed_addr constant
|
||||
// CHECK-LATE: @_ZTS6Test2a = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK-LATE: @_ZTI6Test2a = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK-LATE: @_ZTS6Test2a = linkonce_odr {{(dso_local )?}}constant
|
||||
|
||||
void Test2a::bar() {}
|
||||
inline void Test2a::foo() {}
|
||||
@@ -116,8 +116,8 @@ void Test2b::bar() {}
|
||||
// V-table should be defined with weak linkage.
|
||||
Test2b::Test2b() { use(typeid(Test2b)); }
|
||||
// CHECK: @_ZTV6Test2b = linkonce_odr {{(dso_local )?}}unnamed_addr constant
|
||||
// CHECK-LATE: @_ZTS6Test2b = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK-LATE: @_ZTI6Test2b = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK-LATE: @_ZTS6Test2b = linkonce_odr {{(dso_local )?}}constant
|
||||
|
||||
inline void Test2b::foo() {}
|
||||
|
||||
@@ -135,8 +135,8 @@ inline void Test2c::foo() {}
|
||||
// V-table should be defined with weak linkage.
|
||||
Test2c::Test2c() { use(typeid(Test2c)); }
|
||||
// CHECK: @_ZTV6Test2c = linkonce_odr {{(dso_local )?}}unnamed_addr constant
|
||||
// CHECK: @_ZTS6Test2c = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK: @_ZTI6Test2c = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK: @_ZTS6Test2c = linkonce_odr {{(dso_local )?}}constant
|
||||
|
||||
/*** Test3a ******************************************************************/
|
||||
|
||||
@@ -149,8 +149,8 @@ struct Test3a {
|
||||
// V-table should be defined with weak linkage.
|
||||
Test3a::Test3a() { use(typeid(Test3a)); }
|
||||
// CHECK: @_ZTV6Test3a = linkonce_odr {{(dso_local )?}}unnamed_addr constant
|
||||
// CHECK-LATE: @_ZTS6Test3a = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK-LATE: @_ZTI6Test3a = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK-LATE: @_ZTS6Test3a = linkonce_odr {{(dso_local )?}}constant
|
||||
|
||||
// This defines the key function.
|
||||
inline void Test3a::bar() {}
|
||||
@@ -169,8 +169,8 @@ inline void Test3b::bar() {}
|
||||
// V-table should be defined with weak linkage.
|
||||
Test3b::Test3b() { use(typeid(Test3b)); }
|
||||
// CHECK: @_ZTV6Test3b = linkonce_odr {{(dso_local )?}}unnamed_addr constant
|
||||
// CHECK-LATE: @_ZTS6Test3b = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK-LATE: @_ZTI6Test3b = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK-LATE: @_ZTS6Test3b = linkonce_odr {{(dso_local )?}}constant
|
||||
|
||||
// This defines the key function.
|
||||
inline void Test3b::foo() {}
|
||||
@@ -190,5 +190,5 @@ inline void Test3c::foo() {}
|
||||
// V-table should be defined with weak linkage.
|
||||
Test3c::Test3c() { use(typeid(Test3c)); }
|
||||
// CHECK: @_ZTV6Test3c = linkonce_odr {{(dso_local )?}}unnamed_addr constant
|
||||
// CHECK: @_ZTS6Test3c = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK: @_ZTI6Test3c = linkonce_odr {{(dso_local )?}}constant
|
||||
// CHECK: @_ZTS6Test3c = linkonce_odr {{(dso_local )?}}constant
|
||||
|
||||
@@ -15,11 +15,11 @@ Test1a::Test1a() { use(typeid(Test1a)); }
|
||||
inline void Test1a::foo() {}
|
||||
|
||||
// CHECK: $_ZTV6Test1a = comdat any
|
||||
// CHECK: $_ZTS6Test1a = comdat any
|
||||
// CHECK: $_ZTI6Test1a = comdat any
|
||||
// CHECK-NOT: $_ZTS6Test1a.1 = comdat any
|
||||
// CHECK: $_ZTS6Test1a = comdat any
|
||||
// CHECK-NOT: $_ZTI6Test1a.1 = comdat any
|
||||
// CHECK-NOT: $_ZTS6Test1a.1 = comdat any
|
||||
|
||||
// CHECK: @_ZTV6Test1a = linkonce_odr dso_local unnamed_addr constant {{.*}} ptr @_ZTI6Test1a
|
||||
// CHECK: @_ZTS6Test1a = linkonce_odr dso_local constant
|
||||
// CHECK: @_ZTI6Test1a = linkonce_odr dso_local constant {{.*}} ptr @_ZTS6Test1a
|
||||
// CHECK: @_ZTS6Test1a = linkonce_odr dso_local constant
|
||||
|
||||
@@ -30,17 +30,17 @@ class V2 : public virtual V1 {
|
||||
void V1::foo() { }
|
||||
void V2::foo() { }
|
||||
|
||||
// CHECK: @_ZTS1A = weak_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTI1A = weak_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTS1B = weak_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTS1A = weak_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTI1B = weak_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTS1C = weak_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTS2T1 = linkonce_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTI2T1 = linkonce_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTS1T = linkonce_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTI1T = linkonce_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTS1B = weak_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTI1C = weak_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTS2V1 = weak_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTS1C = weak_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTI2T1 = linkonce_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTS2T1 = linkonce_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTI1T = linkonce_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTS1T = linkonce_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTI2V1 = weak_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTS2V2 = weak_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTS2V1 = weak_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTI2V2 = weak_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTS2V2 = weak_odr {{(dso_local |hidden )?}}constant
|
||||
|
||||
@@ -33,8 +33,8 @@ void f() {
|
||||
|
||||
// CHECK-DAG: @_ZTI4base = external dllimport constant
|
||||
|
||||
// CHECK-EH-IMPORT: @_ZTS4base = linkonce_odr dso_local constant
|
||||
// CHECK-EH-IMPORT: @_ZTI4base = linkonce_odr dso_local constant
|
||||
// CHECK-EH-IMPORT: @_ZTS4base = linkonce_odr dso_local constant
|
||||
|
||||
struct __declspec(dllimport) gatekeeper {};
|
||||
struct zuul : gatekeeper {
|
||||
|
||||
@@ -4,19 +4,20 @@
|
||||
|
||||
namespace std { class type_info; }
|
||||
|
||||
// CHECK: @_ZTI1A = linkonce_odr constant {{.*}}@_ZTVN10__cxxabiv117__class_type_infoE{{.*}}@_ZTS1A
|
||||
@interface A
|
||||
@end
|
||||
|
||||
// CHECK: @_ZTI1B = linkonce_odr constant {{.*}}@_ZTVN10__cxxabiv120__si_class_type_infoE{{.*}}@_ZTS1B{{.*}}@_ZTI1A
|
||||
@interface B : A
|
||||
@end
|
||||
|
||||
// CHECK: @_ZTIP1B = linkonce_odr constant {{.*}}@_ZTVN10__cxxabiv119__pointer_type_infoE{{.*}}@_ZTSP1B{{.*}}, i32 0, {{.*}}@_ZTI1B
|
||||
// CHECK: @_ZTI11objc_object = linkonce_odr constant {{.*}}@_ZTVN10__cxxabiv117__class_type_infoE{{.*}}@_ZTS11objc_object
|
||||
// CHECK: @_ZTI1B = linkonce_odr constant {{.*}}@_ZTVN10__cxxabiv120__si_class_type_infoE{{.*}}@_ZTS1B{{.*}}@_ZTI1A
|
||||
// CHECK: @_ZTI1A = linkonce_odr constant {{.*}}@_ZTVN10__cxxabiv117__class_type_infoE{{.*}}@_ZTS1A
|
||||
|
||||
// CHECK: @_ZTIP11objc_object = linkonce_odr constant {{.*}}@_ZTVN10__cxxabiv119__pointer_type_infoE{{.*}}@_ZTSP11objc_object{{.*}}@_ZTI11objc_object
|
||||
// CHECK: @_ZTI10objc_class = linkonce_odr constant {{.*}}@_ZTVN10__cxxabiv117__class_type_infoE{{.*}}@_ZTS10objc_class
|
||||
// CHECK: @_ZTI11objc_object = linkonce_odr constant {{.*}}@_ZTVN10__cxxabiv117__class_type_infoE{{.*}}@_ZTS11objc_object
|
||||
// CHECK: @_ZTIP10objc_class = linkonce_odr constant {{.*}}@_ZTVN10__cxxabiv119__pointer_type_infoE{{.*}}@_ZTSP10objc_class{{.*}}@_ZTI10objc_class
|
||||
// CHECK: @_ZTI10objc_class = linkonce_odr constant {{.*}}@_ZTVN10__cxxabiv117__class_type_infoE{{.*}}@_ZTS10objc_class
|
||||
|
||||
@protocol P;
|
||||
|
||||
|
||||
@@ -107,12 +107,12 @@ auto v6 = new Template<NonTemplate>();
|
||||
// CHECK: @_ZTVW3Mod11NonTemplate = {{.*}}external
|
||||
// CHECK: @_ZTVW3Mod8TemplateIcE = {{.*}}external
|
||||
// CHECK: @_ZTVW3Mod8TemplateIjE = {{.*}}weak_odr
|
||||
// CHECK: @_ZTSW3Mod8TemplateIjE = {{.*}}weak_odr
|
||||
// CHECK: @_ZTIW3Mod8TemplateIjE = {{.*}}weak_odr
|
||||
// CHECK: @_ZTSW3Mod8TemplateIjE = {{.*}}weak_odr
|
||||
// CHECK: @_ZTVW3Mod8TemplateIdE = {{.*}}external
|
||||
// CHECK: @_ZTVW3Mod8TemplateIiE = {{.*}}linkonce_odr
|
||||
// CHECK: @_ZTSW3Mod8TemplateIiE = {{.*}}linkonce_odr
|
||||
// CHECK: @_ZTIW3Mod8TemplateIiE = {{.*}}linkonce_odr
|
||||
// CHECK: @_ZTSW3Mod8TemplateIiE = {{.*}}linkonce_odr
|
||||
// CHECK: @_ZTVW3Mod8TemplateIS_11NonTemplateE = {{.*}}linkonce_odr
|
||||
// CHECK: @_ZTSW3Mod8TemplateIS_11NonTemplateE = {{.*}}linkonce_odr
|
||||
// CHECK: @_ZTIW3Mod8TemplateIS_11NonTemplateE = {{.*}}linkonce_odr
|
||||
// CHECK: @_ZTSW3Mod8TemplateIS_11NonTemplateE = {{.*}}linkonce_odr
|
||||
|
||||
@@ -6,7 +6,7 @@ namespace std {
|
||||
struct X { };
|
||||
|
||||
void f() {
|
||||
// CHECK: @_ZTS1X = linkonce_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTI1X = linkonce_odr {{(dso_local |hidden )?}}constant
|
||||
// CHECK: @_ZTS1X = linkonce_odr {{(dso_local |hidden )?}}constant
|
||||
(void)typeid(X&);
|
||||
}
|
||||
|
||||
21
llvm/test/CodeGen/AArch64/ptrauth-type-info-vptr-discr.ll
Normal file
21
llvm/test/CodeGen/AArch64/ptrauth-type-info-vptr-discr.ll
Normal file
@@ -0,0 +1,21 @@
|
||||
; RUN: llc -mtriple aarch64-linux-gnu -mattr=+pauth -filetype=asm -o - %s | FileCheck --check-prefix=ELF %s
|
||||
; RUN: llc -mtriple aarch64-apple-darwin -mattr=+pauth -filetype=asm -o - %s | FileCheck --check-prefix=MACHO %s
|
||||
|
||||
; ELF-LABEL: _ZTI10Disc:
|
||||
; ELF-NEXT: .xword (_ZTVN10__cxxabiv117__class_type_infoE+16)@AUTH(da,45546,addr)
|
||||
; ELF-LABEL: _ZTI10NoDisc:
|
||||
; ELF-NEXT: .xword (_ZTVN10__cxxabiv117__class_type_infoE+16)@AUTH(da,45546)
|
||||
|
||||
; MACHO-LABEL: __ZTI10Disc:
|
||||
; MACHO-NEXT: .quad (__ZTVN10__cxxabiv117__class_type_infoE+16)@AUTH(da,45546,addr)
|
||||
; MACHO-LABEL: __ZTI10NoDisc:
|
||||
; MACHO-NEXT: .quad (__ZTVN10__cxxabiv117__class_type_infoE+16)@AUTH(da,45546)
|
||||
|
||||
|
||||
@_ZTI10Disc = constant { ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), i32 2, i64 45546, ptr @_ZTI10Disc), ptr @_ZTS10Disc }, align 8
|
||||
@_ZTS10Disc = constant [4 x i8] c"Disc", align 1
|
||||
|
||||
@_ZTI10NoDisc = constant { ptr, ptr } { ptr ptrauth (ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), i32 2, i64 45546), ptr @_ZTS10NoDisc }, align 8
|
||||
@_ZTS10NoDisc = constant [6 x i8] c"NoDisc", align 1
|
||||
|
||||
@_ZTVN10__cxxabiv117__class_type_infoE = external global [0 x ptr]
|
||||
Reference in New Issue
Block a user