Bring r325915 back.
The tests that failed on a windows host have been fixed. Original message: Start setting dso_local for COFF. With this there are still some GVs where we don't set dso_local because setGVProperties is never called. I intend to fix that in followup commits. This is just the bare minimum to teach shouldAssumeDSOLocal what it should do for COFF. llvm-svn: 325940
This commit is contained in:
parent
1afffac05b
commit
922f2aa9b2
@ -240,7 +240,6 @@ llvm::Constant *CodeGenModule::getOrCreateStaticVarDecl(
|
||||
getModule(), LTy, Ty.isConstant(getContext()), Linkage, Init, Name,
|
||||
nullptr, llvm::GlobalVariable::NotThreadLocal, TargetAS);
|
||||
GV->setAlignment(getContext().getDeclAlign(&D).getQuantity());
|
||||
setGVProperties(GV, &D);
|
||||
|
||||
if (supportsCOMDAT() && GV->isWeakForLinker())
|
||||
GV->setComdat(TheModule.getOrInsertComdat(GV->getName()));
|
||||
@ -255,6 +254,8 @@ llvm::Constant *CodeGenModule::getOrCreateStaticVarDecl(
|
||||
GV->setDLLStorageClass(llvm::GlobalVariable::DLLExportStorageClass);
|
||||
}
|
||||
|
||||
setGVProperties(GV, &D);
|
||||
|
||||
// Make sure the result is of the correct type.
|
||||
LangAS ExpectedAS = Ty.getAddressSpace();
|
||||
llvm::Constant *Addr = GV;
|
||||
|
||||
@ -713,8 +713,20 @@ void CodeGenModule::setGlobalVisibility(llvm::GlobalValue *GV,
|
||||
|
||||
static bool shouldAssumeDSOLocal(const CodeGenModule &CGM,
|
||||
llvm::GlobalValue *GV) {
|
||||
// DLLImport explicitly marks the GV as external.
|
||||
if (GV->hasDLLImportStorageClass())
|
||||
return false;
|
||||
|
||||
const llvm::Triple &TT = CGM.getTriple();
|
||||
// Only handle ELF for now.
|
||||
// Every other GV is local on COFF.
|
||||
// Make an exception for windows OS in the triple: Some firmware builds use
|
||||
// *-win32-macho triples. This (accidentally?) produced windows relocations
|
||||
// without GOT tables in older clang versions; Keep this behaviour.
|
||||
// FIXME: even thread local variables?
|
||||
if (TT.isOSBinFormatCOFF() || (TT.isOSWindows() && TT.isOSBinFormatMachO()))
|
||||
return true;
|
||||
|
||||
// Only handle COFF and ELF for now.
|
||||
if (!TT.isOSBinFormatELF())
|
||||
return false;
|
||||
|
||||
|
||||
@ -723,6 +723,9 @@ public:
|
||||
|
||||
void setDSOLocal(llvm::GlobalValue *GV) const;
|
||||
|
||||
/// Set visibility and dso_local.
|
||||
/// This must be called after dllimport/dllexport is set.
|
||||
/// FIXME: should this set dllimport/dllexport instead?
|
||||
void setGVProperties(llvm::GlobalValue *GV, const NamedDecl *D) const;
|
||||
|
||||
/// Set the TLS mode for the given LLVM GlobalValue for the thread-local
|
||||
|
||||
@ -1641,13 +1641,14 @@ llvm::GlobalVariable *ItaniumCXXABI::getAddrOfVTable(const CXXRecordDecl *RD,
|
||||
VTable = CGM.CreateOrReplaceCXXRuntimeVariable(
|
||||
Name, VTableType, llvm::GlobalValue::ExternalLinkage);
|
||||
VTable->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
|
||||
CGM.setGVProperties(VTable, RD);
|
||||
|
||||
if (RD->hasAttr<DLLImportAttr>())
|
||||
VTable->setDLLStorageClass(llvm::GlobalValue::DLLImportStorageClass);
|
||||
else if (RD->hasAttr<DLLExportAttr>())
|
||||
VTable->setDLLStorageClass(llvm::GlobalValue::DLLExportStorageClass);
|
||||
|
||||
CGM.setGVProperties(VTable, RD);
|
||||
|
||||
return VTable;
|
||||
}
|
||||
|
||||
|
||||
@ -2,10 +2,10 @@
|
||||
|
||||
struct X { };
|
||||
|
||||
// CHECK: @x1 = global %struct.X zeroinitializer
|
||||
// CHECK: @x4 = global %struct.X zeroinitializer
|
||||
// CHECK: @x2 = external global %struct.X
|
||||
// CHECK: @x3 = external global %struct.X
|
||||
// CHECK: @x1 = {{(dso_local )?}}global %struct.X zeroinitializer
|
||||
// CHECK: @x4 = {{(dso_local )?}}global %struct.X zeroinitializer
|
||||
// CHECK: @x2 = external {{(dso_local )?}}global %struct.X
|
||||
// CHECK: @x3 = external {{(dso_local )?}}global %struct.X
|
||||
extern "C" {
|
||||
X x1;
|
||||
}
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
// RUN: %clang_cc1 -fmodules-ts %S/module.cppm -triple %itanium_abi_triple -emit-module-interface -o %t
|
||||
// RUN: %clang_cc1 -fmodules-ts %s -triple %itanium_abi_triple -fmodule-file=%t -emit-llvm -o - | FileCheck %s --implicit-check-not=unused --implicit-check-not=global_module
|
||||
|
||||
// CHECK-DAG: @extern_var_exported = external global
|
||||
// CHECK-DAG: @inline_var_exported = linkonce_odr global
|
||||
// CHECK-DAG: @_ZW6ModuleE19static_var_exported = available_externally global i32 0,
|
||||
// CHECK-DAG: @const_var_exported = available_externally constant i32 3,
|
||||
// CHECK-DAG: @extern_var_exported = external {{(dso_local )?}}global
|
||||
// CHECK-DAG: @inline_var_exported = linkonce_odr {{(dso_local )?}}global
|
||||
// CHECK-DAG: @_ZW6ModuleE19static_var_exported = available_externally {{(dso_local )?}}global i32 0,
|
||||
// CHECK-DAG: @const_var_exported = available_externally {{(dso_local )?}}constant i32 3,
|
||||
//
|
||||
// CHECK-DAG: @_ZW6ModuleE25extern_var_module_linkage = external global
|
||||
// CHECK-DAG: @_ZW6ModuleE25inline_var_module_linkage = linkonce_odr global
|
||||
// CHECK-DAG: @_ZW6ModuleE25static_var_module_linkage = available_externally global i32 0,
|
||||
// CHECK-DAG: @_ZW6ModuleE24const_var_module_linkage = available_externally constant i32 3,
|
||||
// CHECK-DAG: @_ZW6ModuleE25extern_var_module_linkage = external {{(dso_local )?}}global
|
||||
// CHECK-DAG: @_ZW6ModuleE25inline_var_module_linkage = linkonce_odr {{(dso_local )?}}global
|
||||
// CHECK-DAG: @_ZW6ModuleE25static_var_module_linkage = available_externally {{(dso_local )?}}global i32 0,
|
||||
// CHECK-DAG: @_ZW6ModuleE24const_var_module_linkage = available_externally {{(dso_local )?}}constant i32 3,
|
||||
|
||||
module Module;
|
||||
|
||||
|
||||
@ -1,30 +1,30 @@
|
||||
// RUN: %clang_cc1 -fmodules-ts %s -triple %itanium_abi_triple -emit-llvm -o - | FileCheck %s --implicit-check-not unused_inline --implicit-check-not unused_stastic_global_module
|
||||
|
||||
// CHECK-DAG: @extern_var_global_module = external global
|
||||
// CHECK-DAG: @inline_var_global_module = linkonce_odr global
|
||||
// CHECK-DAG: @extern_var_global_module = external {{(dso_local )?}}global
|
||||
// CHECK-DAG: @inline_var_global_module = linkonce_odr {{(dso_local )?}}global
|
||||
// CHECK-DAG: @_ZL24static_var_global_module = internal global
|
||||
// CHECK-DAG: @_ZL23const_var_global_module = internal constant
|
||||
//
|
||||
// For ABI compatibility, these symbols do not include the module name.
|
||||
// CHECK-DAG: @extern_var_exported = external global
|
||||
// CHECK-DAG: @extern_var_exported = external {{(dso_local )?}}global
|
||||
// FIXME: Should this be 'weak_odr global'? Presumably it must be, since we
|
||||
// can discard this global and its initializer (if any), and other TUs are not
|
||||
// permitted to run the initializer for this variable.
|
||||
// CHECK-DAG: @inline_var_exported = linkonce_odr global
|
||||
// CHECK-DAG: @_ZW6ModuleE19static_var_exported = global
|
||||
// CHECK-DAG: @const_var_exported = constant
|
||||
// CHECK-DAG: @inline_var_exported = linkonce_odr {{(dso_local )?}}global
|
||||
// CHECK-DAG: @_ZW6ModuleE19static_var_exported = {{(dso_local )?}}global
|
||||
// CHECK-DAG: @const_var_exported = {{(dso_local )?}}constant
|
||||
//
|
||||
// CHECK-DAG: @_ZW6ModuleE25extern_var_module_linkage = external global
|
||||
// CHECK-DAG: @_ZW6ModuleE25extern_var_module_linkage = external {{(dso_local )?}}global
|
||||
// FIXME: Should this be 'weak_odr global'? Presumably it must be, since we
|
||||
// can discard this global and its initializer (if any), and other TUs are not
|
||||
// permitted to run the initializer for this variable.
|
||||
// CHECK-DAG: @_ZW6ModuleE25inline_var_module_linkage = linkonce_odr global
|
||||
// CHECK-DAG: @_ZW6ModuleE25static_var_module_linkage = global
|
||||
// CHECK-DAG: @_ZW6ModuleE24const_var_module_linkage = constant
|
||||
// CHECK-DAG: @_ZW6ModuleE25inline_var_module_linkage = linkonce_odr {{(dso_local )?}}global
|
||||
// CHECK-DAG: @_ZW6ModuleE25static_var_module_linkage = {{(dso_local )?}}global
|
||||
// CHECK-DAG: @_ZW6ModuleE24const_var_module_linkage = {{(dso_local )?}}constant
|
||||
//
|
||||
// CHECK-DAG: @_ZW6ModuleE25unused_var_module_linkage = global i32 4
|
||||
// CHECK-DAG: @_ZW6ModuleE32unused_static_var_module_linkage = global i32 5
|
||||
// CHECK-DAG: @_ZW6ModuleE31unused_const_var_module_linkage = constant i32 7
|
||||
// CHECK-DAG: @_ZW6ModuleE25unused_var_module_linkage = {{(dso_local )?}}global i32 4
|
||||
// CHECK-DAG: @_ZW6ModuleE32unused_static_var_module_linkage = {{(dso_local )?}}global i32 5
|
||||
// CHECK-DAG: @_ZW6ModuleE31unused_const_var_module_linkage = {{(dso_local )?}}constant i32 7
|
||||
|
||||
static void unused_static_global_module() {}
|
||||
static void used_static_global_module() {}
|
||||
@ -37,7 +37,7 @@ inline int inline_var_global_module;
|
||||
static int static_var_global_module;
|
||||
const int const_var_global_module = 3;
|
||||
|
||||
// CHECK: define void {{.*}}@_Z23noninline_global_modulev
|
||||
// CHECK: define {{(dso_local )?}}void {{.*}}@_Z23noninline_global_modulev
|
||||
void noninline_global_module() {
|
||||
// FIXME: This should be promoted to module linkage and given a
|
||||
// module-mangled name, if it's called from an inline function within
|
||||
@ -60,9 +60,9 @@ export module Module;
|
||||
export {
|
||||
// FIXME: These should be ill-formed: you can't export an internal linkage
|
||||
// symbol, per [dcl.module.interface]p2.
|
||||
// CHECK: define void {{.*}}@_ZW6ModuleE22unused_static_exportedv
|
||||
// CHECK: define {{(dso_local )?}}void {{.*}}@_ZW6ModuleE22unused_static_exportedv
|
||||
static void unused_static_exported() {}
|
||||
// CHECK: define void {{.*}}@_ZW6ModuleE20used_static_exportedv
|
||||
// CHECK: define {{(dso_local )?}}void {{.*}}@_ZW6ModuleE20used_static_exportedv
|
||||
static void used_static_exported() {}
|
||||
|
||||
inline void unused_inline_exported() {}
|
||||
@ -75,7 +75,7 @@ export {
|
||||
static int static_var_exported;
|
||||
const int const_var_exported = 3;
|
||||
|
||||
// CHECK: define void {{.*}}@_Z18noninline_exportedv
|
||||
// CHECK: define {{(dso_local )?}}void {{.*}}@_Z18noninline_exportedv
|
||||
void noninline_exported() {
|
||||
used_static_exported();
|
||||
// CHECK: define linkonce_odr {{.*}}@_Z20used_inline_exportedv
|
||||
@ -91,9 +91,9 @@ export {
|
||||
// FIXME: Ideally we wouldn't emit this as its name is not visible outside this
|
||||
// TU, but this module interface might contain a template that can use this
|
||||
// function so we conservatively emit it for now.
|
||||
// CHECK: define void {{.*}}@_ZW6ModuleE28unused_static_module_linkagev
|
||||
// CHECK: define {{(dso_local )?}}void {{.*}}@_ZW6ModuleE28unused_static_module_linkagev
|
||||
static void unused_static_module_linkage() {}
|
||||
// CHECK: define void {{.*}}@_ZW6ModuleE26used_static_module_linkagev
|
||||
// CHECK: define {{(dso_local )?}}void {{.*}}@_ZW6ModuleE26used_static_module_linkagev
|
||||
static void used_static_module_linkage() {}
|
||||
|
||||
inline void unused_inline_module_linkage() {}
|
||||
@ -104,7 +104,7 @@ inline int inline_var_module_linkage;
|
||||
static int static_var_module_linkage;
|
||||
const int const_var_module_linkage = 3;
|
||||
|
||||
// CHECK: define void {{.*}}@_ZW6ModuleE24noninline_module_linkagev
|
||||
// CHECK: define {{(dso_local )?}}void {{.*}}@_ZW6ModuleE24noninline_module_linkagev
|
||||
void noninline_module_linkage() {
|
||||
used_static_module_linkage();
|
||||
// CHECK: define linkonce_odr {{.*}}@_ZW6ModuleE26used_inline_module_linkagev
|
||||
@ -125,5 +125,5 @@ struct a {
|
||||
struct b {};
|
||||
struct c {};
|
||||
};
|
||||
// CHECK: define void @_ZW6ModuleE1fW_0EN1a1bEW_0ENS_1cE(
|
||||
// CHECK: define {{(dso_local )?}}void @_ZW6ModuleE1fW_0EN1a1bEW_0ENS_1cE(
|
||||
void f(a::b, a::c) {}
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
// RUN: %clang_cc1 -fmodules-ts %S/module.cppm -triple %itanium_abi_triple -emit-module-interface -o %t
|
||||
// RUN: %clang_cc1 -fmodules-ts %s -triple %itanium_abi_triple -fmodule-file=%t -emit-llvm -o - | FileCheck %s --implicit-check-not=unused --implicit-check-not=global_module
|
||||
|
||||
// CHECK-DAG: @extern_var_exported = external global
|
||||
// CHECK-DAG: @inline_var_exported = linkonce_odr global
|
||||
// CHECK-DAG: @_ZW6ModuleE19static_var_exported = available_externally global i32 0
|
||||
// CHECK-DAG: @const_var_exported = available_externally constant i32 3
|
||||
// CHECK-DAG: @extern_var_exported = external {{(dso_local )?}}global
|
||||
// CHECK-DAG: @inline_var_exported = linkonce_odr {{(dso_local )?}}global
|
||||
// CHECK-DAG: @_ZW6ModuleE19static_var_exported = available_externally {{(dso_local )?}}global i32 0
|
||||
// CHECK-DAG: @const_var_exported = available_externally {{(dso_local )?}}constant i32 3
|
||||
|
||||
import Module;
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s
|
||||
|
||||
// CHECK: @a = external constan
|
||||
// CHECK: @a = external {{(dso_local )?}}constan
|
||||
extern const int a[]; // 'a' should be marked constant even though it's external!
|
||||
int foo () {
|
||||
return a[0];
|
||||
|
||||
@ -3,6 +3,6 @@
|
||||
int g0, f0();
|
||||
int f1(), g1;
|
||||
|
||||
// CHECK: @g0 = common global i32 0, align 4
|
||||
// CHECK: @g1 = common global i32 0, align 4
|
||||
// CHECK: @g0 = common {{(dso_local )?}}global i32 0, align 4
|
||||
// CHECK: @g1 = common {{(dso_local )?}}global i32 0, align 4
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
#include <stdarg.h>
|
||||
|
||||
int simple_int(va_list ap) {
|
||||
// CHECK-LABEL: define i32 @simple_int
|
||||
// CHECK-LABEL: define dso_local i32 @simple_int
|
||||
return va_arg(ap, int);
|
||||
// CHECK: [[ADDR:%[a-z_0-9]+]] = bitcast i8* %argp.cur to i32*
|
||||
// CHECK: [[RESULT:%[a-z_0-9]+]] = load i32, i32* [[ADDR]]
|
||||
|
||||
@ -23,12 +23,12 @@ __attribute__((interrupt)) void foo8(int *a) {}
|
||||
// X86_LINUX: "disable-tail-calls"="true"
|
||||
// X86_LINUX-NOT: "disable-tail-calls"="false"
|
||||
// X86_64_WIN: @llvm.used = appending global [2 x i8*] [i8* bitcast (void (i32*, i64)* @foo7 to i8*), i8* bitcast (void (i32*)* @foo8 to i8*)], section "llvm.metadata"
|
||||
// X86_64_WIN: define x86_intrcc void @foo7(i32* %{{.+}}, i64 %{{.+}})
|
||||
// X86_64_WIN: define x86_intrcc void @foo8(i32* %{{.+}})
|
||||
// X86_64_WIN: define dso_local x86_intrcc void @foo7(i32* %{{.+}}, i64 %{{.+}})
|
||||
// X86_64_WIN: define dso_local x86_intrcc void @foo8(i32* %{{.+}})
|
||||
// X86_64_Win: "disable-tail-calls"="true"
|
||||
// X86_64_Win-NOT: "disable-tail-calls"="false"
|
||||
// X86_WIN: @llvm.used = appending global [2 x i8*] [i8* bitcast (void (i32*, i32)* @foo7 to i8*), i8* bitcast (void (i32*)* @foo8 to i8*)], section "llvm.metadata"
|
||||
// X86_WIN: define x86_intrcc void @foo7(i32* %{{.+}}, i32 %{{.+}})
|
||||
// X86_WIN: define x86_intrcc void @foo8(i32* %{{.+}})
|
||||
// X86_WIN: define dso_local x86_intrcc void @foo7(i32* %{{.+}}, i32 %{{.+}})
|
||||
// X86_WIN: define dso_local x86_intrcc void @foo8(i32* %{{.+}})
|
||||
// X86_Win: "disable-tail-calls"="true"
|
||||
// X86_Win-NOT: "disable-tail-calls"="false"
|
||||
|
||||
@ -68,7 +68,7 @@ int (*g(void))(void) {
|
||||
}
|
||||
|
||||
// CHECK-BLOCKS-IN-BLOCKS-DECL: @_NSConcreteStackBlock = external dllexport global i8*
|
||||
// CHECK-BLOCKS-IN-BLOCKS-DEFN: @_NSConcreteStackBlock = common dllexport global [5 x i32]
|
||||
// CHECK-BLOCKS-IN-BLOCKS-DEFN: @_NSConcreteStackBlock = common dso_local dllexport global [5 x i32]
|
||||
// CHECK-BLOCKS-NOT-IN-BLOCKS: @_NSConcreteStackBlock = external dllimport global i8*
|
||||
// CHECK-BLOCKS-NOT-IN-BLOCKS-EXTERN: @_NSConcreteStackBlock = external dllimport global i8*
|
||||
// CHECK-BLOCKS-NOT-IN-BLOCKS-EXTERN-DLLIMPORT: @_NSConcreteStackBlock = external dllimport global i8*
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
// RUN: %clang_cc1 %s -emit-llvm -o - -fms-extensions -triple i686-pc-win32 | FileCheck %s
|
||||
|
||||
// CHECK-LABEL: define void @test_alloca(
|
||||
// CHECK-LABEL: define dso_local void @test_alloca(
|
||||
void capture(void *);
|
||||
void test_alloca(int n) {
|
||||
capture(_alloca(n));
|
||||
@ -8,7 +8,7 @@ void test_alloca(int n) {
|
||||
// CHECK: call void @capture(i8* %[[arg]])
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define void @test_alloca_with_align(
|
||||
// CHECK-LABEL: define dso_local void @test_alloca_with_align(
|
||||
void test_alloca_with_align(int n) {
|
||||
capture(__builtin_alloca_with_align(n, 64));
|
||||
// CHECK: %[[arg:.*]] = alloca i8, i32 %{{.*}}, align 8
|
||||
|
||||
@ -14,7 +14,7 @@ extern long long LongLongErrorCode;
|
||||
void overflowed(void);
|
||||
|
||||
unsigned test_add_overflow_uint_uint_uint(unsigned x, unsigned y) {
|
||||
// CHECK-LABEL: define i32 @test_add_overflow_uint_uint_uint
|
||||
// CHECK-LABEL: define {{(dso_local )?}}i32 @test_add_overflow_uint_uint_uint
|
||||
// CHECK-NOT: ext
|
||||
// CHECK: [[S:%.+]] = call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 %{{.+}}, i32 %{{.+}})
|
||||
// CHECK-DAG: [[Q:%.+]] = extractvalue { i32, i1 } [[S]], 0
|
||||
@ -28,7 +28,7 @@ unsigned test_add_overflow_uint_uint_uint(unsigned x, unsigned y) {
|
||||
}
|
||||
|
||||
int test_add_overflow_int_int_int(int x, int y) {
|
||||
// CHECK-LABEL: define i32 @test_add_overflow_int_int_int
|
||||
// CHECK-LABEL: define {{(dso_local )?}}i32 @test_add_overflow_int_int_int
|
||||
// CHECK-NOT: ext
|
||||
// CHECK: [[S:%.+]] = call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 %{{.+}}, i32 %{{.+}})
|
||||
// CHECK-DAG: [[C:%.+]] = extractvalue { i32, i1 } [[S]], 1
|
||||
@ -42,7 +42,7 @@ int test_add_overflow_int_int_int(int x, int y) {
|
||||
}
|
||||
|
||||
unsigned test_sub_overflow_uint_uint_uint(unsigned x, unsigned y) {
|
||||
// CHECK-LABEL: define i32 @test_sub_overflow_uint_uint_uint
|
||||
// CHECK-LABEL: define {{(dso_local )?}}i32 @test_sub_overflow_uint_uint_uint
|
||||
// CHECK-NOT: ext
|
||||
// CHECK: [[S:%.+]] = call { i32, i1 } @llvm.usub.with.overflow.i32(i32 %{{.+}}, i32 %{{.+}})
|
||||
// CHECK-DAG: [[Q:%.+]] = extractvalue { i32, i1 } [[S]], 0
|
||||
@ -56,7 +56,7 @@ unsigned test_sub_overflow_uint_uint_uint(unsigned x, unsigned y) {
|
||||
}
|
||||
|
||||
int test_sub_overflow_int_int_int(int x, int y) {
|
||||
// CHECK-LABEL: define i32 @test_sub_overflow_int_int_int
|
||||
// CHECK-LABEL: define {{(dso_local )?}}i32 @test_sub_overflow_int_int_int
|
||||
// CHECK-NOT: ext
|
||||
// CHECK: [[S:%.+]] = call { i32, i1 } @llvm.ssub.with.overflow.i32(i32 %{{.+}}, i32 %{{.+}})
|
||||
// CHECK-DAG: [[C:%.+]] = extractvalue { i32, i1 } [[S]], 1
|
||||
@ -70,7 +70,7 @@ int test_sub_overflow_int_int_int(int x, int y) {
|
||||
}
|
||||
|
||||
unsigned test_mul_overflow_uint_uint_uint(unsigned x, unsigned y) {
|
||||
// CHECK-LABEL: define i32 @test_mul_overflow_uint_uint_uint
|
||||
// CHECK-LABEL: define {{(dso_local )?}}i32 @test_mul_overflow_uint_uint_uint
|
||||
// CHECK-NOT: ext
|
||||
// CHECK: [[S:%.+]] = call { i32, i1 } @llvm.umul.with.overflow.i32(i32 %{{.+}}, i32 %{{.+}})
|
||||
// CHECK-DAG: [[Q:%.+]] = extractvalue { i32, i1 } [[S]], 0
|
||||
@ -84,7 +84,7 @@ unsigned test_mul_overflow_uint_uint_uint(unsigned x, unsigned y) {
|
||||
}
|
||||
|
||||
int test_mul_overflow_int_int_int(int x, int y) {
|
||||
// CHECK-LABEL: define i32 @test_mul_overflow_int_int_int
|
||||
// CHECK-LABEL: define {{(dso_local )?}}i32 @test_mul_overflow_int_int_int
|
||||
// CHECK-NOT: ext
|
||||
// CHECK: [[S:%.+]] = call { i32, i1 } @llvm.smul.with.overflow.i32(i32 %{{.+}}, i32 %{{.+}})
|
||||
// CHECK-DAG: [[C:%.+]] = extractvalue { i32, i1 } [[S]], 1
|
||||
@ -98,7 +98,7 @@ int test_mul_overflow_int_int_int(int x, int y) {
|
||||
}
|
||||
|
||||
int test_add_overflow_uint_int_int(unsigned x, int y) {
|
||||
// CHECK-LABEL: define i32 @test_add_overflow_uint_int_int
|
||||
// CHECK-LABEL: define {{(dso_local )?}}i32 @test_add_overflow_uint_int_int
|
||||
// CHECK: [[XE:%.+]] = zext i32 %{{.+}} to i33
|
||||
// CHECK: [[YE:%.+]] = sext i32 %{{.+}} to i33
|
||||
// CHECK: [[S:%.+]] = call { i33, i1 } @llvm.sadd.with.overflow.i33(i33 [[XE]], i33 [[YE]])
|
||||
@ -136,7 +136,7 @@ _Bool test_add_overflow_uint_uint_bool(unsigned x, unsigned y) {
|
||||
}
|
||||
|
||||
unsigned test_add_overflow_bool_bool_uint(_Bool x, _Bool y) {
|
||||
// CHECK-LABEL: define i32 @test_add_overflow_bool_bool_uint
|
||||
// CHECK-LABEL: define {{(dso_local )?}}i32 @test_add_overflow_bool_bool_uint
|
||||
// CHECK: [[XE:%.+]] = zext i1 %{{.+}} to i32
|
||||
// CHECK: [[YE:%.+]] = zext i1 %{{.+}} to i32
|
||||
// CHECK: [[S:%.+]] = call { i32, i1 } @llvm.uadd.with.overflow.i32(i32 [[XE]], i32 [[YE]])
|
||||
@ -165,7 +165,7 @@ _Bool test_add_overflow_bool_bool_bool(_Bool x, _Bool y) {
|
||||
}
|
||||
|
||||
int test_add_overflow_volatile(int x, int y) {
|
||||
// CHECK-LABEL: define i32 @test_add_overflow_volatile
|
||||
// CHECK-LABEL: define {{(dso_local )?}}i32 @test_add_overflow_volatile
|
||||
// CHECK: [[S:%.+]] = call { i32, i1 } @llvm.sadd.with.overflow.i32(i32 %{{.+}}, i32 %{{.+}})
|
||||
// CHECK-DAG: [[Q:%.+]] = extractvalue { i32, i1 } [[S]], 0
|
||||
// CHECK-DAG: [[C:%.+]] = extractvalue { i32, i1 } [[S]], 1
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
// Should be 3 hello strings, two global (of different sizes), the rest are
|
||||
// shared.
|
||||
|
||||
// CHECK: @align = global i8 [[ALIGN:[0-9]+]]
|
||||
// CHECK: @align = {{(dso_local )?}}global i8 [[ALIGN:[0-9]+]]
|
||||
// ITANIUM: @.str = private unnamed_addr constant [6 x i8] c"hello\00"
|
||||
// MSABI: @"\01??_C@_05CJBACGMB@hello?$AA@" = linkonce_odr unnamed_addr constant [6 x i8] c"hello\00", comdat, align 1
|
||||
// ITANIUM: @f1.x = internal global i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0)
|
||||
@ -13,7 +13,7 @@
|
||||
// CHECK: @f3.x = internal global [8 x i8] c"hello\00\00\00", align [[ALIGN]]
|
||||
// ITANIUM: @f4.x = internal global %struct.s { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0) }
|
||||
// MSABI: @f4.x = internal global %struct.s { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"\01??_C@_05CJBACGMB@hello?$AA@", i32 0, i32 0) }
|
||||
// CHECK: @x = global [3 x i8] c"ola", align [[ALIGN]]
|
||||
// CHECK: @x = {{(dso_local )?}}global [3 x i8] c"ola", align [[ALIGN]]
|
||||
|
||||
// XFAIL: hexagon
|
||||
// Hexagon aligns arrays of size 8+ bytes to a 64-bit boundary, which
|
||||
|
||||
@ -49,7 +49,7 @@ void caller(void (*f)()) {
|
||||
// CHECK: define internal void @g({{.*}} !type [[TVOID:![0-9]+]] !type [[TVOID_GENERALIZED:![0-9]+]] !type [[TVOID_ID:![0-9]+]]
|
||||
static void g(void) {}
|
||||
|
||||
// CHECK: declare void @h({{[^!]*$}}
|
||||
// CHECK: declare {{(dso_local )?}}void @h({{[^!]*$}}
|
||||
void h(void);
|
||||
|
||||
typedef void (*Fn)(void);
|
||||
@ -60,9 +60,9 @@ Fn h1() {
|
||||
return &h;
|
||||
}
|
||||
|
||||
// CHECK: define void @bar({{.*}} !type [[TNOPROTO:![0-9]+]] !type [[TNOPROTO_GENERALIZED:![0-9]+]] !type [[TNOPROTO_ID:![0-9]+]]
|
||||
// CHECK: define {{(dso_local )?}}void @bar({{.*}} !type [[TNOPROTO:![0-9]+]] !type [[TNOPROTO_GENERALIZED:![0-9]+]] !type [[TNOPROTO_ID:![0-9]+]]
|
||||
// ITANIUM: define available_externally void @foo({{[^!]*$}}
|
||||
// MS: define linkonce_odr void @foo({{.*}} !type [[TNOPROTO]] !type [[TNOPROTO_GENERALIZED:![0-9]+]] !type [[TNOPROTO_ID]]
|
||||
// MS: define linkonce_odr dso_local void @foo({{.*}} !type [[TNOPROTO]] !type [[TNOPROTO_GENERALIZED:![0-9]+]] !type [[TNOPROTO_ID]]
|
||||
inline void foo() {}
|
||||
void bar() { foo(); }
|
||||
|
||||
|
||||
@ -3,20 +3,20 @@
|
||||
|
||||
// Tests that we assign appropriate identifiers to unprototyped functions.
|
||||
|
||||
// CHECK: define void @f({{.*}} !type [[TVOID:![0-9]+]] !type [[TVOID_GENERALIZED:![0-9]+]]
|
||||
// CHECK: define {{(dso_local )?}}void @f({{.*}} !type [[TVOID:![0-9]+]] !type [[TVOID_GENERALIZED:![0-9]+]]
|
||||
void f() {
|
||||
}
|
||||
|
||||
void xf();
|
||||
|
||||
// CHECK: define void @g({{.*}} !type [[TINT:![0-9]+]] !type [[TINT_GENERALIZED:![0-9]+]]
|
||||
// CHECK: define {{(dso_local )?}}void @g({{.*}} !type [[TINT:![0-9]+]] !type [[TINT_GENERALIZED:![0-9]+]]
|
||||
void g(int b) {
|
||||
void (*fp)() = b ? f : xf;
|
||||
// ITANIUM: call i1 @llvm.type.test(i8* {{.*}}, metadata !"_ZTSFvE")
|
||||
fp();
|
||||
}
|
||||
|
||||
// CHECK: declare !type [[TVOID]] !type [[TVOID_GENERALIZED]] void @xf({{.*}}
|
||||
// CHECK: declare !type [[TVOID]] !type [[TVOID_GENERALIZED]] {{(dso_local )?}}void @xf({{.*}}
|
||||
|
||||
// ITANIUM-DAG: [[TVOID]] = !{i64 0, !"_ZTSFvE"}
|
||||
// ITANIUM-DAG: [[TVOID_GENERALIZED]] = !{i64 0, !"_ZTSFvE.generalized"}
|
||||
|
||||
@ -32,7 +32,7 @@ typedef struct __CFString *CFStringRef;
|
||||
const CFStringRef string = (CFStringRef)__builtin___CFStringMakeConstantString("string");
|
||||
|
||||
// CHECK-CF-IN-CF-DECL: @__CFConstantStringClassReference = external dllexport global [0 x i32]
|
||||
// CHECK-CF-IN-CF-DEFN: @__CFConstantStringClassReference = common dllexport global [32 x i32]
|
||||
// CHECK-CF-IN-CF-DEFN: @__CFConstantStringClassReference = common dso_local dllexport global [32 x i32]
|
||||
// CHECK-CF: @__CFConstantStringClassReference = external dllimport global [0 x i32]
|
||||
// CHECK-CF-EXTERN: @__CFConstantStringClassReference = external dllimport global [0 x i32]
|
||||
// CHECK-CF-EXTERN-DLLIMPORT: @__CFConstantStringClassReference = external dllimport global [0 x i32]
|
||||
|
||||
@ -2,12 +2,12 @@
|
||||
|
||||
// CHECK: @test1.x = internal constant [12 x i32] [i32 1
|
||||
// CHECK: @test2.x = private unnamed_addr constant [13 x i32] [i32 1,
|
||||
// CHECK: @test5w = global { i32, [4 x i8] } { i32 2, [4 x i8] undef }
|
||||
// CHECK: @test5y = global { double } { double 7.300000e+0{{[0]*}}1 }
|
||||
// CHECK: @test5w = {{(dso_local )?}}global { i32, [4 x i8] } { i32 2, [4 x i8] undef }
|
||||
// CHECK: @test5y = {{(dso_local )?}}global { double } { double 7.300000e+0{{[0]*}}1 }
|
||||
|
||||
// CHECK: @test6.x = private unnamed_addr constant %struct.SelectDest { i8 1, i8 2, i32 3, i32 0 }
|
||||
|
||||
// CHECK: @test7 = global [2 x %struct.test7s] [%struct.test7s { i32 1, i32 2 }, %struct.test7s { i32 4, i32 0 }]
|
||||
// CHECK: @test7 = {{(dso_local )?}}global [2 x %struct.test7s] [%struct.test7s { i32 1, i32 2 }, %struct.test7s { i32 4, i32 0 }]
|
||||
|
||||
void test1() {
|
||||
// This should codegen as a "@test1.x" global.
|
||||
|
||||
@ -14,24 +14,24 @@
|
||||
__declspec(dllexport) extern int ExternGlobalDecl;
|
||||
|
||||
// dllexport implies a definition.
|
||||
// CHECK-DAG: @GlobalDef = common dllexport global i32 0, align 4
|
||||
// CHECK-DAG: @GlobalDef = common dso_local dllexport global i32 0, align 4
|
||||
__declspec(dllexport) int GlobalDef;
|
||||
|
||||
// Export definition.
|
||||
// CHECK-DAG: @GlobalInit = dllexport global i32 1, align 4
|
||||
// CHECK-DAG: @GlobalInit = dso_local dllexport global i32 1, align 4
|
||||
__declspec(dllexport) int GlobalInit = 1;
|
||||
|
||||
// Declare, then export definition.
|
||||
// CHECK-DAG: @GlobalDeclInit = dllexport global i32 1, align 4
|
||||
// CHECK-DAG: @GlobalDeclInit = dso_local dllexport global i32 1, align 4
|
||||
__declspec(dllexport) extern int GlobalDeclInit;
|
||||
int GlobalDeclInit = 1;
|
||||
|
||||
// Redeclarations
|
||||
// CHECK-DAG: @GlobalRedecl1 = common dllexport global i32 0, align 4
|
||||
// CHECK-DAG: @GlobalRedecl1 = common dso_local dllexport global i32 0, align 4
|
||||
__declspec(dllexport) extern int GlobalRedecl1;
|
||||
__declspec(dllexport) int GlobalRedecl1;
|
||||
|
||||
// CHECK-DAG: @GlobalRedecl2 = common dllexport global i32 0, align 4
|
||||
// CHECK-DAG: @GlobalRedecl2 = common dso_local dllexport global i32 0, align 4
|
||||
__declspec(dllexport) extern int GlobalRedecl2;
|
||||
int GlobalRedecl2;
|
||||
|
||||
@ -44,22 +44,22 @@ __declspec(dllexport) extern int GlobalRedecl2;
|
||||
// Declarations are not exported.
|
||||
|
||||
// Export function definition.
|
||||
// CHECK-DAG: define dllexport void @def()
|
||||
// CHECK-DAG: define dso_local dllexport void @def()
|
||||
__declspec(dllexport) void def(void) {}
|
||||
|
||||
// Export inline function.
|
||||
// CHECK-DAG: define weak_odr dllexport void @inlineFunc()
|
||||
// CHECK-DAG: define weak_odr dllexport void @externInlineFunc()
|
||||
// CHECK-DAG: define weak_odr dso_local dllexport void @inlineFunc()
|
||||
// CHECK-DAG: define weak_odr dso_local dllexport void @externInlineFunc()
|
||||
__declspec(dllexport) inline void inlineFunc(void) {}
|
||||
__declspec(dllexport) inline void externInlineFunc(void) {}
|
||||
extern void externInlineFunc(void);
|
||||
|
||||
// Redeclarations
|
||||
// CHECK-DAG: define dllexport void @redecl1()
|
||||
// CHECK-DAG: define dso_local dllexport void @redecl1()
|
||||
__declspec(dllexport) void redecl1(void);
|
||||
__declspec(dllexport) void redecl1(void) {}
|
||||
|
||||
// CHECK-DAG: define dllexport void @redecl2()
|
||||
// CHECK-DAG: define dso_local dllexport void @redecl2()
|
||||
__declspec(dllexport) void redecl2(void);
|
||||
void redecl2(void) {}
|
||||
|
||||
@ -70,46 +70,46 @@ __declspec(dllexport) void redecl2(void);
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
// dllexport takes precedence over the dllimport if both are specified.
|
||||
// CHECK-DAG: @PrecedenceGlobal1A = common dllexport global i32 0, align 4
|
||||
// CHECK-DAG: @PrecedenceGlobal1B = common dllexport global i32 0, align 4
|
||||
// CHECK-DAG: @PrecedenceGlobal1A = common dso_local dllexport global i32 0, align 4
|
||||
// CHECK-DAG: @PrecedenceGlobal1B = common dso_local dllexport global i32 0, align 4
|
||||
__attribute__((dllimport, dllexport)) int PrecedenceGlobal1A;
|
||||
__declspec(dllimport) __declspec(dllexport) int PrecedenceGlobal1B;
|
||||
|
||||
// CHECK-DAG: @PrecedenceGlobal2A = common dllexport global i32 0, align 4
|
||||
// CHECK-DAG: @PrecedenceGlobal2B = common dllexport global i32 0, align 4
|
||||
// CHECK-DAG: @PrecedenceGlobal2A = common dso_local dllexport global i32 0, align 4
|
||||
// CHECK-DAG: @PrecedenceGlobal2B = common dso_local dllexport global i32 0, align 4
|
||||
__attribute__((dllexport, dllimport)) int PrecedenceGlobal2A;
|
||||
__declspec(dllexport) __declspec(dllimport) int PrecedenceGlobal2B;
|
||||
|
||||
// CHECK-DAG: @PrecedenceGlobalRedecl1 = dllexport global i32 0, align 4
|
||||
// CHECK-DAG: @PrecedenceGlobalRedecl1 = dso_local dllexport global i32 0, align 4
|
||||
__declspec(dllexport) extern int PrecedenceGlobalRedecl1;
|
||||
__declspec(dllimport) int PrecedenceGlobalRedecl1 = 0;
|
||||
|
||||
// CHECK-DAG: @PrecedenceGlobalRedecl2 = common dllexport global i32 0, align 4
|
||||
// CHECK-DAG: @PrecedenceGlobalRedecl2 = common dso_local dllexport global i32 0, align 4
|
||||
__declspec(dllimport) extern int PrecedenceGlobalRedecl2;
|
||||
__declspec(dllexport) int PrecedenceGlobalRedecl2;
|
||||
|
||||
// CHECK-DAG: @PrecedenceGlobalMixed1 = dllexport global i32 1, align 4
|
||||
// CHECK-DAG: @PrecedenceGlobalMixed1 = dso_local dllexport global i32 1, align 4
|
||||
__attribute__((dllexport)) extern int PrecedenceGlobalMixed1;
|
||||
__declspec(dllimport) int PrecedenceGlobalMixed1 = 1;
|
||||
|
||||
// CHECK-DAG: @PrecedenceGlobalMixed2 = common dllexport global i32 0, align 4
|
||||
// CHECK-DAG: @PrecedenceGlobalMixed2 = common dso_local dllexport global i32 0, align 4
|
||||
__attribute__((dllimport)) extern int PrecedenceGlobalMixed2;
|
||||
__declspec(dllexport) int PrecedenceGlobalMixed2;
|
||||
|
||||
// CHECK-DAG: define dllexport void @precedence1A()
|
||||
// CHECK-DAG: define dllexport void @precedence1B()
|
||||
// CHECK-DAG: define dso_local dllexport void @precedence1A()
|
||||
// CHECK-DAG: define dso_local dllexport void @precedence1B()
|
||||
void __attribute__((dllimport, dllexport)) precedence1A(void) {}
|
||||
void __declspec(dllimport) __declspec(dllexport) precedence1B(void) {}
|
||||
|
||||
// CHECK-DAG: define dllexport void @precedence2A()
|
||||
// CHECK-DAG: define dllexport void @precedence2B()
|
||||
// CHECK-DAG: define dso_local dllexport void @precedence2A()
|
||||
// CHECK-DAG: define dso_local dllexport void @precedence2B()
|
||||
void __attribute__((dllexport, dllimport)) precedence2A(void) {}
|
||||
void __declspec(dllexport) __declspec(dllimport) precedence2B(void) {}
|
||||
|
||||
// CHECK-DAG: define dllexport void @precedenceRedecl1()
|
||||
// CHECK-DAG: define dso_local dllexport void @precedenceRedecl1()
|
||||
void __declspec(dllimport) precedenceRedecl1(void);
|
||||
void __declspec(dllexport) precedenceRedecl1(void) {}
|
||||
|
||||
// CHECK-DAG: define dllexport void @precedenceRedecl2()
|
||||
// CHECK-DAG: define dso_local dllexport void @precedenceRedecl2()
|
||||
void __declspec(dllexport) precedenceRedecl2(void);
|
||||
void __declspec(dllimport) precedenceRedecl2(void) {}
|
||||
|
||||
@ -39,14 +39,14 @@ USEVAR(GlobalRedecl2)
|
||||
|
||||
// NB: MSVC issues a warning and makes GlobalRedecl3 dllexport. We follow GCC
|
||||
// and drop the dllimport with a warning.
|
||||
// CHECK: @GlobalRedecl3 = external global i32
|
||||
// CHECK: @GlobalRedecl3 = external dso_local global i32
|
||||
__declspec(dllimport) extern int GlobalRedecl3;
|
||||
extern int GlobalRedecl3; // dllimport ignored
|
||||
USEVAR(GlobalRedecl3)
|
||||
|
||||
// Make sure this works even if the decl has been used before it's defined (PR20792).
|
||||
// MS: @GlobalRedecl4 = common dllexport global i32
|
||||
// GNU: @GlobalRedecl4 = common global i32
|
||||
// MS: @GlobalRedecl4 = common dso_local dllexport global i32
|
||||
// GNU: @GlobalRedecl4 = common dso_local global i32
|
||||
__declspec(dllimport) extern int GlobalRedecl4;
|
||||
USEVAR(GlobalRedecl4)
|
||||
int GlobalRedecl4; // dllimport ignored
|
||||
@ -76,22 +76,22 @@ int functionScope() {
|
||||
__declspec(dllimport) void decl(void);
|
||||
|
||||
// Initialize use_decl with the address of the thunk.
|
||||
// CHECK-DAG: @use_decl = global void ()* @decl
|
||||
// CHECK-DAG: @use_decl = dso_local global void ()* @decl
|
||||
void (*use_decl)(void) = &decl;
|
||||
|
||||
// Import inline function.
|
||||
// MS-DAG: declare dllimport void @inlineFunc()
|
||||
// MO1-DAG: define available_externally dllimport void @inlineFunc()
|
||||
// GNU-DAG: declare void @inlineFunc()
|
||||
// GO1-DAG: define available_externally void @inlineFunc()
|
||||
// GNU-DAG: declare dso_local void @inlineFunc()
|
||||
// GO1-DAG: define available_externally dso_local void @inlineFunc()
|
||||
__declspec(dllimport) inline void inlineFunc(void) {}
|
||||
USE(inlineFunc)
|
||||
|
||||
// inline attributes
|
||||
// MS-DAG: declare dllimport void @noinline()
|
||||
// MO1-DAG: define available_externally dllimport void @noinline()
|
||||
// GNU-DAG: declare void @noinline()
|
||||
// GO1-DAG: define available_externally void @noinline()
|
||||
// GNU-DAG: declare dso_local void @noinline()
|
||||
// GO1-DAG: define available_externally dso_local void @noinline()
|
||||
// CHECK-NOT: @alwaysInline()
|
||||
// O1-NOT: @alwaysInline()
|
||||
__declspec(dllimport) __attribute__((noinline)) inline void noinline(void) {}
|
||||
@ -107,20 +107,20 @@ USE(redecl1)
|
||||
|
||||
// NB: MSVC issues a warning and makes redecl2/redecl3 dllexport. We follow GCC
|
||||
// and drop the dllimport with a warning.
|
||||
// CHECK-DAG: declare void @redecl2()
|
||||
// CHECK-DAG: declare dso_local void @redecl2()
|
||||
__declspec(dllimport) void redecl2(void);
|
||||
void redecl2(void);
|
||||
USE(redecl2)
|
||||
|
||||
// MS: define dllexport void @redecl3()
|
||||
// GNU: define void @redecl3()
|
||||
// MS: define dso_local dllexport void @redecl3()
|
||||
// GNU: define dso_local void @redecl3()
|
||||
__declspec(dllimport) void redecl3(void);
|
||||
void redecl3(void) {} // dllimport ignored
|
||||
USE(redecl3)
|
||||
|
||||
// Make sure this works even if the decl is used before it's defined (PR20792).
|
||||
// MS: define dllexport void @redecl4()
|
||||
// GNU: define void @redecl4()
|
||||
// MS: define dso_local dllexport void @redecl4()
|
||||
// GNU: define dso_local void @redecl4()
|
||||
__declspec(dllimport) void redecl4(void);
|
||||
USE(redecl4)
|
||||
void redecl4(void) {} // dllimport ignored
|
||||
|
||||
@ -1,3 +1,14 @@
|
||||
// RUN: %clang_cc1 -triple x86_64-pc-win32 -emit-llvm %s -o - | FileCheck --check-prefix=COFF %s
|
||||
// COFF-DAG: @bar = external dso_local global i32
|
||||
// COFF-DAG: @weak_bar = extern_weak dso_local global i32
|
||||
// COFF-DAG: declare dso_local void @foo()
|
||||
// COFF-DAG: @baz = dso_local global i32 42
|
||||
// COFF-DAG: define dso_local i32* @zed()
|
||||
// COFF-DAG: @thread_var = external dso_local thread_local global i32
|
||||
// COFF-DAG: @local_thread_var = dso_local thread_local global i32 42
|
||||
// COFF-DAG: @import_var = external dllimport global i32
|
||||
// COFF-DAG: declare dllimport void @import_func()
|
||||
|
||||
// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -mrelocation-model static %s -o - | FileCheck --check-prefix=STATIC %s
|
||||
// STATIC-DAG: @bar = external dso_local global i32
|
||||
// STATIC-DAG: @weak_bar = extern_weak dso_local global i32
|
||||
@ -6,6 +17,8 @@
|
||||
// STATIC-DAG: define dso_local i32* @zed()
|
||||
// STATIC-DAG: @thread_var = external thread_local global i32
|
||||
// STATIC-DAG: @local_thread_var = dso_local thread_local global i32 42
|
||||
// STATIC-DAG: @import_var = external dso_local global i32
|
||||
// STATIC-DAG: declare dso_local void @import_func()
|
||||
|
||||
// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -pic-is-pie -mpie-copy-relocations %s -o - | FileCheck --check-prefix=PIE-COPY %s
|
||||
// PIE-COPY-DAG: @bar = external dso_local global i32
|
||||
@ -15,6 +28,8 @@
|
||||
// PIE-COPY-DAG: define dso_local i32* @zed()
|
||||
// PIE-COPY-DAG: @thread_var = external thread_local global i32
|
||||
// PIE-COPY-DAG: @local_thread_var = dso_local thread_local global i32 42
|
||||
// PIE-COPY-DAG: @import_var = external dso_local global i32
|
||||
// PIE-COPY-DAG: declare void @import_func()
|
||||
|
||||
// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -pic-is-pie %s -o - | FileCheck --check-prefix=PIE %s
|
||||
// PIE-DAG: @bar = external global i32
|
||||
@ -24,6 +39,8 @@
|
||||
// PIE-DAG: define dso_local i32* @zed()
|
||||
// PIE-DAG: @thread_var = external thread_local global i32
|
||||
// PIE-DAG: @local_thread_var = dso_local thread_local global i32 42
|
||||
// PIE-DAG: @import_var = external global i32
|
||||
// PIE-DAG: declare void @import_func()
|
||||
|
||||
// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -mrelocation-model static -fno-plt %s -o - | FileCheck --check-prefix=NOPLT %s
|
||||
// NOPLT-DAG: @bar = external dso_local global i32
|
||||
@ -33,6 +50,8 @@
|
||||
// NOPLT-DAG: define dso_local i32* @zed()
|
||||
// NOPLT-DAG: @thread_var = external thread_local global i32
|
||||
// NOPLT-DAG: @local_thread_var = dso_local thread_local global i32 42
|
||||
// NOPLT-DAG: @import_var = external dso_local global i32
|
||||
// NOPLT-DAG: declare void @import_func()
|
||||
|
||||
// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -fno-plt -pic-is-pie -mpie-copy-relocations %s -o - | FileCheck --check-prefix=PIE-COPY-NOPLT %s
|
||||
// PIE-COPY-NOPLT-DAG: @bar = external dso_local global i32
|
||||
@ -42,6 +61,8 @@
|
||||
// PIE-COPY-NOPLT-DAG: define dso_local i32* @zed()
|
||||
// PIE-COPY-NOPLT-DAG: @thread_var = external thread_local global i32
|
||||
// PIE-COPY-NOPLT-DAG: @local_thread_var = dso_local thread_local global i32 42
|
||||
// PIE-COPY-NOPLT-DAG: @import_var = external dso_local global i32
|
||||
// PIE-COPY-NOPLT-DAG: declare void @import_func()
|
||||
|
||||
// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm -pic-is-pie -fno-plt %s -o - | FileCheck --check-prefix=PIE-NO-PLT %s
|
||||
// RUN: %clang_cc1 -triple powerpc64le-pc-linux -emit-llvm -mrelocation-model static %s -o - | FileCheck --check-prefix=PIE-NO-PLT %s
|
||||
@ -52,6 +73,8 @@
|
||||
// PIE-NO-PLT-DAG: define dso_local i32* @zed()
|
||||
// PIE-NO-PLT-DAG: @thread_var = external thread_local global i32
|
||||
// PIE-NO-PLT-DAG: @local_thread_var = dso_local thread_local global i32 42
|
||||
// PIE-NO-PLT-DAG: @import_var = external global i32
|
||||
// PIE-NO-PLT-DAG: declare void @import_func()
|
||||
|
||||
// RUN: %clang_cc1 -triple x86_64-pc-linux -emit-llvm %s -o - | FileCheck --check-prefix=SHARED %s
|
||||
// SHARED-DAG: @bar = external global i32
|
||||
@ -61,6 +84,16 @@
|
||||
// SHARED-DAG: define i32* @zed()
|
||||
// SHARED-DAG: @thread_var = external thread_local global i32
|
||||
// SHARED-DAG: @local_thread_var = thread_local global i32 42
|
||||
// PIE-NO-PLT-DAG: @import_var = external global i32
|
||||
// PIE-NO-PLT-DAG: declare void @import_func()
|
||||
|
||||
__attribute__((dllimport)) extern int import_var;
|
||||
__attribute__((dllimport)) void import_func(void);
|
||||
|
||||
int *use_import() {
|
||||
import_func();
|
||||
return &import_var;
|
||||
}
|
||||
|
||||
extern int bar;
|
||||
__attribute__((weak)) extern int weak_bar;
|
||||
|
||||
@ -13,7 +13,7 @@ void basic_finally(void) {
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define void @basic_finally()
|
||||
// CHECK-LABEL: define dso_local void @basic_finally()
|
||||
// CHECK: invoke void @might_crash()
|
||||
// CHECK: to label %[[invoke_cont:[^ ]*]] unwind label %[[lpad:[^ ]*]]
|
||||
//
|
||||
@ -53,7 +53,7 @@ l:
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define void @label_in_finally()
|
||||
// CHECK-LABEL: define dso_local void @label_in_finally()
|
||||
// CHECK: invoke void @might_crash()
|
||||
// CHECK: to label %[[invoke_cont:[^ ]*]] unwind label %[[lpad:[^ ]*]]
|
||||
//
|
||||
@ -81,7 +81,7 @@ void use_abnormal_termination(void) {
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define void @use_abnormal_termination()
|
||||
// CHECK-LABEL: define dso_local void @use_abnormal_termination()
|
||||
// CHECK: invoke void @might_crash()
|
||||
// CHECK: to label %[[invoke_cont:[^ ]*]] unwind label %[[lpad:[^ ]*]]
|
||||
//
|
||||
@ -110,7 +110,7 @@ void noreturn_noop_finally() {
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define void @noreturn_noop_finally()
|
||||
// CHECK-LABEL: define dso_local void @noreturn_noop_finally()
|
||||
// CHECK: call void @"\01?fin$0@0@noreturn_noop_finally@@"({{.*}})
|
||||
// CHECK: ret void
|
||||
|
||||
@ -127,7 +127,7 @@ void noreturn_finally() {
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define void @noreturn_finally()
|
||||
// CHECK-LABEL: define dso_local void @noreturn_finally()
|
||||
// CHECK: invoke void @might_crash()
|
||||
// CHECK: to label %[[cont:[^ ]*]] unwind label %[[lpad:[^ ]*]]
|
||||
//
|
||||
@ -151,7 +151,7 @@ int finally_with_return() {
|
||||
} __finally {
|
||||
}
|
||||
}
|
||||
// CHECK-LABEL: define i32 @finally_with_return()
|
||||
// CHECK-LABEL: define dso_local i32 @finally_with_return()
|
||||
// CHECK: call void @"\01?fin$0@0@finally_with_return@@"({{.*}})
|
||||
// CHECK-NEXT: ret i32 42
|
||||
|
||||
@ -173,7 +173,7 @@ int nested___finally___finally() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define i32 @nested___finally___finally
|
||||
// CHECK-LABEL: define dso_local i32 @nested___finally___finally
|
||||
// CHECK: invoke void @"\01?fin$1@0@nested___finally___finally@@"({{.*}})
|
||||
// CHECK: to label %[[outercont:[^ ]*]] unwind label %[[lpad:[^ ]*]]
|
||||
//
|
||||
@ -208,7 +208,7 @@ int nested___finally___finally_with_eh_edge() {
|
||||
}
|
||||
return 912;
|
||||
}
|
||||
// CHECK-LABEL: define i32 @nested___finally___finally_with_eh_edge
|
||||
// CHECK-LABEL: define dso_local i32 @nested___finally___finally_with_eh_edge
|
||||
// CHECK: invoke void @might_crash()
|
||||
// CHECK-NEXT: to label %[[invokecont:[^ ]*]] unwind label %[[lpad1:[^ ]*]]
|
||||
//
|
||||
@ -252,7 +252,7 @@ void finally_within_finally() {
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define void @finally_within_finally(
|
||||
// CHECK-LABEL: define dso_local void @finally_within_finally(
|
||||
// CHECK: invoke void @might_crash(
|
||||
|
||||
// CHECK: call void @"\01?fin$0@0@finally_within_finally@@"(
|
||||
|
||||
@ -17,7 +17,7 @@ int __leave_with___except_simple() {
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
// CHECK-LABEL: define i32 @__leave_with___except_simple()
|
||||
// CHECK-LABEL: define dso_local i32 @__leave_with___except_simple()
|
||||
// CHECK: store i32 15, i32* %myres
|
||||
// CHECK-NEXT: br label %[[tryleave:[^ ]*]]
|
||||
// CHECK-NOT: store i32 23
|
||||
@ -37,7 +37,7 @@ int __leave_with___except() {
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
// CHECK-LABEL: define i32 @__leave_with___except()
|
||||
// CHECK-LABEL: define dso_local i32 @__leave_with___except()
|
||||
// CHECK: invoke void @g()
|
||||
// CHECK-NEXT: to label %[[cont:.*]] unwind label %{{.*}}
|
||||
// For __excepts, instead of an explicit __try.__leave label, we could use
|
||||
@ -69,7 +69,7 @@ int __leave_with___finally_simple() {
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
// CHECK-LABEL: define i32 @__leave_with___finally_simple()
|
||||
// CHECK-LABEL: define dso_local i32 @__leave_with___finally_simple()
|
||||
// CHECK: store i32 15, i32* %myres
|
||||
// CHECK-NEXT: br label %[[tryleave:[^ ]*]]
|
||||
// CHECK-NOT: store i32 23
|
||||
@ -89,7 +89,7 @@ int __leave_with___finally_noreturn() {
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
// CHECK-LABEL: define i32 @__leave_with___finally_noreturn()
|
||||
// CHECK-LABEL: define dso_local i32 @__leave_with___finally_noreturn()
|
||||
// CHECK: store i32 15, i32* %myres
|
||||
// CHECK-NEXT: br label %[[tryleave:[^ ]*]]
|
||||
// CHECK-NOT: store i32 23
|
||||
@ -109,7 +109,7 @@ int __leave_with___finally() {
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
// CHECK-LABEL: define i32 @__leave_with___finally()
|
||||
// CHECK-LABEL: define dso_local i32 @__leave_with___finally()
|
||||
// CHECK: invoke void @g()
|
||||
// CHECK-NEXT: to label %[[cont:.*]] unwind label %{{.*}}
|
||||
// For __finally, there needs to be an explicit __try.__leave, because
|
||||
@ -142,7 +142,7 @@ int nested___except___finally() {
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
// CHECK-LABEL: define i32 @nested___except___finally()
|
||||
// CHECK-LABEL: define dso_local i32 @nested___except___finally()
|
||||
|
||||
// CHECK-LABEL: invoke void @g()
|
||||
// CHECK-NEXT: to label %[[g1_cont1:.*]] unwind label %[[g1_lpad:.*]]
|
||||
@ -194,7 +194,7 @@ int nested___except___except() {
|
||||
return 1;
|
||||
}
|
||||
// The order of basic blocks in the below doesn't matter.
|
||||
// CHECK-LABEL: define i32 @nested___except___except()
|
||||
// CHECK-LABEL: define dso_local i32 @nested___except___except()
|
||||
|
||||
// CHECK-LABEL: invoke void @g()
|
||||
// CHECK-NEXT: to label %[[g1_cont:.*]] unwind label %[[g1_lpad:.*]]
|
||||
@ -247,7 +247,7 @@ int nested___finally___except() {
|
||||
return 1;
|
||||
}
|
||||
// The order of basic blocks in the below doesn't matter.
|
||||
// CHECK-LABEL: define i32 @nested___finally___except()
|
||||
// CHECK-LABEL: define dso_local i32 @nested___finally___except()
|
||||
|
||||
// CHECK-LABEL: invoke void @g()
|
||||
// CHECK-NEXT: to label %[[g1_cont:.*]] unwind label %[[g1_lpad:.*]]
|
||||
@ -302,7 +302,7 @@ int nested___finally___finally() {
|
||||
return 1;
|
||||
}
|
||||
// The order of basic blocks in the below doesn't matter.
|
||||
// CHECK-LABEL: define i32 @nested___finally___finally()
|
||||
// CHECK-LABEL: define dso_local i32 @nested___finally___finally()
|
||||
|
||||
// CHECK: invoke void @g()
|
||||
// CHECK-NEXT: to label %[[g1_cont:.*]] unwind label %[[g1_lpad:.*]]
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
void try_body(int numerator, int denominator, int *myres) {
|
||||
*myres = numerator / denominator;
|
||||
}
|
||||
// CHECK-LABEL: define void @try_body(i32 %numerator, i32 %denominator, i32* %myres)
|
||||
// CHECK-LABEL: define dso_local void @try_body(i32 %numerator, i32 %denominator, i32* %myres)
|
||||
// CHECK: sdiv i32
|
||||
// CHECK: store i32 %{{.*}}, i32*
|
||||
// CHECK: ret void
|
||||
@ -27,7 +27,7 @@ int safe_div(int numerator, int denominator, int *res) {
|
||||
return success;
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define i32 @safe_div(i32 %numerator, i32 %denominator, i32* %res)
|
||||
// CHECK-LABEL: define dso_local i32 @safe_div(i32 %numerator, i32 %denominator, i32* %res)
|
||||
// X64-SAME: personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*)
|
||||
// X86-SAME: personality i8* bitcast (i32 (...)* @_except_handler3 to i8*)
|
||||
// CHECK: invoke void @try_body(i32 %{{.*}}, i32 %{{.*}}, i32* %{{.*}}) #[[NOINLINE:[0-9]+]]
|
||||
@ -57,9 +57,9 @@ int safe_div(int numerator, int denominator, int *res) {
|
||||
// X86: ret i32 1
|
||||
|
||||
// Mingw uses msvcrt, so it can also use _except_handler3.
|
||||
// X86-GNU-LABEL: define i32 @safe_div(i32 %numerator, i32 %denominator, i32* %res)
|
||||
// X86-GNU-LABEL: define dso_local i32 @safe_div(i32 %numerator, i32 %denominator, i32* %res)
|
||||
// X86-GNU-SAME: personality i8* bitcast (i32 (...)* @_except_handler3 to i8*)
|
||||
// X64-GNU-LABEL: define i32 @safe_div(i32 %numerator, i32 %denominator, i32* %res)
|
||||
// X64-GNU-LABEL: define dso_local i32 @safe_div(i32 %numerator, i32 %denominator, i32* %res)
|
||||
// X64-GNU-SAME: personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*)
|
||||
|
||||
void j(void);
|
||||
@ -74,7 +74,7 @@ int filter_expr_capture(void) {
|
||||
return r;
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define i32 @filter_expr_capture()
|
||||
// CHECK-LABEL: define dso_local i32 @filter_expr_capture()
|
||||
// X64-SAME: personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*)
|
||||
// X86-SAME: personality i8* bitcast (i32 (...)* @_except_handler3 to i8*)
|
||||
// X64: call void (...) @llvm.localescape(i32* %[[r:[^ ,]*]])
|
||||
@ -114,7 +114,7 @@ int nested_try(void) {
|
||||
}
|
||||
return r;
|
||||
}
|
||||
// CHECK-LABEL: define i32 @nested_try()
|
||||
// CHECK-LABEL: define dso_local i32 @nested_try()
|
||||
// X64-SAME: personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*)
|
||||
// X86-SAME: personality i8* bitcast (i32 (...)* @_except_handler3 to i8*)
|
||||
// CHECK: store i32 42, i32* %[[r:[^ ,]*]]
|
||||
@ -174,7 +174,7 @@ int basic_finally(int g) {
|
||||
}
|
||||
return g;
|
||||
}
|
||||
// CHECK-LABEL: define i32 @basic_finally(i32 %g)
|
||||
// CHECK-LABEL: define dso_local i32 @basic_finally(i32 %g)
|
||||
// X64-SAME: personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*)
|
||||
// X86-SAME: personality i8* bitcast (i32 (...)* @_except_handler3 to i8*)
|
||||
// CHECK: %[[g_addr:[^ ]*]] = alloca i32, align 4
|
||||
@ -211,7 +211,7 @@ int except_return(void) {
|
||||
return 42;
|
||||
}
|
||||
}
|
||||
// CHECK-LABEL: define i32 @except_return()
|
||||
// CHECK-LABEL: define dso_local i32 @except_return()
|
||||
// CHECK: %[[tmp:[^ ]*]] = invoke i32 @returns_int()
|
||||
// CHECK: to label %[[cont:[^ ]*]] unwind label %[[catchpad:[^ ]*]]
|
||||
//
|
||||
@ -240,7 +240,7 @@ void finally_capture_twice(int x) {
|
||||
}
|
||||
}
|
||||
//
|
||||
// CHECK-LABEL: define void @finally_capture_twice(
|
||||
// CHECK-LABEL: define dso_local void @finally_capture_twice(
|
||||
// CHECK: [[X:%.*]] = alloca i32, align 4
|
||||
// CHECK: call void (...) @llvm.localescape(i32* [[X]])
|
||||
// CHECK-NEXT: store i32 {{.*}}, i32* [[X]], align 4
|
||||
@ -267,7 +267,7 @@ int exception_code_in_except(void) {
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define i32 @exception_code_in_except()
|
||||
// CHECK-LABEL: define dso_local i32 @exception_code_in_except()
|
||||
// CHECK: %[[ret_slot:[^ ]*]] = alloca i32
|
||||
// CHECK: %[[code_slot:[^ ]*]] = alloca i32
|
||||
// CHECK: invoke void @try_body(i32 0, i32 0, i32* null)
|
||||
|
||||
@ -5,10 +5,10 @@ typedef __attribute__(( ext_vector_type(2) )) float float2;
|
||||
typedef __attribute__(( ext_vector_type(4) )) int int4;
|
||||
typedef __attribute__(( ext_vector_type(4) )) unsigned int uint4;
|
||||
|
||||
// CHECK: @foo = global <4 x float> <float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00>
|
||||
// CHECK: @foo = {{(dso_local )?}}global <4 x float> <float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00>
|
||||
float4 foo = (float4){ 1.0, 2.0, 3.0, 4.0 };
|
||||
|
||||
// CHECK: @bar = constant <4 x float> <float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 0x7FF0000000000000>
|
||||
// CHECK: @bar = {{(dso_local )?}}constant <4 x float> <float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 0x7FF0000000000000>
|
||||
const float4 bar = (float4){ 1.0, 2.0, 3.0, __builtin_inff() };
|
||||
|
||||
// CHECK: @test1
|
||||
|
||||
@ -22,5 +22,5 @@ L1:
|
||||
return;
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define void @f
|
||||
// CHECK-LABEL: define {{(dso_local )?}}void @f
|
||||
// CHECK-NOT: cleanup
|
||||
|
||||
@ -61,13 +61,13 @@
|
||||
// RUN: %clang_cc1 %s -triple i386-pc-win32 -O1 -disable-llvm-passes -emit-llvm -o - -std=c99 | FileCheck %s --check-prefix=CHECK4
|
||||
// RUN: %clang_cc1 %s -triple i386-pc-win32 -fexperimental-new-pass-manager -O1 -disable-llvm-passes -emit-llvm -o - -std=c99 | FileCheck %s --check-prefix=CHECK4
|
||||
// CHECK4-NOT: define weak_odr void @_Exit(
|
||||
// CHECK4-LABEL: define weak_odr i32 @ei()
|
||||
// CHECK4-LABEL: define i32 @bar()
|
||||
// CHECK4-LABEL: define weak_odr dso_local i32 @ei()
|
||||
// CHECK4-LABEL: define dso_local i32 @bar()
|
||||
// CHECK4-NOT: unreferenced1
|
||||
// CHECK4-LABEL: define weak_odr void @unreferenced2()
|
||||
// CHECK4-LABEL: define void @gnu_inline()
|
||||
// CHECK4-LABEL: define linkonce_odr i32 @foo()
|
||||
// CHECK4-LABEL: define available_externally void @gnu_ei_inline()
|
||||
// CHECK4-LABEL: define weak_odr dso_local void @unreferenced2()
|
||||
// CHECK4-LABEL: define dso_local void @gnu_inline()
|
||||
// CHECK4-LABEL: define linkonce_odr dso_local i32 @foo()
|
||||
// CHECK4-LABEL: define available_externally dso_local void @gnu_ei_inline()
|
||||
|
||||
__attribute__((noreturn)) void __cdecl _exit(int _Code);
|
||||
__inline void __cdecl _Exit(int status) { _exit(status); }
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
// RUN: %clang_cc1 -emit-llvm %s -o - -triple=x86_64-pc-win32 | FileCheck %s
|
||||
|
||||
// CHECK: define void @"\01?f@@$$J0YAXP6AX@Z@Z"
|
||||
// CHECK: define dso_local void @"\01?f@@$$J0YAXP6AX@Z@Z"
|
||||
__attribute__((overloadable)) void f(void (*x)()) {}
|
||||
|
||||
// CHECK: define void @f
|
||||
// CHECK: define dso_local void @f
|
||||
void f(void (*x)(int)) {}
|
||||
|
||||
// CHECK: define void @g
|
||||
// CHECK: define dso_local void @g
|
||||
void g(void (*x)(int)) {}
|
||||
|
||||
// CHECK: define void @"\01?g@@$$J0YAXP6AX@Z@Z"
|
||||
// CHECK: define dso_local void @"\01?g@@$$J0YAXP6AX@Z@Z"
|
||||
__attribute__((overloadable)) void g(void (*x)()) {}
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
// RUN: %clang_cc1 -emit-llvm -mrtd %s -o - -triple=i386-mingw32 | FileCheck %s
|
||||
|
||||
void f1(void) {}
|
||||
// CHECK: define x86_stdcallcc void @"\01_f1@0"
|
||||
// CHECK: define dso_local x86_stdcallcc void @"\01_f1@0"
|
||||
|
||||
void __stdcall f2(void) {}
|
||||
// CHECK: define x86_stdcallcc void @"\01_f2@0"
|
||||
// CHECK: define dso_local x86_stdcallcc void @"\01_f2@0"
|
||||
|
||||
void __fastcall f3(void) {}
|
||||
// CHECK: define x86_fastcallcc void @"\01@f3@0"
|
||||
// CHECK: define dso_local x86_fastcallcc void @"\01@f3@0"
|
||||
|
||||
@ -11,73 +11,73 @@
|
||||
// ELF64: target datalayout = "e-m:e-{{.*}}"
|
||||
|
||||
void __stdcall f1(void) {}
|
||||
// CHECK: define x86_stdcallcc void @"\01_f1@0"
|
||||
// X64: define void @f1(
|
||||
// CHECK: define dso_local x86_stdcallcc void @"\01_f1@0"
|
||||
// X64: define dso_local void @f1(
|
||||
// ELF32: define x86_stdcallcc void @"\01_f1@0"
|
||||
// ELF64: define void @f1(
|
||||
|
||||
void __fastcall f2(void) {}
|
||||
// CHECK: define x86_fastcallcc void @"\01@f2@0"
|
||||
// X64: define void @f2(
|
||||
// CHECK: define dso_local x86_fastcallcc void @"\01@f2@0"
|
||||
// X64: define dso_local void @f2(
|
||||
// ELF32: define x86_fastcallcc void @"\01@f2@0"
|
||||
// ELF64: define void @f2(
|
||||
|
||||
void __stdcall f3() {}
|
||||
// CHECK: define x86_stdcallcc void @"\01_f3@0"
|
||||
// X64: define void @f3(
|
||||
// CHECK: define dso_local x86_stdcallcc void @"\01_f3@0"
|
||||
// X64: define dso_local void @f3(
|
||||
|
||||
void __fastcall f4(char a) {}
|
||||
// CHECK: define x86_fastcallcc void @"\01@f4@4"
|
||||
// X64: define void @f4(
|
||||
// CHECK: define dso_local x86_fastcallcc void @"\01@f4@4"
|
||||
// X64: define dso_local void @f4(
|
||||
|
||||
void __fastcall f5(short a) {}
|
||||
// CHECK: define x86_fastcallcc void @"\01@f5@4"
|
||||
// X64: define void @f5(
|
||||
// CHECK: define dso_local x86_fastcallcc void @"\01@f5@4"
|
||||
// X64: define dso_local void @f5(
|
||||
|
||||
void __fastcall f6(int a) {}
|
||||
// CHECK: define x86_fastcallcc void @"\01@f6@4"
|
||||
// X64: define void @f6(
|
||||
// CHECK: define dso_local x86_fastcallcc void @"\01@f6@4"
|
||||
// X64: define dso_local void @f6(
|
||||
|
||||
void __fastcall f7(long a) {}
|
||||
// CHECK: define x86_fastcallcc void @"\01@f7@4"
|
||||
// X64: define void @f7(
|
||||
// CHECK: define dso_local x86_fastcallcc void @"\01@f7@4"
|
||||
// X64: define dso_local void @f7(
|
||||
|
||||
void __fastcall f8(long long a) {}
|
||||
// CHECK: define x86_fastcallcc void @"\01@f8@8"
|
||||
// X64: define void @f8(
|
||||
// CHECK: define dso_local x86_fastcallcc void @"\01@f8@8"
|
||||
// X64: define dso_local void @f8(
|
||||
|
||||
void __fastcall f9(long long a, char b, char c, short d) {}
|
||||
// CHECK: define x86_fastcallcc void @"\01@f9@20"(i64 %a, i8 signext %b, i8 signext %c, i16 signext %d)
|
||||
// X64: define void @f9(
|
||||
// CHECK: define dso_local x86_fastcallcc void @"\01@f9@20"(i64 %a, i8 signext %b, i8 signext %c, i16 signext %d)
|
||||
// X64: define dso_local void @f9(
|
||||
|
||||
void f12(void) {}
|
||||
// CHECK: define void @f12(
|
||||
// X64: define void @f12(
|
||||
// CHECK: define dso_local void @f12(
|
||||
// X64: define dso_local void @f12(
|
||||
|
||||
void __vectorcall v1(void) {}
|
||||
// CHECK: define x86_vectorcallcc void @"\01v1@@0"(
|
||||
// X64: define x86_vectorcallcc void @"\01v1@@0"(
|
||||
// CHECK: define dso_local x86_vectorcallcc void @"\01v1@@0"(
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01v1@@0"(
|
||||
// ELF32: define x86_vectorcallcc void @"\01v1@@0"(
|
||||
// ELF64: define x86_vectorcallcc void @"\01v1@@0"(
|
||||
|
||||
void __vectorcall v2(char a) {}
|
||||
// CHECK: define x86_vectorcallcc void @"\01v2@@4"(
|
||||
// X64: define x86_vectorcallcc void @"\01v2@@8"(
|
||||
// CHECK: define dso_local x86_vectorcallcc void @"\01v2@@4"(
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01v2@@8"(
|
||||
// ELF32: define x86_vectorcallcc void @"\01v2@@4"(
|
||||
// ELF64: define x86_vectorcallcc void @"\01v2@@8"(
|
||||
|
||||
void __vectorcall v3(short a) {}
|
||||
// CHECK: define x86_vectorcallcc void @"\01v3@@4"(
|
||||
// X64: define x86_vectorcallcc void @"\01v3@@8"(
|
||||
// CHECK: define dso_local x86_vectorcallcc void @"\01v3@@4"(
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01v3@@8"(
|
||||
|
||||
void __vectorcall v4(int a) {}
|
||||
// CHECK: define x86_vectorcallcc void @"\01v4@@4"(
|
||||
// X64: define x86_vectorcallcc void @"\01v4@@8"(
|
||||
// CHECK: define dso_local x86_vectorcallcc void @"\01v4@@4"(
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01v4@@8"(
|
||||
|
||||
void __vectorcall v5(long long a) {}
|
||||
// CHECK: define x86_vectorcallcc void @"\01v5@@8"(
|
||||
// X64: define x86_vectorcallcc void @"\01v5@@8"(
|
||||
// CHECK: define dso_local x86_vectorcallcc void @"\01v5@@8"(
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01v5@@8"(
|
||||
|
||||
void __vectorcall v6(char a, char b) {}
|
||||
// CHECK: define x86_vectorcallcc void @"\01v6@@8"(
|
||||
// X64: define x86_vectorcallcc void @"\01v6@@16"(
|
||||
// CHECK: define dso_local x86_vectorcallcc void @"\01v6@@8"(
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01v6@@16"(
|
||||
|
||||
@ -3,12 +3,12 @@
|
||||
void __fastcall f1(void);
|
||||
void __stdcall f2(void);
|
||||
void __fastcall f4(void) {
|
||||
// CHECK-LABEL: define void @f4()
|
||||
// CHECK-LABEL: define dso_local void @f4()
|
||||
f1();
|
||||
// CHECK: call void @f1()
|
||||
}
|
||||
void __stdcall f5(void) {
|
||||
// CHECK-LABEL: define void @f5()
|
||||
// CHECK-LABEL: define dso_local void @f5()
|
||||
f2();
|
||||
// CHECK: call void @f2()
|
||||
}
|
||||
|
||||
@ -10,32 +10,32 @@ struct {
|
||||
long double ldb;
|
||||
} agggregate_LD = {};
|
||||
// GNU32: %struct.anon = type { i8, x86_fp80 }
|
||||
// GNU32: @agggregate_LD = global %struct.anon zeroinitializer, align 4
|
||||
// GNU32: @agggregate_LD = dso_local global %struct.anon zeroinitializer, align 4
|
||||
// GNU64: %struct.anon = type { i8, x86_fp80 }
|
||||
// GNU64: @agggregate_LD = global %struct.anon zeroinitializer, align 16
|
||||
// GNU64: @agggregate_LD = dso_local global %struct.anon zeroinitializer, align 16
|
||||
// MSC64: %struct.anon = type { i8, double }
|
||||
// MSC64: @agggregate_LD = global %struct.anon zeroinitializer, align 8
|
||||
// MSC64: @agggregate_LD = dso_local global %struct.anon zeroinitializer, align 8
|
||||
|
||||
long double dataLD = 1.0L;
|
||||
// GNU32: @dataLD = global x86_fp80 0xK3FFF8000000000000000, align 4
|
||||
// GNU64: @dataLD = global x86_fp80 0xK3FFF8000000000000000, align 16
|
||||
// MSC64: @dataLD = global double 1.000000e+00, align 8
|
||||
// GNU32: @dataLD = dso_local global x86_fp80 0xK3FFF8000000000000000, align 4
|
||||
// GNU64: @dataLD = dso_local global x86_fp80 0xK3FFF8000000000000000, align 16
|
||||
// MSC64: @dataLD = dso_local global double 1.000000e+00, align 8
|
||||
|
||||
long double _Complex dataLDC = {1.0L, 1.0L};
|
||||
// GNU32: @dataLDC = global { x86_fp80, x86_fp80 } { x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000 }, align 4
|
||||
// GNU64: @dataLDC = global { x86_fp80, x86_fp80 } { x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000 }, align 16
|
||||
// MSC64: @dataLDC = global { double, double } { double 1.000000e+00, double 1.000000e+00 }, align 8
|
||||
// GNU32: @dataLDC = dso_local global { x86_fp80, x86_fp80 } { x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000 }, align 4
|
||||
// GNU64: @dataLDC = dso_local global { x86_fp80, x86_fp80 } { x86_fp80 0xK3FFF8000000000000000, x86_fp80 0xK3FFF8000000000000000 }, align 16
|
||||
// MSC64: @dataLDC = dso_local global { double, double } { double 1.000000e+00, double 1.000000e+00 }, align 8
|
||||
|
||||
long double TestLD(long double x) {
|
||||
return x * x;
|
||||
}
|
||||
// GNU32: define x86_fp80 @TestLD(x86_fp80 %x)
|
||||
// GNU64: define void @TestLD(x86_fp80* noalias sret %agg.result, x86_fp80*)
|
||||
// MSC64: define double @TestLD(double %x)
|
||||
// GNU32: define dso_local x86_fp80 @TestLD(x86_fp80 %x)
|
||||
// GNU64: define dso_local void @TestLD(x86_fp80* noalias sret %agg.result, x86_fp80*)
|
||||
// MSC64: define dso_local double @TestLD(double %x)
|
||||
|
||||
long double _Complex TestLDC(long double _Complex x) {
|
||||
return x * x;
|
||||
}
|
||||
// GNU32: define void @TestLDC({ x86_fp80, x86_fp80 }* noalias sret %agg.result, { x86_fp80, x86_fp80 }* byval align 4 %x)
|
||||
// GNU64: define void @TestLDC({ x86_fp80, x86_fp80 }* noalias sret %agg.result, { x86_fp80, x86_fp80 }* %x)
|
||||
// MSC64: define void @TestLDC({ double, double }* noalias sret %agg.result, { double, double }* %x)
|
||||
// GNU32: define dso_local void @TestLDC({ x86_fp80, x86_fp80 }* noalias sret %agg.result, { x86_fp80, x86_fp80 }* byval align 4 %x)
|
||||
// GNU64: define dso_local void @TestLDC({ x86_fp80, x86_fp80 }* noalias sret %agg.result, { x86_fp80, x86_fp80 }* %x)
|
||||
// MSC64: define dso_local void @TestLDC({ double, double }* noalias sret %agg.result, { double, double }* %x)
|
||||
|
||||
@ -1,25 +1,25 @@
|
||||
// RUN: %clang_cc1 -triple i386-pc-win32 -emit-llvm -fms-compatibility -o - < %s | FileCheck %s
|
||||
|
||||
char __declspec(align(8192)) x;
|
||||
// CHECK-DAG: @x = global i8 0, align 8192
|
||||
// CHECK-DAG: @x = dso_local global i8 0, align 8192
|
||||
|
||||
typedef char __declspec(align(8192)) T;
|
||||
T y;
|
||||
// CHECK-DAG: @y = global i8 0, align 8192
|
||||
// CHECK-DAG: @y = dso_local global i8 0, align 8192
|
||||
|
||||
T __declspec(align(8192)) z;
|
||||
// CHECK-DAG: @z = global i8 0, align 8192
|
||||
// CHECK-DAG: @z = dso_local global i8 0, align 8192
|
||||
|
||||
int __declspec(align(16)) redef;
|
||||
int __declspec(align(32)) redef = 8;
|
||||
// CHECK-DAG: @redef = global i32 8, align 32
|
||||
// CHECK-DAG: @redef = dso_local global i32 8, align 32
|
||||
|
||||
struct __declspec(align(64)) S {
|
||||
char fd;
|
||||
} s;
|
||||
// CHECK-DAG: @s = global %struct.S zeroinitializer, align 64
|
||||
// CHECK-DAG: @s = dso_local global %struct.S zeroinitializer, align 64
|
||||
|
||||
struct Wrap {
|
||||
struct S x;
|
||||
} w;
|
||||
// CHECK-DAG: @w = global %struct.Wrap zeroinitializer, align 64
|
||||
// CHECK-DAG: @w = dso_local global %struct.Wrap zeroinitializer, align 64
|
||||
|
||||
@ -11,7 +11,7 @@ void test1(void) {
|
||||
__annotation(L"unicode: \u0ca0_\u0ca0");
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define void @test1()
|
||||
// CHECK-LABEL: define dso_local void @test1()
|
||||
// CHECK: call void @llvm.codeview.annotation(metadata ![[A1:[0-9]+]])
|
||||
// CHECK: call void @llvm.codeview.annotation(metadata ![[A2:[0-9]+]])
|
||||
// CHECK: call void @llvm.codeview.annotation(metadata ![[A3:[0-9]+]])
|
||||
|
||||
@ -12,26 +12,26 @@ typedef __SIZE_TYPE__ size_t;
|
||||
#include <intrin.h>
|
||||
|
||||
void test_ReadWriteBarrier() { _ReadWriteBarrier(); }
|
||||
// CHECK-LABEL: define void @test_ReadWriteBarrier
|
||||
// CHECK-LABEL: define dso_local void @test_ReadWriteBarrier
|
||||
// CHECK: fence syncscope("singlethread") seq_cst
|
||||
// CHECK: ret void
|
||||
// CHECK: }
|
||||
|
||||
void test_ReadBarrier() { _ReadBarrier(); }
|
||||
// CHECK-LABEL: define void @test_ReadBarrier
|
||||
// CHECK-LABEL: define dso_local void @test_ReadBarrier
|
||||
// CHECK: fence syncscope("singlethread") seq_cst
|
||||
// CHECK: ret void
|
||||
// CHECK: }
|
||||
|
||||
void test_WriteBarrier() { _WriteBarrier(); }
|
||||
// CHECK-LABEL: define void @test_WriteBarrier
|
||||
// CHECK-LABEL: define dso_local void @test_WriteBarrier
|
||||
// CHECK: fence syncscope("singlethread") seq_cst
|
||||
// CHECK: ret void
|
||||
// CHECK: }
|
||||
|
||||
#if defined(__x86_64__)
|
||||
void test__faststorefence() { __faststorefence(); }
|
||||
// CHECK-X64-LABEL: define void @test__faststorefence
|
||||
// CHECK-X64-LABEL: define dso_local void @test__faststorefence
|
||||
// CHECK-X64: fence seq_cst
|
||||
// CHECK-X64: ret void
|
||||
// CHECK-X64: }
|
||||
|
||||
@ -2,14 +2,14 @@
|
||||
|
||||
__declspec(selectany) int x1 = 1;
|
||||
const __declspec(selectany) int x2 = 2;
|
||||
// CHECK: @x1 = weak_odr global i32 1, comdat, align 4
|
||||
// CHECK: @x2 = weak_odr constant i32 2, comdat, align 4
|
||||
// CHECK: @x1 = weak_odr dso_local global i32 1, comdat, align 4
|
||||
// CHECK: @x2 = weak_odr dso_local constant i32 2, comdat, align 4
|
||||
|
||||
// selectany turns extern variable declarations into definitions.
|
||||
__declspec(selectany) int x3;
|
||||
extern __declspec(selectany) int x4;
|
||||
// CHECK: @x3 = weak_odr global i32 0, comdat, align 4
|
||||
// CHECK: @x4 = weak_odr global i32 0, comdat, align 4
|
||||
// CHECK: @x3 = weak_odr dso_local global i32 0, comdat, align 4
|
||||
// CHECK: @x4 = weak_odr dso_local global i32 0, comdat, align 4
|
||||
|
||||
struct __declspec(align(16)) S {
|
||||
char x;
|
||||
@ -19,14 +19,14 @@ union { struct S s; } u;
|
||||
// CHECK: @u = {{.*}}zeroinitializer, align 16
|
||||
|
||||
|
||||
// CHECK: define void @t3() [[NAKED:#[0-9]+]] {
|
||||
// CHECK: define dso_local void @t3() [[NAKED:#[0-9]+]] {
|
||||
__declspec(naked) void t3() {}
|
||||
|
||||
// CHECK: define void @t22() [[NUW:#[0-9]+]]
|
||||
// CHECK: define dso_local void @t22() [[NUW:#[0-9]+]]
|
||||
void __declspec(nothrow) t22();
|
||||
void t22() {}
|
||||
|
||||
// CHECK: define void @t2() [[NI:#[0-9]+]] {
|
||||
// CHECK: define dso_local void @t2() [[NI:#[0-9]+]] {
|
||||
__declspec(noinline) void t2() {}
|
||||
|
||||
// CHECK: call void @f20_t() [[NR:#[0-9]+]]
|
||||
|
||||
@ -8,8 +8,8 @@ extern "C" {
|
||||
__declspec(selectany) int x4;
|
||||
}
|
||||
__declspec(selectany) int x5;
|
||||
// CHECK: @"\01?x1@@3HA" = weak_odr global i32 0, comdat, align 4
|
||||
// CHECK: @x2 = weak_odr global i32 0, comdat, align 4
|
||||
// CHECK: @"\01?x3@@3HA" = weak_odr global i32 0, comdat, align 4
|
||||
// CHECK: @x4 = weak_odr global i32 0, comdat, align 4
|
||||
// CHECK: @"\01?x5@@3HA" = weak_odr global i32 0, comdat, align 4
|
||||
// CHECK: @"\01?x1@@3HA" = weak_odr dso_local global i32 0, comdat, align 4
|
||||
// CHECK: @x2 = weak_odr dso_local global i32 0, comdat, align 4
|
||||
// CHECK: @"\01?x3@@3HA" = weak_odr dso_local global i32 0, comdat, align 4
|
||||
// CHECK: @x4 = weak_odr dso_local global i32 0, comdat, align 4
|
||||
// CHECK: @"\01?x5@@3HA" = weak_odr dso_local global i32 0, comdat, align 4
|
||||
|
||||
@ -21,7 +21,7 @@ void align_test() {
|
||||
// DARWIN-SAME: .align 8
|
||||
// DARWIN-SAME: "~{dirflag},~{fpsr},~{flags}"()
|
||||
|
||||
// WINDOWS-LABEL: define void @align_test()
|
||||
// WINDOWS-LABEL: define dso_local void @align_test()
|
||||
// WINDOWS: call void asm sideeffect inteldialect
|
||||
// WINDOWS-SAME: .align 8
|
||||
// WINDOWS-SAME: .align 16
|
||||
|
||||
@ -21,7 +21,7 @@ void t2() {
|
||||
}
|
||||
|
||||
void ignore_fe_size() {
|
||||
// CHECK-LABEL: define void @ignore_fe_size()
|
||||
// CHECK-LABEL: define dso_local void @ignore_fe_size()
|
||||
char c;
|
||||
// CHECK: vaddps xmm1, xmm2, $1{1to4}
|
||||
__asm vaddps xmm1, xmm2, [c]{1to4}
|
||||
|
||||
@ -55,7 +55,7 @@ void *test_ReturnAddress() {
|
||||
void *test_AddressOfReturnAddress() {
|
||||
return _AddressOfReturnAddress();
|
||||
}
|
||||
// CHECK-INTEL-LABEL: define i8* @test_AddressOfReturnAddress()
|
||||
// CHECK-INTEL-LABEL: define dso_local i8* @test_AddressOfReturnAddress()
|
||||
// CHECK-INTEL: = tail call i8* @llvm.addressofreturnaddress()
|
||||
// CHECK-INTEL: ret i8*
|
||||
#endif
|
||||
|
||||
@ -13,11 +13,11 @@ jmp_buf jb;
|
||||
|
||||
int test_setjmp() {
|
||||
return _setjmp(jb);
|
||||
// I386-LABEL: define i32 @test_setjmp
|
||||
// I386-LABEL: define dso_local i32 @test_setjmp
|
||||
// I386: %[[call:.*]] = call i32 (i8*, i32, ...) @_setjmp3(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @jb, i32 0, i32 0), i32 0)
|
||||
// I386-NEXT: ret i32 %[[call]]
|
||||
|
||||
// X64-LABEL: define i32 @test_setjmp
|
||||
// X64-LABEL: define dso_local i32 @test_setjmp
|
||||
// X64: %[[addr:.*]] = call i8* @llvm.frameaddress(i32 0)
|
||||
// X64: %[[call:.*]] = call i32 @_setjmp(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @jb, i32 0, i32 0), i8* %[[addr]])
|
||||
// X64-NEXT: ret i32 %[[call]]
|
||||
@ -25,7 +25,7 @@ int test_setjmp() {
|
||||
|
||||
int test_setjmpex() {
|
||||
return _setjmpex(jb);
|
||||
// X64-LABEL: define i32 @test_setjmpex
|
||||
// X64-LABEL: define dso_local i32 @test_setjmpex
|
||||
// X64: %[[addr:.*]] = call i8* @llvm.frameaddress(i32 0)
|
||||
// X64: %[[call:.*]] = call i32 @_setjmpex(i8* getelementptr inbounds ([1 x i8], [1 x i8]* @jb, i32 0, i32 0), i8* %[[addr]])
|
||||
// X64-NEXT: ret i32 %[[call]]
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
char test__readfsbyte(unsigned long Offset) {
|
||||
return __readfsbyte(Offset);
|
||||
}
|
||||
// CHECK-I386-LABEL: define signext i8 @test__readfsbyte(i32 %Offset)
|
||||
// CHECK-I386-LABEL: define dso_local signext i8 @test__readfsbyte(i32 %Offset)
|
||||
// CHECK-I386: [[PTR:%[0-9]+]] = inttoptr i32 %Offset to i8 addrspace(257)*
|
||||
// CHECK-I386: [[VALUE:%[0-9]+]] = load volatile i8, i8 addrspace(257)* [[PTR]], align 1
|
||||
// CHECK-I386: ret i8 [[VALUE:%[0-9]+]]
|
||||
@ -17,7 +17,7 @@ char test__readfsbyte(unsigned long Offset) {
|
||||
short test__readfsword(unsigned long Offset) {
|
||||
return __readfsword(Offset);
|
||||
}
|
||||
// CHECK-I386-LABEL: define signext i16 @test__readfsword(i32 %Offset)
|
||||
// CHECK-I386-LABEL: define dso_local signext i16 @test__readfsword(i32 %Offset)
|
||||
// CHECK-I386: [[PTR:%[0-9]+]] = inttoptr i32 %Offset to i16 addrspace(257)*
|
||||
// CHECK-I386: [[VALUE:%[0-9]+]] = load volatile i16, i16 addrspace(257)* [[PTR]], align 2
|
||||
// CHECK-I386: ret i16 [[VALUE:%[0-9]+]]
|
||||
@ -25,7 +25,7 @@ short test__readfsword(unsigned long Offset) {
|
||||
long test__readfsdword(unsigned long Offset) {
|
||||
return __readfsdword(Offset);
|
||||
}
|
||||
// CHECK-I386-LABEL: define i32 @test__readfsdword(i32 %Offset)
|
||||
// CHECK-I386-LABEL: define dso_local i32 @test__readfsdword(i32 %Offset)
|
||||
// CHECK-I386: [[PTR:%[0-9]+]] = inttoptr i32 %Offset to i32 addrspace(257)*
|
||||
// CHECK-I386: [[VALUE:%[0-9]+]] = load volatile i32, i32 addrspace(257)* [[PTR]], align 4
|
||||
// CHECK-I386: ret i32 [[VALUE:%[0-9]+]]
|
||||
@ -33,7 +33,7 @@ long test__readfsdword(unsigned long Offset) {
|
||||
long long test__readfsqword(unsigned long Offset) {
|
||||
return __readfsqword(Offset);
|
||||
}
|
||||
// CHECK-I386-LABEL: define i64 @test__readfsqword(i32 %Offset)
|
||||
// CHECK-I386-LABEL: define dso_local i64 @test__readfsqword(i32 %Offset)
|
||||
// CHECK-I386: [[PTR:%[0-9]+]] = inttoptr i32 %Offset to i64 addrspace(257)*
|
||||
// CHECK-I386: [[VALUE:%[0-9]+]] = load volatile i64, i64 addrspace(257)* [[PTR]], align 8
|
||||
// CHECK-I386: ret i64 [[VALUE:%[0-9]+]]
|
||||
@ -42,7 +42,7 @@ long long test__readfsqword(unsigned long Offset) {
|
||||
__int64 test__emul(int a, int b) {
|
||||
return __emul(a, b);
|
||||
}
|
||||
// CHECK-LABEL: define i64 @test__emul(i32 %a, i32 %b)
|
||||
// CHECK-LABEL: define dso_local i64 @test__emul(i32 %a, i32 %b)
|
||||
// CHECK: [[X:%[0-9]+]] = sext i32 %a to i64
|
||||
// CHECK: [[Y:%[0-9]+]] = sext i32 %b to i64
|
||||
// CHECK: [[RES:%[0-9]+]] = mul nsw i64 [[Y]], [[X]]
|
||||
@ -51,7 +51,7 @@ __int64 test__emul(int a, int b) {
|
||||
unsigned __int64 test__emulu(unsigned int a, unsigned int b) {
|
||||
return __emulu(a, b);
|
||||
}
|
||||
// CHECK-LABEL: define i64 @test__emulu(i32 %a, i32 %b)
|
||||
// CHECK-LABEL: define dso_local i64 @test__emulu(i32 %a, i32 %b)
|
||||
// CHECK: [[X:%[0-9]+]] = zext i32 %a to i64
|
||||
// CHECK: [[Y:%[0-9]+]] = zext i32 %b to i64
|
||||
// CHECK: [[RES:%[0-9]+]] = mul nuw i64 [[Y]], [[X]]
|
||||
@ -62,7 +62,7 @@ unsigned __int64 test__emulu(unsigned int a, unsigned int b) {
|
||||
char test__readgsbyte(unsigned long Offset) {
|
||||
return __readgsbyte(Offset);
|
||||
}
|
||||
// CHECK-X64-LABEL: define i8 @test__readgsbyte(i32 %Offset)
|
||||
// CHECK-X64-LABEL: define dso_local i8 @test__readgsbyte(i32 %Offset)
|
||||
// CHECK-X64: [[ZEXT:%[0-9]+]] = zext i32 %Offset to i64
|
||||
// CHECK-X64: [[PTR:%[0-9]+]] = inttoptr i64 [[ZEXT]] to i8 addrspace(256)*
|
||||
// CHECK-X64: [[VALUE:%[0-9]+]] = load volatile i8, i8 addrspace(256)* [[PTR]], align 1
|
||||
@ -71,7 +71,7 @@ char test__readgsbyte(unsigned long Offset) {
|
||||
short test__readgsword(unsigned long Offset) {
|
||||
return __readgsword(Offset);
|
||||
}
|
||||
// CHECK-X64-LABEL: define i16 @test__readgsword(i32 %Offset)
|
||||
// CHECK-X64-LABEL: define dso_local i16 @test__readgsword(i32 %Offset)
|
||||
// CHECK-X64: [[ZEXT:%[0-9]+]] = zext i32 %Offset to i64
|
||||
// CHECK-X64: [[PTR:%[0-9]+]] = inttoptr i64 [[ZEXT]] to i16 addrspace(256)*
|
||||
// CHECK-X64: [[VALUE:%[0-9]+]] = load volatile i16, i16 addrspace(256)* [[PTR]], align 2
|
||||
@ -80,7 +80,7 @@ short test__readgsword(unsigned long Offset) {
|
||||
long test__readgsdword(unsigned long Offset) {
|
||||
return __readgsdword(Offset);
|
||||
}
|
||||
// CHECK-X64-LABEL: define i32 @test__readgsdword(i32 %Offset)
|
||||
// CHECK-X64-LABEL: define dso_local i32 @test__readgsdword(i32 %Offset)
|
||||
// CHECK-X64: [[ZEXT:%[0-9]+]] = zext i32 %Offset to i64
|
||||
// CHECK-X64: [[PTR:%[0-9]+]] = inttoptr i64 [[ZEXT]] to i32 addrspace(256)*
|
||||
// CHECK-X64: [[VALUE:%[0-9]+]] = load volatile i32, i32 addrspace(256)* [[PTR]], align 4
|
||||
@ -89,7 +89,7 @@ long test__readgsdword(unsigned long Offset) {
|
||||
long long test__readgsqword(unsigned long Offset) {
|
||||
return __readgsqword(Offset);
|
||||
}
|
||||
// CHECK-X64-LABEL: define i64 @test__readgsqword(i32 %Offset)
|
||||
// CHECK-X64-LABEL: define dso_local i64 @test__readgsqword(i32 %Offset)
|
||||
// CHECK-X64: [[ZEXT:%[0-9]+]] = zext i32 %Offset to i64
|
||||
// CHECK-X64: [[PTR:%[0-9]+]] = inttoptr i64 [[ZEXT]] to i64 addrspace(256)*
|
||||
// CHECK-X64: [[VALUE:%[0-9]+]] = load volatile i64, i64 addrspace(256)* [[PTR]], align 8
|
||||
@ -98,13 +98,13 @@ long long test__readgsqword(unsigned long Offset) {
|
||||
__int64 test__mulh(__int64 a, __int64 b) {
|
||||
return __mulh(a, b);
|
||||
}
|
||||
// CHECK-X64-LABEL: define i64 @test__mulh(i64 %a, i64 %b)
|
||||
// CHECK-X64-LABEL: define dso_local i64 @test__mulh(i64 %a, i64 %b)
|
||||
// CHECK-X64: = mul nsw i128 %
|
||||
|
||||
unsigned __int64 test__umulh(unsigned __int64 a, unsigned __int64 b) {
|
||||
return __umulh(a, b);
|
||||
}
|
||||
// CHECK-X64-LABEL: define i64 @test__umulh(i64 %a, i64 %b)
|
||||
// CHECK-X64-LABEL: define dso_local i64 @test__umulh(i64 %a, i64 %b)
|
||||
// CHECK-X64: = mul nuw i128 %
|
||||
|
||||
__int64 test_mul128(__int64 Multiplier,
|
||||
@ -112,7 +112,7 @@ __int64 test_mul128(__int64 Multiplier,
|
||||
__int64 *HighProduct) {
|
||||
return _mul128(Multiplier, Multiplicand, HighProduct);
|
||||
}
|
||||
// CHECK-X64-LABEL: define i64 @test_mul128(i64 %Multiplier, i64 %Multiplicand, i64*{{[a-z_ ]*}}%HighProduct)
|
||||
// CHECK-X64-LABEL: define dso_local i64 @test_mul128(i64 %Multiplier, i64 %Multiplicand, i64*{{[a-z_ ]*}}%HighProduct)
|
||||
// CHECK-X64: = sext i64 %Multiplier to i128
|
||||
// CHECK-X64: = sext i64 %Multiplicand to i128
|
||||
// CHECK-X64: = mul nsw i128 %
|
||||
@ -124,7 +124,7 @@ unsigned __int64 test_umul128(unsigned __int64 Multiplier,
|
||||
unsigned __int64 *HighProduct) {
|
||||
return _umul128(Multiplier, Multiplicand, HighProduct);
|
||||
}
|
||||
// CHECK-X64-LABEL: define i64 @test_umul128(i64 %Multiplier, i64 %Multiplicand, i64*{{[a-z_ ]*}}%HighProduct)
|
||||
// CHECK-X64-LABEL: define dso_local i64 @test_umul128(i64 %Multiplier, i64 %Multiplicand, i64*{{[a-z_ ]*}}%HighProduct)
|
||||
// CHECK-X64: = zext i64 %Multiplier to i128
|
||||
// CHECK-X64: = zext i64 %Multiplicand to i128
|
||||
// CHECK-X64: = mul nuw i128 %
|
||||
|
||||
@ -13,7 +13,7 @@ void __attribute__((ms_abi)) f1(void);
|
||||
void __attribute__((sysv_abi)) f2(void);
|
||||
void f3(void) {
|
||||
// FREEBSD-LABEL: define void @f3()
|
||||
// WIN64-LABEL: define void @f3()
|
||||
// WIN64-LABEL: define dso_local void @f3()
|
||||
f1();
|
||||
// FREEBSD: call win64cc void @f1()
|
||||
// WIN64: call void @f1()
|
||||
@ -23,13 +23,13 @@ void f3(void) {
|
||||
}
|
||||
// FREEBSD: declare win64cc void @f1()
|
||||
// FREEBSD: declare void @f2()
|
||||
// WIN64: declare void @f1()
|
||||
// WIN64: declare x86_64_sysvcc void @f2()
|
||||
// WIN64: declare dso_local void @f1()
|
||||
// WIN64: declare dso_local x86_64_sysvcc void @f2()
|
||||
|
||||
// Win64 ABI varargs
|
||||
void __attribute__((ms_abi)) f4(int a, ...) {
|
||||
// FREEBSD-LABEL: define win64cc void @f4
|
||||
// WIN64-LABEL: define void @f4
|
||||
// WIN64-LABEL: define dso_local void @f4
|
||||
__builtin_ms_va_list ap;
|
||||
__builtin_ms_va_start(ap, a);
|
||||
// FREEBSD: %[[AP:.*]] = alloca i8*
|
||||
@ -79,7 +79,7 @@ void __attribute__((ms_abi)) f4(int a, ...) {
|
||||
|
||||
// Let's verify that normal va_lists work right on Win64, too.
|
||||
void f5(int a, ...) {
|
||||
// WIN64-LABEL: define void @f5
|
||||
// WIN64-LABEL: define dso_local void @f5
|
||||
__builtin_va_list ap;
|
||||
__builtin_va_start(ap, a);
|
||||
// WIN64: %[[AP:.*]] = alloca i8*
|
||||
@ -110,7 +110,7 @@ void f5(int a, ...) {
|
||||
void __attribute__((sysv_abi)) f6(__builtin_ms_va_list ap) {
|
||||
// FREEBSD-LABEL: define void @f6
|
||||
// FREEBSD: store i8* %ap, i8** %[[AP:.*]]
|
||||
// WIN64-LABEL: define x86_64_sysvcc void @f6
|
||||
// WIN64-LABEL: define dso_local x86_64_sysvcc void @f6
|
||||
// WIN64: store i8* %ap, i8** %[[AP:.*]]
|
||||
int b = __builtin_va_arg(ap, int);
|
||||
// FREEBSD: %[[AP_CUR:.*]] = load i8*, i8** %[[AP]]
|
||||
@ -155,7 +155,7 @@ struct i128 {
|
||||
};
|
||||
|
||||
__attribute__((ms_abi)) struct i128 f7(struct i128 a) {
|
||||
// WIN64: define void @f7(%struct.i128* noalias sret %agg.result, %struct.i128* %a)
|
||||
// WIN64: define dso_local void @f7(%struct.i128* noalias sret %agg.result, %struct.i128* %a)
|
||||
// FREEBSD: define win64cc void @f7(%struct.i128* noalias sret %agg.result, %struct.i128* %a)
|
||||
return a;
|
||||
}
|
||||
|
||||
@ -5,7 +5,7 @@ void __attribute__((ms_abi)) f1(void);
|
||||
void f2(void);
|
||||
void f3(void) {
|
||||
// LINUX-LABEL: define void @f3()
|
||||
// WIN64-LABEL: define void @f3()
|
||||
// WIN64-LABEL: define dso_local void @f3()
|
||||
f1();
|
||||
// LINUX: call win64cc void @f1()
|
||||
// WIN64: call void @f1()
|
||||
@ -15,13 +15,13 @@ void f3(void) {
|
||||
}
|
||||
// LINUX: declare win64cc void @f1()
|
||||
// LINUX: declare void @f2()
|
||||
// WIN64: declare void @f1()
|
||||
// WIN64: declare void @f2()
|
||||
// WIN64: declare dso_local void @f1()
|
||||
// WIN64: declare dso_local void @f2()
|
||||
|
||||
// Win64 ABI varargs
|
||||
void __attribute__((ms_abi)) f4(int a, ...) {
|
||||
// LINUX-LABEL: define win64cc void @f4
|
||||
// WIN64-LABEL: define void @f4
|
||||
// WIN64-LABEL: define dso_local void @f4
|
||||
__builtin_ms_va_list ap;
|
||||
__builtin_ms_va_start(ap, a);
|
||||
// LINUX: %[[AP:.*]] = alloca i8*
|
||||
@ -50,7 +50,7 @@ void __attribute__((ms_abi)) f4(int a, ...) {
|
||||
|
||||
// Let's verify that normal va_lists work right on Win64, too.
|
||||
void f5(int a, ...) {
|
||||
// WIN64-LABEL: define void @f5
|
||||
// WIN64-LABEL: define dso_local void @f5
|
||||
__builtin_va_list ap;
|
||||
__builtin_va_start(ap, a);
|
||||
// WIN64: %[[AP:.*]] = alloca i8*
|
||||
|
||||
@ -13,7 +13,7 @@ public:
|
||||
void runc();
|
||||
};
|
||||
|
||||
// CHECK: define void @"\01?runc@t2@@
|
||||
// CHECK: define dso_local void @"\01?runc@t2@@
|
||||
void t2::runc() {
|
||||
double num = 0;
|
||||
__asm {
|
||||
@ -26,7 +26,7 @@ void t2::runc() {
|
||||
};
|
||||
}
|
||||
|
||||
// CHECK: define void @"\01?runc@t1@@
|
||||
// CHECK: define dso_local void @"\01?runc@t1@@
|
||||
void t1::runc() {
|
||||
double num = 0;
|
||||
__asm {
|
||||
@ -41,7 +41,7 @@ void t1::runc() {
|
||||
|
||||
struct s {
|
||||
int a;
|
||||
// CHECK: define linkonce_odr void @"\01?func@s@@
|
||||
// CHECK: define linkonce_odr dso_local void @"\01?func@s@@
|
||||
void func() {
|
||||
__asm mov rax, [this]
|
||||
// CHECK: [[THIS_ADDR_S:%.+]] = alloca %struct.s*
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
// RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-DEFAULT
|
||||
// RUN: %clang_cc1 %s -fno-common -emit-llvm -o - | FileCheck %s -check-prefix=CHECK-NOCOMMON
|
||||
|
||||
// CHECK-DEFAULT: @x = common global
|
||||
// CHECK-NOCOMMON: @x = global
|
||||
// CHECK-DEFAULT: @x = common {{(dso_local )?}}global
|
||||
// CHECK-NOCOMMON: @x = {{(dso_local )?}}global
|
||||
int x;
|
||||
|
||||
// CHECK-DEFAULT: @ABC = global
|
||||
// CHECK-NOCOMMON: @ABC = global
|
||||
// CHECK-DEFAULT: @ABC = {{(dso_local )?}}global
|
||||
// CHECK-NOCOMMON: @ABC = {{(dso_local )?}}global
|
||||
typedef void* (*fn_t)(long a, long b, char *f, int c);
|
||||
fn_t ABC __attribute__ ((nocommon));
|
||||
|
||||
// CHECK-DEFAULT: @y = common global
|
||||
// CHECK-NOCOMMON: @y = common global
|
||||
// CHECK-DEFAULT: @y = common {{(dso_local )?}}global
|
||||
// CHECK-NOCOMMON: @y = common {{(dso_local )?}}global
|
||||
int y __attribute__((common));
|
||||
|
||||
@ -41,7 +41,7 @@ void addrof_single(int *a) __attribute__((overloadable, enable_if(0, "")));
|
||||
void addrof_single(char *a) __attribute__((overloadable, enable_if(0, "")));
|
||||
void addrof_single(char *a) __attribute__((overloadable));
|
||||
|
||||
// CHECK-LABEL: define void @foo
|
||||
// CHECK-LABEL: define {{(dso_local )?}}void @foo
|
||||
void foo() {
|
||||
// CHECK: store void (i8*)* @_Z11addrof_manyPc
|
||||
void (*p1)(char *) = &addrof_many;
|
||||
@ -64,7 +64,7 @@ void foo() {
|
||||
void ovl_bar(char *) __attribute__((overloadable));
|
||||
void ovl_bar(int) __attribute__((overloadable));
|
||||
|
||||
// CHECK-LABEL: define void @bar
|
||||
// CHECK-LABEL: define {{(dso_local )?}}void @bar
|
||||
void bar() {
|
||||
char charbuf[1];
|
||||
unsigned char ucharbuf[1];
|
||||
@ -79,7 +79,7 @@ void ovl_baz(int *, int) __attribute__((overloadable));
|
||||
void ovl_baz(unsigned int *, unsigned int) __attribute__((overloadable));
|
||||
void ovl_baz2(int, int *) __attribute__((overloadable));
|
||||
void ovl_baz2(unsigned int, unsigned int *) __attribute__((overloadable));
|
||||
// CHECK-LABEL: define void @baz
|
||||
// CHECK-LABEL: define {{(dso_local )?}}void @baz
|
||||
void baz() {
|
||||
unsigned int j;
|
||||
// Initial rules for incompatible pointer conversions made this overload
|
||||
|
||||
@ -13,8 +13,8 @@ void foo(int n) {
|
||||
g += baz(i);
|
||||
}
|
||||
|
||||
// SAMPLEPGO-LABEL: define void @bar
|
||||
// THINLTO-LABEL: define void @bar
|
||||
// SAMPLEPGO-LABEL: define {{(dso_local )?}}void @bar
|
||||
// THINLTO-LABEL: define {{(dso_local )?}}void @bar
|
||||
// SAMPLEPGO-NOT: call{{.*}}foo
|
||||
// THINLTO: call{{.*}}foo
|
||||
void bar(int n) {
|
||||
@ -23,8 +23,8 @@ void bar(int n) {
|
||||
}
|
||||
|
||||
// Checks if loop unroll is invoked by normal compile, but not thinlto compile.
|
||||
// SAMPLEPGO-LABEL: define void @unroll
|
||||
// THINLTO-LABEL: define void @unroll
|
||||
// SAMPLEPGO-LABEL: define {{(dso_local )?}}void @unroll
|
||||
// THINLTO-LABEL: define {{(dso_local )?}}void @unroll
|
||||
// SAMPLEPGO: call{{.*}}baz
|
||||
// SAMPLEPGO: call{{.*}}baz
|
||||
// THINLTO: call{{.*}}baz
|
||||
@ -35,8 +35,8 @@ void unroll() {
|
||||
}
|
||||
|
||||
// Checks that icp is not invoked for ThinLTO, but invoked for normal samplepgo.
|
||||
// SAMPLEPGO-LABEL: define void @icp
|
||||
// THINLTO-LABEL: define void @icp
|
||||
// SAMPLEPGO-LABEL: define {{(dso_local )?}}void @icp
|
||||
// THINLTO-LABEL: define {{(dso_local )?}}void @icp
|
||||
// SAMPLEPGO: if.true.direct_targ
|
||||
// FIXME: the following condition needs to be reversed once
|
||||
// LTOPreLinkDefaultPipeline is customized.
|
||||
|
||||
@ -12,7 +12,7 @@ class A {
|
||||
unsigned char _highlightColorTableVGA[];
|
||||
static const unsigned char b[];
|
||||
};
|
||||
// CHECK: [[Common_A_b:@[^ ]+]] = constant [1 x i8] zeroinitializer
|
||||
// CHECK: [[Common_A_b:@[^ ]+]] = {{(dso_local )?}}constant [1 x i8] zeroinitializer
|
||||
class B {
|
||||
public:
|
||||
Common::RenderMode _configRenderMode;
|
||||
|
||||
@ -16,22 +16,22 @@ struct svar
|
||||
{
|
||||
void *ptr;
|
||||
};
|
||||
// CHECK: @svars1 = global [1 x %struct.svar] [%struct.svar { i8* bitcast (%struct.cpu* @cpu to i8*) }]
|
||||
// CHECK: @svars1 = {{(dso_local )?}}global [1 x %struct.svar] [%struct.svar { i8* bitcast (%struct.cpu* @cpu to i8*) }]
|
||||
struct svar svars1[] =
|
||||
{
|
||||
{ &((cpu.pc).w[0]) }
|
||||
};
|
||||
// CHECK: @svars2 = global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8, i8* bitcast (%struct.cpu* @cpu to i8*), i64 1) }]
|
||||
// CHECK: @svars2 = {{(dso_local )?}}global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8, i8* bitcast (%struct.cpu* @cpu to i8*), i64 1) }]
|
||||
struct svar svars2[] =
|
||||
{
|
||||
{ &((cpu.pc).b[0][1]) }
|
||||
};
|
||||
// CHECK: @svars3 = global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8, i8* bitcast (%struct.cpu* @cpu to i8*), i64 2) }]
|
||||
// CHECK: @svars3 = {{(dso_local )?}}global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8, i8* bitcast (%struct.cpu* @cpu to i8*), i64 2) }]
|
||||
struct svar svars3[] =
|
||||
{
|
||||
{ &((cpu.pc).w[1]) }
|
||||
};
|
||||
// CHECK: @svars4 = global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8, i8* bitcast (%struct.cpu* @cpu to i8*), i64 3) }]
|
||||
// CHECK: @svars4 = {{(dso_local )?}}global [1 x %struct.svar] [%struct.svar { i8* getelementptr (i8, i8* bitcast (%struct.cpu* @cpu to i8*), i64 3) }]
|
||||
struct svar svars4[] =
|
||||
{
|
||||
{ &((cpu.pc).b[1][1]) }
|
||||
|
||||
@ -8,13 +8,13 @@
|
||||
// is lowered to the corresponding calling convention attrribute at the LLVM IR
|
||||
// level.
|
||||
void foo() __attribute__((preserve_most)) {
|
||||
// CHECK-LABEL: define preserve_mostcc void @foo()
|
||||
// CHECK-LABEL: define {{(dso_local )?}}preserve_mostcc void @foo()
|
||||
}
|
||||
|
||||
// Check that the preserve_most calling convention attribute at the source level
|
||||
// is lowered to the corresponding calling convention attrribute at the LLVM IR
|
||||
// level.
|
||||
void boo() __attribute__((preserve_all)) {
|
||||
// CHECK-LABEL: define preserve_allcc void @boo()
|
||||
// CHECK-LABEL: define {{(dso_local )?}}preserve_allcc void @boo()
|
||||
}
|
||||
|
||||
|
||||
@ -6,34 +6,34 @@
|
||||
#include <xmmintrin.h>
|
||||
|
||||
void __regcall v1(int a, int b) {}
|
||||
// Win32: define x86_regcallcc void @__regcall3__v1(i32 inreg %a, i32 inreg %b)
|
||||
// Win64: define x86_regcallcc void @__regcall3__v1(i32 %a, i32 %b)
|
||||
// Win32: define dso_local x86_regcallcc void @__regcall3__v1(i32 inreg %a, i32 inreg %b)
|
||||
// Win64: define dso_local x86_regcallcc void @__regcall3__v1(i32 %a, i32 %b)
|
||||
// Lin32: define x86_regcallcc void @__regcall3__v1(i32 inreg %a, i32 inreg %b)
|
||||
// Lin64: define x86_regcallcc void @__regcall3__v1(i32 %a, i32 %b)
|
||||
|
||||
void __attribute__((regcall)) v1b(int a, int b) {}
|
||||
// Win32: define x86_regcallcc void @__regcall3__v1b(i32 inreg %a, i32 inreg %b)
|
||||
// Win64: define x86_regcallcc void @__regcall3__v1b(i32 %a, i32 %b)
|
||||
// Win32: define dso_local x86_regcallcc void @__regcall3__v1b(i32 inreg %a, i32 inreg %b)
|
||||
// Win64: define dso_local x86_regcallcc void @__regcall3__v1b(i32 %a, i32 %b)
|
||||
// Lin32: define x86_regcallcc void @__regcall3__v1b(i32 inreg %a, i32 inreg %b)
|
||||
// Lin64: define x86_regcallcc void @__regcall3__v1b(i32 %a, i32 %b)
|
||||
|
||||
void __regcall v2(char a, char b) {}
|
||||
// Win32: define x86_regcallcc void @__regcall3__v2(i8 inreg signext %a, i8 inreg signext %b)
|
||||
// Win64: define x86_regcallcc void @__regcall3__v2(i8 %a, i8 %b)
|
||||
// Win32: define dso_local x86_regcallcc void @__regcall3__v2(i8 inreg signext %a, i8 inreg signext %b)
|
||||
// Win64: define dso_local x86_regcallcc void @__regcall3__v2(i8 %a, i8 %b)
|
||||
// Lin32: define x86_regcallcc void @__regcall3__v2(i8 inreg signext %a, i8 inreg signext %b)
|
||||
// Lin64: define x86_regcallcc void @__regcall3__v2(i8 signext %a, i8 signext %b)
|
||||
|
||||
struct Small { int x; };
|
||||
void __regcall v3(int a, struct Small b, int c) {}
|
||||
// Win32: define x86_regcallcc void @__regcall3__v3(i32 inreg %a, i32 %b.0, i32 inreg %c)
|
||||
// Win64: define x86_regcallcc void @__regcall3__v3(i32 %a, i32 %b.coerce, i32 %c)
|
||||
// Win32: define dso_local x86_regcallcc void @__regcall3__v3(i32 inreg %a, i32 %b.0, i32 inreg %c)
|
||||
// Win64: define dso_local x86_regcallcc void @__regcall3__v3(i32 %a, i32 %b.coerce, i32 %c)
|
||||
// Lin32: define x86_regcallcc void @__regcall3__v3(i32 inreg %a, i32 inreg, i32 %b.0, i32 inreg %c)
|
||||
// Lin64: define x86_regcallcc void @__regcall3__v3(i32 %a, i32 %b.coerce, i32 %c)
|
||||
|
||||
struct Large { int a[5]; };
|
||||
void __regcall v4(int a, struct Large b, int c) {}
|
||||
// Win32: define x86_regcallcc void @__regcall3__v4(i32 inreg %a, %struct.Large* byval align 4 %b, i32 inreg %c)
|
||||
// Win64: define x86_regcallcc void @__regcall3__v4(i32 %a, %struct.Large* %b, i32 %c)
|
||||
// Win32: define dso_local x86_regcallcc void @__regcall3__v4(i32 inreg %a, %struct.Large* byval align 4 %b, i32 inreg %c)
|
||||
// Win64: define dso_local x86_regcallcc void @__regcall3__v4(i32 %a, %struct.Large* %b, i32 %c)
|
||||
// Lin32: define x86_regcallcc void @__regcall3__v4(i32 inreg %a, %struct.Large* byval align 4 %b, i32 %c)
|
||||
// Lin64: define x86_regcallcc void @__regcall3__v4(i32 %a, [5 x i32] %b.coerce, i32 %c)
|
||||
|
||||
@ -42,8 +42,8 @@ struct HFA4 { double w, x, y, z; };
|
||||
struct HFA5 { double v, w, x, y, z; };
|
||||
|
||||
void __regcall hfa1(int a, struct HFA4 b, int c) {}
|
||||
// Win32: define x86_regcallcc void @__regcall3__hfa1(i32 inreg %a, double %b.0, double %b.1, double %b.2, double %b.3, i32 inreg %c)
|
||||
// Win64: define x86_regcallcc void @__regcall3__hfa1(i32 %a, double %b.0, double %b.1, double %b.2, double %b.3, i32 %c)
|
||||
// Win32: define dso_local x86_regcallcc void @__regcall3__hfa1(i32 inreg %a, double %b.0, double %b.1, double %b.2, double %b.3, i32 inreg %c)
|
||||
// Win64: define dso_local x86_regcallcc void @__regcall3__hfa1(i32 %a, double %b.0, double %b.1, double %b.2, double %b.3, i32 %c)
|
||||
// Lin32: define x86_regcallcc void @__regcall3__hfa1(i32 inreg %a, double %b.0, double %b.1, double %b.2, double %b.3, i32 inreg %c)
|
||||
// Lin64: define x86_regcallcc void @__regcall3__hfa1(i32 %a, double %b.coerce0, double %b.coerce1, double %b.coerce2, double %b.coerce3, i32 %c)
|
||||
|
||||
@ -51,16 +51,16 @@ void __regcall hfa1(int a, struct HFA4 b, int c) {}
|
||||
// indirectly. Additional vector arguments can consume the rest of the SSE
|
||||
// registers.
|
||||
void __regcall hfa2(struct HFA4 a, struct HFA4 b, double c) {}
|
||||
// Win32: define x86_regcallcc void @__regcall3__hfa2(double %a.0, double %a.1, double %a.2, double %a.3, double %b.0, double %b.1, double %b.2, double %b.3, double* inreg)
|
||||
// Win64: define x86_regcallcc void @__regcall3__hfa2(double %a.0, double %a.1, double %a.2, double %a.3, double %b.0, double %b.1, double %b.2, double %b.3, double %c)
|
||||
// Win32: define dso_local x86_regcallcc void @__regcall3__hfa2(double %a.0, double %a.1, double %a.2, double %a.3, double %b.0, double %b.1, double %b.2, double %b.3, double* inreg)
|
||||
// Win64: define dso_local x86_regcallcc void @__regcall3__hfa2(double %a.0, double %a.1, double %a.2, double %a.3, double %b.0, double %b.1, double %b.2, double %b.3, double %c)
|
||||
// Lin32: define x86_regcallcc void @__regcall3__hfa2(double %a.0, double %a.1, double %a.2, double %a.3, double %b.0, double %b.1, double %b.2, double %b.3, double* inreg)
|
||||
// Lin64: define x86_regcallcc void @__regcall3__hfa2(double %a.coerce0, double %a.coerce1, double %a.coerce2, double %a.coerce3, double %b.coerce0, double %b.coerce1, double %b.coerce2, double %b.coerce3, double %c)
|
||||
|
||||
// Ensure that we pass builtin types directly while counting them against the
|
||||
// SSE register usage.
|
||||
void __regcall hfa3(double a, double b, double c, double d, double e, struct HFA2 f) {}
|
||||
// Win32: define x86_regcallcc void @__regcall3__hfa3(double %a, double %b, double %c, double %d, double %e, double %f.0, double %f.1)
|
||||
// Win64: define x86_regcallcc void @__regcall3__hfa3(double %a, double %b, double %c, double %d, double %e, double %f.0, double %f.1)
|
||||
// Win32: define dso_local x86_regcallcc void @__regcall3__hfa3(double %a, double %b, double %c, double %d, double %e, double %f.0, double %f.1)
|
||||
// Win64: define dso_local x86_regcallcc void @__regcall3__hfa3(double %a, double %b, double %c, double %d, double %e, double %f.0, double %f.1)
|
||||
// Lin32: define x86_regcallcc void @__regcall3__hfa3(double %a, double %b, double %c, double %d, double %e, double %f.0, double %f.1)
|
||||
// Lin64: define x86_regcallcc void @__regcall3__hfa3(double %a, double %b, double %c, double %d, double %e, double %f.coerce0, double %f.coerce1)
|
||||
|
||||
@ -68,16 +68,16 @@ void __regcall hfa3(double a, double b, double c, double d, double e, struct HFA
|
||||
// Because they are not classified as homogeneous, they don't get special
|
||||
// handling to ensure alignment.
|
||||
void __regcall hfa4(struct HFA5 a) {}
|
||||
// Win32: define x86_regcallcc void @__regcall3__hfa4(%struct.HFA5* byval align 4)
|
||||
// Win64: define x86_regcallcc void @__regcall3__hfa4(%struct.HFA5* %a)
|
||||
// Win32: define dso_local x86_regcallcc void @__regcall3__hfa4(%struct.HFA5* byval align 4)
|
||||
// Win64: define dso_local x86_regcallcc void @__regcall3__hfa4(%struct.HFA5* %a)
|
||||
// Lin32: define x86_regcallcc void @__regcall3__hfa4(%struct.HFA5* byval align 4 %a)
|
||||
// Lin64: define x86_regcallcc void @__regcall3__hfa4(double %a.coerce0, double %a.coerce1, double %a.coerce2, double %a.coerce3, double %a.coerce4)
|
||||
|
||||
// Return HFAs of 4 or fewer elements in registers.
|
||||
static struct HFA2 g_hfa2;
|
||||
struct HFA2 __regcall hfa5(void) { return g_hfa2; }
|
||||
// Win32: define x86_regcallcc %struct.HFA2 @__regcall3__hfa5()
|
||||
// Win64: define x86_regcallcc %struct.HFA2 @__regcall3__hfa5()
|
||||
// Win32: define dso_local x86_regcallcc %struct.HFA2 @__regcall3__hfa5()
|
||||
// Win64: define dso_local x86_regcallcc %struct.HFA2 @__regcall3__hfa5()
|
||||
// Lin32: define x86_regcallcc %struct.HFA2 @__regcall3__hfa5()
|
||||
// Lin64: define x86_regcallcc %struct.HFA2 @__regcall3__hfa5()
|
||||
|
||||
@ -86,20 +86,20 @@ struct HVA2 { v4f32 x, y; };
|
||||
struct HVA4 { v4f32 w, x, y, z; };
|
||||
|
||||
void __regcall hva1(int a, struct HVA4 b, int c) {}
|
||||
// Win32: define x86_regcallcc void @__regcall3__hva1(i32 inreg %a, <4 x float> %b.0, <4 x float> %b.1, <4 x float> %b.2, <4 x float> %b.3, i32 inreg %c)
|
||||
// Win64: define x86_regcallcc void @__regcall3__hva1(i32 %a, <4 x float> %b.0, <4 x float> %b.1, <4 x float> %b.2, <4 x float> %b.3, i32 %c)
|
||||
// Win32: define dso_local x86_regcallcc void @__regcall3__hva1(i32 inreg %a, <4 x float> %b.0, <4 x float> %b.1, <4 x float> %b.2, <4 x float> %b.3, i32 inreg %c)
|
||||
// Win64: define dso_local x86_regcallcc void @__regcall3__hva1(i32 %a, <4 x float> %b.0, <4 x float> %b.1, <4 x float> %b.2, <4 x float> %b.3, i32 %c)
|
||||
// Lin32: define x86_regcallcc void @__regcall3__hva1(i32 inreg %a, <4 x float> %b.0, <4 x float> %b.1, <4 x float> %b.2, <4 x float> %b.3, i32 inreg %c)
|
||||
// Lin64: define x86_regcallcc void @__regcall3__hva1(i32 %a, <4 x float> %b.coerce0, <4 x float> %b.coerce1, <4 x float> %b.coerce2, <4 x float> %b.coerce3, i32 %c)
|
||||
|
||||
void __regcall hva2(struct HVA4 a, struct HVA4 b, v4f32 c) {}
|
||||
// Win32: define x86_regcallcc void @__regcall3__hva2(<4 x float> %a.0, <4 x float> %a.1, <4 x float> %a.2, <4 x float> %a.3, <4 x float> %b.0, <4 x float> %b.1, <4 x float> %b.2, <4 x float> %b.3, <4 x float>* inreg)
|
||||
// Win64: define x86_regcallcc void @__regcall3__hva2(<4 x float> %a.0, <4 x float> %a.1, <4 x float> %a.2, <4 x float> %a.3, <4 x float> %b.0, <4 x float> %b.1, <4 x float> %b.2, <4 x float> %b.3, <4 x float> %c)
|
||||
// Win32: define dso_local x86_regcallcc void @__regcall3__hva2(<4 x float> %a.0, <4 x float> %a.1, <4 x float> %a.2, <4 x float> %a.3, <4 x float> %b.0, <4 x float> %b.1, <4 x float> %b.2, <4 x float> %b.3, <4 x float>* inreg)
|
||||
// Win64: define dso_local x86_regcallcc void @__regcall3__hva2(<4 x float> %a.0, <4 x float> %a.1, <4 x float> %a.2, <4 x float> %a.3, <4 x float> %b.0, <4 x float> %b.1, <4 x float> %b.2, <4 x float> %b.3, <4 x float> %c)
|
||||
// Lin32: define x86_regcallcc void @__regcall3__hva2(<4 x float> %a.0, <4 x float> %a.1, <4 x float> %a.2, <4 x float> %a.3, <4 x float> %b.0, <4 x float> %b.1, <4 x float> %b.2, <4 x float> %b.3, <4 x float>* inreg)
|
||||
// Lin64: define x86_regcallcc void @__regcall3__hva2(<4 x float> %a.coerce0, <4 x float> %a.coerce1, <4 x float> %a.coerce2, <4 x float> %a.coerce3, <4 x float> %b.coerce0, <4 x float> %b.coerce1, <4 x float> %b.coerce2, <4 x float> %b.coerce3, <4 x float> %c)
|
||||
|
||||
void __regcall hva3(v4f32 a, v4f32 b, v4f32 c, v4f32 d, v4f32 e, struct HVA2 f) {}
|
||||
// Win32: define x86_regcallcc void @__regcall3__hva3(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x float> %d, <4 x float> %e, <4 x float> %f.0, <4 x float> %f.1)
|
||||
// Win64: define x86_regcallcc void @__regcall3__hva3(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x float> %d, <4 x float> %e, <4 x float> %f.0, <4 x float> %f.1)
|
||||
// Win32: define dso_local x86_regcallcc void @__regcall3__hva3(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x float> %d, <4 x float> %e, <4 x float> %f.0, <4 x float> %f.1)
|
||||
// Win64: define dso_local x86_regcallcc void @__regcall3__hva3(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x float> %d, <4 x float> %e, <4 x float> %f.0, <4 x float> %f.1)
|
||||
// Lin32: define x86_regcallcc void @__regcall3__hva3(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x float> %d, <4 x float> %e, <4 x float> %f.0, <4 x float> %f.1)
|
||||
// Lin64: define x86_regcallcc void @__regcall3__hva3(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x float> %d, <4 x float> %e, <4 x float> %f.coerce0, <4 x float> %f.coerce1)
|
||||
|
||||
@ -107,14 +107,14 @@ typedef float __attribute__((ext_vector_type(3))) v3f32;
|
||||
struct OddSizeHVA { v3f32 x, y; };
|
||||
|
||||
void __regcall odd_size_hva(struct OddSizeHVA a) {}
|
||||
// Win32: define x86_regcallcc void @__regcall3__odd_size_hva(<3 x float> %a.0, <3 x float> %a.1)
|
||||
// Win64: define x86_regcallcc void @__regcall3__odd_size_hva(<3 x float> %a.0, <3 x float> %a.1)
|
||||
// Win32: define dso_local x86_regcallcc void @__regcall3__odd_size_hva(<3 x float> %a.0, <3 x float> %a.1)
|
||||
// Win64: define dso_local x86_regcallcc void @__regcall3__odd_size_hva(<3 x float> %a.0, <3 x float> %a.1)
|
||||
// Lin32: define x86_regcallcc void @__regcall3__odd_size_hva(<3 x float> %a.0, <3 x float> %a.1)
|
||||
// Lin64: define x86_regcallcc void @__regcall3__odd_size_hva(<3 x float> %a.coerce0, <3 x float> %a.coerce1)
|
||||
|
||||
struct HFA6 { __m128 f[4]; };
|
||||
struct HFA6 __regcall ret_reg_reused(struct HFA6 a, struct HFA6 b, struct HFA6 c, struct HFA6 d){ struct HFA6 h; return h;}
|
||||
// Win32: define x86_regcallcc %struct.HFA6 @__regcall3__ret_reg_reused(<4 x float> %a.0, <4 x float> %a.1, <4 x float> %a.2, <4 x float> %a.3, <4 x float> %b.0, <4 x float> %b.1, <4 x float> %b.2, <4 x float> %b.3, %struct.HFA6* inreg %c, %struct.HFA6* inreg %d)
|
||||
// Win64: define x86_regcallcc %struct.HFA6 @__regcall3__ret_reg_reused(<4 x float> %a.0, <4 x float> %a.1, <4 x float> %a.2, <4 x float> %a.3, <4 x float> %b.0, <4 x float> %b.1, <4 x float> %b.2, <4 x float> %b.3, <4 x float> %c.0, <4 x float> %c.1, <4 x float> %c.2, <4 x float> %c.3, <4 x float> %d.0, <4 x float> %d.1, <4 x float> %d.2, <4 x float> %d.3)
|
||||
// Win32: define dso_local x86_regcallcc %struct.HFA6 @__regcall3__ret_reg_reused(<4 x float> %a.0, <4 x float> %a.1, <4 x float> %a.2, <4 x float> %a.3, <4 x float> %b.0, <4 x float> %b.1, <4 x float> %b.2, <4 x float> %b.3, %struct.HFA6* inreg %c, %struct.HFA6* inreg %d)
|
||||
// Win64: define dso_local x86_regcallcc %struct.HFA6 @__regcall3__ret_reg_reused(<4 x float> %a.0, <4 x float> %a.1, <4 x float> %a.2, <4 x float> %a.3, <4 x float> %b.0, <4 x float> %b.1, <4 x float> %b.2, <4 x float> %b.3, <4 x float> %c.0, <4 x float> %c.1, <4 x float> %c.2, <4 x float> %c.3, <4 x float> %d.0, <4 x float> %d.1, <4 x float> %d.2, <4 x float> %d.3)
|
||||
// Lin32: define x86_regcallcc %struct.HFA6 @__regcall3__ret_reg_reused(<4 x float> %a.0, <4 x float> %a.1, <4 x float> %a.2, <4 x float> %a.3, <4 x float> %b.0, <4 x float> %b.1, <4 x float> %b.2, <4 x float> %b.3, %struct.HFA6* inreg %c, %struct.HFA6* inreg %d)
|
||||
// Lin64: define x86_regcallcc %struct.HFA6 @__regcall3__ret_reg_reused([4 x <4 x float>] %a.coerce, [4 x <4 x float>] %b.coerce, [4 x <4 x float>] %c.coerce, [4 x <4 x float>] %d.coerce)
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
// RUN: %clang_cc1 -emit-llvm -w -o - %s | FileCheck %s
|
||||
|
||||
// CHECK-DAG: @r = common global [1 x {{.*}}] zeroinitializer
|
||||
// CHECK-DAG: @r = common {{(dso_local )?}}global [1 x {{.*}}] zeroinitializer
|
||||
|
||||
int r[];
|
||||
int (*a)[] = &r;
|
||||
|
||||
struct s0;
|
||||
struct s0 x;
|
||||
// CHECK-DAG: @x = common global %struct.s0 zeroinitializer
|
||||
// CHECK-DAG: @x = common {{(dso_local )?}}global %struct.s0 zeroinitializer
|
||||
|
||||
struct s0 y;
|
||||
// CHECK-DAG: @y = common global %struct.s0 zeroinitializer
|
||||
// CHECK-DAG: @y = common {{(dso_local )?}}global %struct.s0 zeroinitializer
|
||||
struct s0 *f0() {
|
||||
return &y;
|
||||
}
|
||||
@ -19,14 +19,14 @@ struct s0 {
|
||||
int x;
|
||||
};
|
||||
|
||||
// CHECK-DAG: @b = common global [1 x {{.*}}] zeroinitializer
|
||||
// CHECK-DAG: @b = common {{(dso_local )?}}global [1 x {{.*}}] zeroinitializer
|
||||
int b[];
|
||||
int *f1() {
|
||||
return b;
|
||||
}
|
||||
|
||||
// Check that the most recent tentative definition wins.
|
||||
// CHECK-DAG: @c = common global [4 x {{.*}}] zeroinitializer
|
||||
// CHECK-DAG: @c = common {{(dso_local )?}}global [4 x {{.*}}] zeroinitializer
|
||||
int c[];
|
||||
int c[4];
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ void f(const char *f) {
|
||||
v(f, 1, 2, 3, NULL);
|
||||
kr(f, 1, 2, 3, 0);
|
||||
}
|
||||
// WINDOWS: define void @f(i8* %f)
|
||||
// WINDOWS: define dso_local void @f(i8* %f)
|
||||
// WINDOWS: call void (i8*, ...) @v(i8* {{.*}}, i32 1, i32 2, i32 3, i64 0)
|
||||
// WINDOWS: call void bitcast (void (...)* @kr to void (i8*, i32, i32, i32, i32)*)(i8* {{.*}}, i32 1, i32 2, i32 3, i32 0)
|
||||
// LINUX: define void @f(i8* %f)
|
||||
|
||||
@ -2,56 +2,56 @@
|
||||
// RUN: %clang_cc1 -emit-llvm %s -o - -ffreestanding -triple=x86_64-pc-win32 | FileCheck %s --check-prefix=X64
|
||||
|
||||
void __vectorcall v1(int a, int b) {}
|
||||
// X32: define x86_vectorcallcc void @"\01v1@@8"(i32 inreg %a, i32 inreg %b)
|
||||
// X64: define x86_vectorcallcc void @"\01v1@@16"(i32 %a, i32 %b)
|
||||
// X32: define dso_local x86_vectorcallcc void @"\01v1@@8"(i32 inreg %a, i32 inreg %b)
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01v1@@16"(i32 %a, i32 %b)
|
||||
|
||||
void __vectorcall v2(char a, char b) {}
|
||||
// X32: define x86_vectorcallcc void @"\01v2@@8"(i8 inreg signext %a, i8 inreg signext %b)
|
||||
// X64: define x86_vectorcallcc void @"\01v2@@16"(i8 %a, i8 %b)
|
||||
// X32: define dso_local x86_vectorcallcc void @"\01v2@@8"(i8 inreg signext %a, i8 inreg signext %b)
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01v2@@16"(i8 %a, i8 %b)
|
||||
|
||||
struct Small { int x; };
|
||||
void __vectorcall v3(int a, struct Small b, int c) {}
|
||||
// X32: define x86_vectorcallcc void @"\01v3@@12"(i32 inreg %a, i32 %b.0, i32 inreg %c)
|
||||
// X64: define x86_vectorcallcc void @"\01v3@@24"(i32 %a, i32 %b.coerce, i32 %c)
|
||||
// X32: define dso_local x86_vectorcallcc void @"\01v3@@12"(i32 inreg %a, i32 %b.0, i32 inreg %c)
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01v3@@24"(i32 %a, i32 %b.coerce, i32 %c)
|
||||
|
||||
struct Large { int a[5]; };
|
||||
void __vectorcall v4(int a, struct Large b, int c) {}
|
||||
// X32: define x86_vectorcallcc void @"\01v4@@28"(i32 inreg %a, %struct.Large* byval align 4 %b, i32 inreg %c)
|
||||
// X64: define x86_vectorcallcc void @"\01v4@@40"(i32 %a, %struct.Large* %b, i32 %c)
|
||||
// X32: define dso_local x86_vectorcallcc void @"\01v4@@28"(i32 inreg %a, %struct.Large* byval align 4 %b, i32 inreg %c)
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01v4@@40"(i32 %a, %struct.Large* %b, i32 %c)
|
||||
|
||||
struct HFA2 { double x, y; };
|
||||
struct HFA4 { double w, x, y, z; };
|
||||
struct HFA5 { double v, w, x, y, z; };
|
||||
|
||||
void __vectorcall hfa1(int a, struct HFA4 b, int c) {}
|
||||
// X32: define x86_vectorcallcc void @"\01hfa1@@40"(i32 inreg %a, %struct.HFA4 inreg %b.coerce, i32 inreg %c)
|
||||
// X64: define x86_vectorcallcc void @"\01hfa1@@48"(i32 %a, %struct.HFA4 inreg %b.coerce, i32 %c)
|
||||
// X32: define dso_local x86_vectorcallcc void @"\01hfa1@@40"(i32 inreg %a, %struct.HFA4 inreg %b.coerce, i32 inreg %c)
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01hfa1@@48"(i32 %a, %struct.HFA4 inreg %b.coerce, i32 %c)
|
||||
|
||||
// HFAs that would require more than six total SSE registers are passed
|
||||
// indirectly. Additional vector arguments can consume the rest of the SSE
|
||||
// registers.
|
||||
void __vectorcall hfa2(struct HFA4 a, struct HFA4 b, double c) {}
|
||||
// X32: define x86_vectorcallcc void @"\01hfa2@@72"(%struct.HFA4 inreg %a.coerce, %struct.HFA4* inreg %b, double %c)
|
||||
// X64: define x86_vectorcallcc void @"\01hfa2@@72"(%struct.HFA4 inreg %a.coerce, %struct.HFA4* %b, double %c)
|
||||
// X32: define dso_local x86_vectorcallcc void @"\01hfa2@@72"(%struct.HFA4 inreg %a.coerce, %struct.HFA4* inreg %b, double %c)
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01hfa2@@72"(%struct.HFA4 inreg %a.coerce, %struct.HFA4* %b, double %c)
|
||||
|
||||
// Ensure that we pass builtin types directly while counting them against the
|
||||
// SSE register usage.
|
||||
void __vectorcall hfa3(double a, double b, double c, double d, double e, struct HFA2 f) {}
|
||||
// X32: define x86_vectorcallcc void @"\01hfa3@@56"(double %a, double %b, double %c, double %d, double %e, %struct.HFA2* inreg %f)
|
||||
// X64: define x86_vectorcallcc void @"\01hfa3@@56"(double %a, double %b, double %c, double %d, double %e, %struct.HFA2* %f)
|
||||
// X32: define dso_local x86_vectorcallcc void @"\01hfa3@@56"(double %a, double %b, double %c, double %d, double %e, %struct.HFA2* inreg %f)
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01hfa3@@56"(double %a, double %b, double %c, double %d, double %e, %struct.HFA2* %f)
|
||||
|
||||
// Aggregates with more than four elements are not HFAs and are passed byval.
|
||||
// Because they are not classified as homogeneous, they don't get special
|
||||
// handling to ensure alignment.
|
||||
void __vectorcall hfa4(struct HFA5 a) {}
|
||||
// X32: define x86_vectorcallcc void @"\01hfa4@@40"(%struct.HFA5* byval align 4)
|
||||
// X64: define x86_vectorcallcc void @"\01hfa4@@40"(%struct.HFA5* %a)
|
||||
// X32: define dso_local x86_vectorcallcc void @"\01hfa4@@40"(%struct.HFA5* byval align 4)
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01hfa4@@40"(%struct.HFA5* %a)
|
||||
|
||||
// Return HFAs of 4 or fewer elements in registers.
|
||||
static struct HFA2 g_hfa2;
|
||||
struct HFA2 __vectorcall hfa5(void) { return g_hfa2; }
|
||||
// X32: define x86_vectorcallcc %struct.HFA2 @"\01hfa5@@0"()
|
||||
// X64: define x86_vectorcallcc %struct.HFA2 @"\01hfa5@@0"()
|
||||
// X32: define dso_local x86_vectorcallcc %struct.HFA2 @"\01hfa5@@0"()
|
||||
// X64: define dso_local x86_vectorcallcc %struct.HFA2 @"\01hfa5@@0"()
|
||||
|
||||
typedef float __attribute__((vector_size(16))) v4f32;
|
||||
struct HVA2 { v4f32 x, y; };
|
||||
@ -60,52 +60,52 @@ struct HVA4 { v4f32 w, x, y, z; };
|
||||
struct HVA5 { v4f32 w, x, y, z, p; };
|
||||
|
||||
v4f32 __vectorcall hva1(int a, struct HVA4 b, int c) {return b.w;}
|
||||
// X32: define x86_vectorcallcc <4 x float> @"\01hva1@@72"(i32 inreg %a, %struct.HVA4 inreg %b.coerce, i32 inreg %c)
|
||||
// X64: define x86_vectorcallcc <4 x float> @"\01hva1@@80"(i32 %a, %struct.HVA4 inreg %b.coerce, i32 %c)
|
||||
// X32: define dso_local x86_vectorcallcc <4 x float> @"\01hva1@@72"(i32 inreg %a, %struct.HVA4 inreg %b.coerce, i32 inreg %c)
|
||||
// X64: define dso_local x86_vectorcallcc <4 x float> @"\01hva1@@80"(i32 %a, %struct.HVA4 inreg %b.coerce, i32 %c)
|
||||
|
||||
v4f32 __vectorcall hva2(struct HVA4 a, struct HVA4 b, v4f32 c) {return c;}
|
||||
// X32: define x86_vectorcallcc <4 x float> @"\01hva2@@144"(%struct.HVA4 inreg %a.coerce, %struct.HVA4* inreg %b, <4 x float> %c)
|
||||
// X64: define x86_vectorcallcc <4 x float> @"\01hva2@@144"(%struct.HVA4 inreg %a.coerce, %struct.HVA4* %b, <4 x float> %c)
|
||||
// X32: define dso_local x86_vectorcallcc <4 x float> @"\01hva2@@144"(%struct.HVA4 inreg %a.coerce, %struct.HVA4* inreg %b, <4 x float> %c)
|
||||
// X64: define dso_local x86_vectorcallcc <4 x float> @"\01hva2@@144"(%struct.HVA4 inreg %a.coerce, %struct.HVA4* %b, <4 x float> %c)
|
||||
|
||||
v4f32 __vectorcall hva3(v4f32 a, v4f32 b, v4f32 c, v4f32 d, v4f32 e, struct HVA2 f) {return f.x;}
|
||||
// X32: define x86_vectorcallcc <4 x float> @"\01hva3@@112"(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x float> %d, <4 x float> %e, %struct.HVA2* inreg %f)
|
||||
// X64: define x86_vectorcallcc <4 x float> @"\01hva3@@112"(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x float> %d, <4 x float> %e, %struct.HVA2* %f)
|
||||
// X32: define dso_local x86_vectorcallcc <4 x float> @"\01hva3@@112"(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x float> %d, <4 x float> %e, %struct.HVA2* inreg %f)
|
||||
// X64: define dso_local x86_vectorcallcc <4 x float> @"\01hva3@@112"(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x float> %d, <4 x float> %e, %struct.HVA2* %f)
|
||||
|
||||
// vector types have higher priority then HVA structures, So vector types are allocated first
|
||||
// and HVAs are allocated if enough registers are available
|
||||
v4f32 __vectorcall hva4(struct HVA4 a, struct HVA2 b, v4f32 c) {return b.y;}
|
||||
// X32: define x86_vectorcallcc <4 x float> @"\01hva4@@112"(%struct.HVA4 inreg %a.coerce, %struct.HVA2* inreg %b, <4 x float> %c)
|
||||
// X64: define x86_vectorcallcc <4 x float> @"\01hva4@@112"(%struct.HVA4 inreg %a.coerce, %struct.HVA2* %b, <4 x float> %c)
|
||||
// X32: define dso_local x86_vectorcallcc <4 x float> @"\01hva4@@112"(%struct.HVA4 inreg %a.coerce, %struct.HVA2* inreg %b, <4 x float> %c)
|
||||
// X64: define dso_local x86_vectorcallcc <4 x float> @"\01hva4@@112"(%struct.HVA4 inreg %a.coerce, %struct.HVA2* %b, <4 x float> %c)
|
||||
|
||||
v4f32 __vectorcall hva5(struct HVA3 a, struct HVA3 b, v4f32 c, struct HVA2 d) {return d.y;}
|
||||
// X32: define x86_vectorcallcc <4 x float> @"\01hva5@@144"(%struct.HVA3 inreg %a.coerce, %struct.HVA3* inreg %b, <4 x float> %c, %struct.HVA2 inreg %d.coerce)
|
||||
// X64: define x86_vectorcallcc <4 x float> @"\01hva5@@144"(%struct.HVA3 inreg %a.coerce, %struct.HVA3* %b, <4 x float> %c, %struct.HVA2 inreg %d.coerce)
|
||||
// X32: define dso_local x86_vectorcallcc <4 x float> @"\01hva5@@144"(%struct.HVA3 inreg %a.coerce, %struct.HVA3* inreg %b, <4 x float> %c, %struct.HVA2 inreg %d.coerce)
|
||||
// X64: define dso_local x86_vectorcallcc <4 x float> @"\01hva5@@144"(%struct.HVA3 inreg %a.coerce, %struct.HVA3* %b, <4 x float> %c, %struct.HVA2 inreg %d.coerce)
|
||||
|
||||
struct HVA4 __vectorcall hva6(struct HVA4 a, struct HVA4 b) { return b;}
|
||||
// X32: define x86_vectorcallcc %struct.HVA4 @"\01hva6@@128"(%struct.HVA4 inreg %a.coerce, %struct.HVA4* inreg %b)
|
||||
// X64: define x86_vectorcallcc %struct.HVA4 @"\01hva6@@128"(%struct.HVA4 inreg %a.coerce, %struct.HVA4* %b)
|
||||
// X32: define dso_local x86_vectorcallcc %struct.HVA4 @"\01hva6@@128"(%struct.HVA4 inreg %a.coerce, %struct.HVA4* inreg %b)
|
||||
// X64: define dso_local x86_vectorcallcc %struct.HVA4 @"\01hva6@@128"(%struct.HVA4 inreg %a.coerce, %struct.HVA4* %b)
|
||||
|
||||
struct HVA5 __vectorcall hva7() {struct HVA5 a = {}; return a;}
|
||||
// X32: define x86_vectorcallcc void @"\01hva7@@0"(%struct.HVA5* inreg noalias sret %agg.result)
|
||||
// X64: define x86_vectorcallcc void @"\01hva7@@0"(%struct.HVA5* noalias sret %agg.result)
|
||||
// X32: define dso_local x86_vectorcallcc void @"\01hva7@@0"(%struct.HVA5* inreg noalias sret %agg.result)
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01hva7@@0"(%struct.HVA5* noalias sret %agg.result)
|
||||
|
||||
v4f32 __vectorcall hva8(v4f32 a, v4f32 b, v4f32 c, v4f32 d, int e, v4f32 f) {return f;}
|
||||
// X32: define x86_vectorcallcc <4 x float> @"\01hva8@@84"(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x float> %d, i32 inreg %e, <4 x float> %f)
|
||||
// X64: define x86_vectorcallcc <4 x float> @"\01hva8@@88"(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x float> %d, i32 %e, <4 x float> %f)
|
||||
// X32: define dso_local x86_vectorcallcc <4 x float> @"\01hva8@@84"(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x float> %d, i32 inreg %e, <4 x float> %f)
|
||||
// X64: define dso_local x86_vectorcallcc <4 x float> @"\01hva8@@88"(<4 x float> %a, <4 x float> %b, <4 x float> %c, <4 x float> %d, i32 %e, <4 x float> %f)
|
||||
|
||||
typedef float __attribute__((ext_vector_type(3))) v3f32;
|
||||
struct OddSizeHVA { v3f32 x, y; };
|
||||
|
||||
void __vectorcall odd_size_hva(struct OddSizeHVA a) {}
|
||||
// X32: define x86_vectorcallcc void @"\01odd_size_hva@@32"(%struct.OddSizeHVA inreg %a.coerce)
|
||||
// X64: define x86_vectorcallcc void @"\01odd_size_hva@@32"(%struct.OddSizeHVA inreg %a.coerce)
|
||||
// X32: define dso_local x86_vectorcallcc void @"\01odd_size_hva@@32"(%struct.OddSizeHVA inreg %a.coerce)
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01odd_size_hva@@32"(%struct.OddSizeHVA inreg %a.coerce)
|
||||
|
||||
// The Vectorcall ABI only allows passing the first 6 items in registers in x64, so this shouldn't
|
||||
// consider 'p7' as a register. Instead p5 gets put into the register on the second pass.
|
||||
// x86 should pass p2, p6 and p7 in registers, then p1 in the second pass.
|
||||
struct HFA2 __vectorcall AddParticles(struct HFA2 p1, float p2, struct HFA4 p3, int p4, struct HFA2 p5, float p6, float p7, int p8){ return p1;}
|
||||
// X32: define x86_vectorcallcc %struct.HFA2 @"\01AddParticles@@84"(%struct.HFA2 inreg %p1.coerce, float %p2, %struct.HFA4* inreg %p3, i32 inreg %p4, %struct.HFA2* %p5, float %p6, float %p7, i32 %p8)
|
||||
// X64: define x86_vectorcallcc %struct.HFA2 @"\01AddParticles@@104"(%struct.HFA2 inreg %p1.coerce, float %p2, %struct.HFA4* %p3, i32 %p4, %struct.HFA2 inreg %p5.coerce, float %p6, float %p7, i32 %p8)
|
||||
// X32: define dso_local x86_vectorcallcc %struct.HFA2 @"\01AddParticles@@84"(%struct.HFA2 inreg %p1.coerce, float %p2, %struct.HFA4* inreg %p3, i32 inreg %p4, %struct.HFA2* %p5, float %p6, float %p7, i32 %p8)
|
||||
// X64: define dso_local x86_vectorcallcc %struct.HFA2 @"\01AddParticles@@104"(%struct.HFA2 inreg %p1.coerce, float %p2, %struct.HFA4* %p3, i32 %p4, %struct.HFA2 inreg %p5.coerce, float %p6, float %p7, i32 %p8)
|
||||
|
||||
// Vectorcall in both architectures allows passing of an HVA as long as there is room,
|
||||
// even if it is not one of the first 6 arguments. First pass puts p4 into a
|
||||
@ -113,6 +113,6 @@ struct HFA2 __vectorcall AddParticles(struct HFA2 p1, float p2, struct HFA4 p3,
|
||||
// in a register, does NOT put p7 in a register (since theres no room), then puts
|
||||
// p8 in a register.
|
||||
void __vectorcall HVAAnywhere(struct HFA2 p1, int p2, int p3, float p4, int p5, int p6, struct HFA4 p7, struct HFA2 p8, float p9){}
|
||||
// X32: define x86_vectorcallcc void @"\01HVAAnywhere@@88"(%struct.HFA2 inreg %p1.coerce, i32 inreg %p2, i32 inreg %p3, float %p4, i32 %p5, i32 %p6, %struct.HFA4* %p7, %struct.HFA2 inreg %p8.coerce, float %p9)
|
||||
// X64: define x86_vectorcallcc void @"\01HVAAnywhere@@112"(%struct.HFA2 inreg %p1.coerce, i32 %p2, i32 %p3, float %p4, i32 %p5, i32 %p6, %struct.HFA4* %p7, %struct.HFA2 inreg %p8.coerce, float %p9)
|
||||
// X32: define dso_local x86_vectorcallcc void @"\01HVAAnywhere@@88"(%struct.HFA2 inreg %p1.coerce, i32 inreg %p2, i32 inreg %p3, float %p4, i32 %p5, i32 %p6, %struct.HFA4* %p7, %struct.HFA2 inreg %p8.coerce, float %p9)
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01HVAAnywhere@@112"(%struct.HFA2 inreg %p1.coerce, i32 %p2, i32 %p3, float %p4, i32 %p5, i32 %p6, %struct.HFA4* %p7, %struct.HFA2 inreg %p8.coerce, float %p9)
|
||||
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
// RUN: %clang_cc1 -Wno-return-type -Wno-unused-value -emit-llvm %s -o - | FileCheck %s
|
||||
// RUN: %clang_cc1 -Wno-return-type -Wno-unused-value -emit-llvm %s -w -o - | FileCheck %s
|
||||
|
||||
// CHECK: @i = common global [[INT:i[0-9]+]] 0
|
||||
// CHECK: @i = common {{(dso_local )?}}global [[INT:i[0-9]+]] 0
|
||||
volatile int i, j, k;
|
||||
volatile int ar[5];
|
||||
volatile char c;
|
||||
// CHECK: @ci = common global [[CINT:.*]] zeroinitializer
|
||||
// CHECK: @ci = common {{(dso_local )?}}global [[CINT:.*]] zeroinitializer
|
||||
volatile _Complex int ci;
|
||||
volatile struct S {
|
||||
#ifdef __cplusplus
|
||||
|
||||
@ -8,8 +8,8 @@ int function() {
|
||||
return 32;
|
||||
}
|
||||
|
||||
// CHECK-C: define i32 @function() {{.*}} {
|
||||
// CHECK-CXX: define i32 @_Z8functionv() {{.*}} {
|
||||
// CHECK-C: define dso_local i32 @function() {{.*}} {
|
||||
// CHECK-CXX: define dso_local i32 @_Z8functionv() {{.*}} {
|
||||
// CHECK: ret i32 32
|
||||
// CHECK: }
|
||||
|
||||
|
||||
@ -17,9 +17,9 @@ void call_imported_function() {
|
||||
}
|
||||
|
||||
// CHECK: @import_int = external dllimport global i32
|
||||
// CHECK: @export_int = common dllexport global i32 0, align 4
|
||||
// CHECK: @export_int = common dso_local dllexport global i32 0, align 4
|
||||
|
||||
// CHECK: define dllexport arm_aapcs_vfpcc void @export_implemented_function()
|
||||
// CHECK: define dso_local dllexport arm_aapcs_vfpcc void @export_implemented_function()
|
||||
|
||||
// CHECK: declare dllimport arm_aapcs_vfpcc void @import_function(i32)
|
||||
|
||||
|
||||
@ -6,11 +6,11 @@ struct f1 {
|
||||
|
||||
struct f1 return_f1(void) { while (1); }
|
||||
|
||||
// CHECK: define i32 @return_f1()
|
||||
// CHECK: define dso_local i32 @return_f1()
|
||||
|
||||
void receive_f1(struct f1 a0) { }
|
||||
|
||||
// CHECK: define void @receive_f1(float %a0.0)
|
||||
// CHECK: define dso_local void @receive_f1(float %a0.0)
|
||||
|
||||
struct f2 {
|
||||
float f;
|
||||
@ -19,11 +19,11 @@ struct f2 {
|
||||
|
||||
struct f2 return_f2(void) { while (1); }
|
||||
|
||||
// CHECK: define i64 @return_f2()
|
||||
// CHECK: define dso_local i64 @return_f2()
|
||||
|
||||
void receive_f2(struct f2 a0) { }
|
||||
|
||||
// CHECK: define void @receive_f2(float %a0.0, float %a0.1)
|
||||
// CHECK: define dso_local void @receive_f2(float %a0.0, float %a0.1)
|
||||
|
||||
struct f4 {
|
||||
float f;
|
||||
@ -34,9 +34,9 @@ struct f4 {
|
||||
|
||||
struct f4 return_f4(void) { while (1); }
|
||||
|
||||
// CHECK: define void @return_f4(%struct.f4* noalias sret %agg.result)
|
||||
// CHECK: define dso_local void @return_f4(%struct.f4* noalias sret %agg.result)
|
||||
|
||||
void receive_f4(struct f4 a0) { }
|
||||
|
||||
// CHECK: define void @receive_f4(float %a0.0, float %a0.1, float %a0.2, float %a0.3)
|
||||
// CHECK: define dso_local void @receive_f4(float %a0.0, float %a0.1, float %a0.2, float %a0.3)
|
||||
|
||||
|
||||
@ -40,7 +40,7 @@ void test_context_error_1() {
|
||||
float *error;
|
||||
context_error_1(&x, &error);
|
||||
}
|
||||
// CHECK-LABEL: define void @test_context_error_1()
|
||||
// CHECK-LABEL: define dso_local void @test_context_error_1()
|
||||
// CHECK: [[X:%.*]] = alloca i32, align 4
|
||||
// CHECK: [[ERROR:%.*]] = alloca float*, align 8
|
||||
// CHECK: [[TEMP:%.*]] = alloca swifterror float*, align 8
|
||||
@ -97,7 +97,7 @@ typedef struct {
|
||||
float f1;
|
||||
} struct_1;
|
||||
TEST(struct_1);
|
||||
// CHECK-LABEL: define swiftcc { i64, i64 } @return_struct_1() {{.*}}{
|
||||
// CHECK-LABEL: define dso_local swiftcc { i64, i64 } @return_struct_1() {{.*}}{
|
||||
// CHECK: [[RET:%.*]] = alloca [[STRUCT1:%.*]], align 4
|
||||
// CHECK: [[VAR:%.*]] = alloca [[STRUCT1]], align 4
|
||||
// CHECK: call void @llvm.memset
|
||||
@ -111,7 +111,7 @@ TEST(struct_1);
|
||||
// CHECK: [[R1:%.*]] = insertvalue { i64, i64 } [[R0]], i64 [[T1]], 1
|
||||
// CHECK: ret { i64, i64 } [[R1]]
|
||||
// CHECK: }
|
||||
// CHECK-LABEL: define swiftcc void @take_struct_1(i64, i64) {{.*}}{
|
||||
// CHECK-LABEL: define dso_local swiftcc void @take_struct_1(i64, i64) {{.*}}{
|
||||
// CHECK: [[V:%.*]] = alloca [[STRUCT1:%.*]], align 4
|
||||
// CHECK: [[CAST:%.*]] = bitcast [[STRUCT1]]* [[V]] to { i64, i64 }*
|
||||
// CHECK: [[GEP0:%.*]] = getelementptr inbounds { i64, i64 }, { i64, i64 }* [[CAST]], i32 0, i32 0
|
||||
@ -120,7 +120,7 @@ TEST(struct_1);
|
||||
// CHECK: store i64 %1, i64* [[GEP1]], align 4
|
||||
// CHECK: ret void
|
||||
// CHECK: }
|
||||
// CHECK-LABEL: define void @test_struct_1() {{.*}}{
|
||||
// CHECK-LABEL: define dso_local void @test_struct_1() {{.*}}{
|
||||
// CHECK: [[AGG:%.*]] = alloca [[STRUCT1:%.*]], align 4
|
||||
// CHECK: [[RET:%.*]] = call swiftcc { i64, i64 } @return_struct_1()
|
||||
// CHECK: [[CAST:%.*]] = bitcast [[STRUCT1]]* [[AGG]] to { i64, i64 }*
|
||||
@ -147,7 +147,7 @@ typedef struct {
|
||||
float f1;
|
||||
} struct_2;
|
||||
TEST(struct_2);
|
||||
// CHECK-LABEL: define swiftcc { i64, i64 } @return_struct_2() {{.*}}{
|
||||
// CHECK-LABEL: define dso_local swiftcc { i64, i64 } @return_struct_2() {{.*}}{
|
||||
// CHECK: [[RET:%.*]] = alloca [[STRUCT2_TYPE]], align 4
|
||||
// CHECK: [[VAR:%.*]] = alloca [[STRUCT2_TYPE]], align 4
|
||||
// CHECK: [[CASTVAR:%.*]] = bitcast {{.*}} [[VAR]]
|
||||
@ -164,7 +164,7 @@ TEST(struct_2);
|
||||
// CHECK: [[R1:%.*]] = insertvalue { i64, i64 } [[R0]], i64 [[T1]], 1
|
||||
// CHECK: ret { i64, i64 } [[R1]]
|
||||
// CHECK: }
|
||||
// CHECK-LABEL: define swiftcc void @take_struct_2(i64, i64) {{.*}}{
|
||||
// CHECK-LABEL: define dso_local swiftcc void @take_struct_2(i64, i64) {{.*}}{
|
||||
// CHECK: [[V:%.*]] = alloca [[STRUCT:%.*]], align 4
|
||||
// CHECK: [[CAST:%.*]] = bitcast [[STRUCT]]* [[V]] to { i64, i64 }*
|
||||
// CHECK: [[GEP0:%.*]] = getelementptr inbounds { i64, i64 }, { i64, i64 }* [[CAST]], i32 0, i32 0
|
||||
@ -173,7 +173,7 @@ TEST(struct_2);
|
||||
// CHECK: store i64 %1, i64* [[GEP1]], align 4
|
||||
// CHECK: ret void
|
||||
// CHECK: }
|
||||
// CHECK-LABEL: define void @test_struct_2() {{.*}} {
|
||||
// CHECK-LABEL: define dso_local void @test_struct_2() {{.*}} {
|
||||
// CHECK: [[TMP:%.*]] = alloca [[STRUCT2_TYPE]], align 4
|
||||
// CHECK: [[CALL:%.*]] = call swiftcc { i64, i64 } @return_struct_2()
|
||||
// CHECK: [[CAST_TMP:%.*]] = bitcast [[STRUCT2_TYPE]]* [[TMP]] to { i64, i64 }*
|
||||
@ -203,7 +203,7 @@ typedef struct {
|
||||
__attribute__((packed)) float f;
|
||||
} struct_misaligned_1;
|
||||
TEST(struct_misaligned_1)
|
||||
// CHECK-LABEL: define swiftcc i64 @return_struct_misaligned_1()
|
||||
// CHECK-LABEL: define dso_local swiftcc i64 @return_struct_misaligned_1()
|
||||
// CHECK: [[RET:%.*]] = alloca [[STRUCT:%.*]], align 1
|
||||
// CHECK: [[RES:%.*]] = alloca [[STRUCT]], align 1
|
||||
// CHECK: [[CAST:%.*]] = bitcast [[STRUCT]]* [[RES]] to i8*
|
||||
@ -216,14 +216,14 @@ TEST(struct_misaligned_1)
|
||||
// CHECK: [[R0:%.*]] = load i64, i64* [[GEP]], align 1
|
||||
// CHECK: ret i64 [[R0]]
|
||||
// CHECK:}
|
||||
// CHECK-LABEL: define swiftcc void @take_struct_misaligned_1(i64) {{.*}}{
|
||||
// CHECK-LABEL: define dso_local swiftcc void @take_struct_misaligned_1(i64) {{.*}}{
|
||||
// CHECK: [[V:%.*]] = alloca [[STRUCT:%.*]], align 1
|
||||
// CHECK: [[CAST:%.*]] = bitcast [[STRUCT]]* [[V]] to { i64 }*
|
||||
// CHECK: [[GEP:%.*]] = getelementptr inbounds { i64 }, { i64 }* [[CAST]], i32 0, i32 0
|
||||
// CHECK: store i64 %0, i64* [[GEP]], align 1
|
||||
// CHECK: ret void
|
||||
// CHECK: }
|
||||
// CHECK: define void @test_struct_misaligned_1() {{.*}}{
|
||||
// CHECK: define dso_local void @test_struct_misaligned_1() {{.*}}{
|
||||
// CHECK: [[AGG:%.*]] = alloca [[STRUCT:%.*]], align 1
|
||||
// CHECK: [[CALL:%.*]] = call swiftcc i64 @return_struct_misaligned_1()
|
||||
// CHECK: [[T0:%.*]] = bitcast [[STRUCT]]* [[AGG]] to { i64 }*
|
||||
@ -256,7 +256,7 @@ typedef union {
|
||||
double d;
|
||||
} union_het_fp;
|
||||
TEST(union_het_fp)
|
||||
// CHECK-LABEL: define swiftcc i64 @return_union_het_fp()
|
||||
// CHECK-LABEL: define dso_local swiftcc i64 @return_union_het_fp()
|
||||
// CHECK: [[RET:%.*]] = alloca [[UNION:%.*]], align 8
|
||||
// CHECK: [[RES:%.*]] = alloca [[UNION]], align 8
|
||||
// CHECK: [[CAST:%.*]] = bitcast [[UNION]]* [[RES]] to i8*
|
||||
@ -268,14 +268,14 @@ TEST(union_het_fp)
|
||||
// CHECK: [[GEP:%.*]] = getelementptr inbounds { i64 }, { i64 }* [[CAST]], i32 0, i32 0
|
||||
// CHECK: [[R0:%.*]] = load i64, i64* [[GEP]], align 8
|
||||
// CHECK: ret i64 [[R0]]
|
||||
// CHECK-LABEL: define swiftcc void @take_union_het_fp(i64) {{.*}}{
|
||||
// CHECK-LABEL: define dso_local swiftcc void @take_union_het_fp(i64) {{.*}}{
|
||||
// CHECK: [[V:%.*]] = alloca [[UNION:%.*]], align 8
|
||||
// CHECK: [[CAST:%.*]] = bitcast [[UNION]]* [[V]] to { i64 }*
|
||||
// CHECK: [[GEP:%.*]] = getelementptr inbounds { i64 }, { i64 }* [[CAST]], i32 0, i32 0
|
||||
// CHECK: store i64 %0, i64* [[GEP]], align 8
|
||||
// CHECK: ret void
|
||||
// CHECK: }
|
||||
// CHECK-LABEL: define void @test_union_het_fp() {{.*}}{
|
||||
// CHECK-LABEL: define dso_local void @test_union_het_fp() {{.*}}{
|
||||
// CHECK: [[AGG:%.*]] = alloca [[UNION:%.*]], align 8
|
||||
// CHECK: [[CALL:%.*]] = call swiftcc i64 @return_union_het_fp()
|
||||
// CHECK: [[T0:%.*]] = bitcast [[UNION]]* [[AGG]] to { i64 }*
|
||||
@ -294,7 +294,7 @@ typedef union {
|
||||
float f2;
|
||||
} union_hom_fp;
|
||||
TEST(union_hom_fp)
|
||||
// CHECK-LABEL: define void @test_union_hom_fp()
|
||||
// CHECK-LABEL: define dso_local void @test_union_hom_fp()
|
||||
// CHECK: [[TMP:%.*]] = alloca [[REC:%.*]], align 4
|
||||
// CHECK: [[CALL:%.*]] = call [[SWIFTCC]] float @return_union_hom_fp()
|
||||
// CHECK: [[CAST_TMP:%.*]] = bitcast [[REC]]* [[TMP]] to [[AGG:{ float }]]*
|
||||
@ -311,7 +311,7 @@ typedef union {
|
||||
float4 fv2;
|
||||
} union_hom_fp_partial;
|
||||
TEST(union_hom_fp_partial)
|
||||
// CHECK: define void @test_union_hom_fp_partial()
|
||||
// CHECK: define dso_local void @test_union_hom_fp_partial()
|
||||
// CHECK: [[AGG:%.*]] = alloca [[UNION:%.*]], align 16
|
||||
// CHECK: [[CALL:%.*]] = call swiftcc { i64, i64 } @return_union_hom_fp_partial()
|
||||
// CHECK: [[CAST:%.*]] = bitcast [[UNION]]* [[AGG]] to { i64, i64 }*
|
||||
@ -335,7 +335,7 @@ typedef union {
|
||||
float4 fv2;
|
||||
} union_het_fpv_partial;
|
||||
TEST(union_het_fpv_partial)
|
||||
// CHECK-LABEL: define void @test_union_het_fpv_partial()
|
||||
// CHECK-LABEL: define dso_local void @test_union_het_fpv_partial()
|
||||
// CHECK: [[AGG:%.*]] = alloca [[UNION:%.*]], align 16
|
||||
// CHECK: [[CALL:%.*]] = call swiftcc { i64, i64 } @return_union_het_fpv_partial()
|
||||
// CHECK: [[CAST:%.*]] = bitcast [[UNION]]* [[AGG]] to { i64, i64 }*
|
||||
@ -385,7 +385,7 @@ TEST(int8)
|
||||
// CHECK: [[T0:%.*]] = getelementptr inbounds [[AGG]], [[AGG]]* [[CAST_TMP]], i32 0, i32 1
|
||||
// CHECK: store <4 x i32> %1, <4 x i32>* [[T0]], align
|
||||
// CHECK: ret void
|
||||
// CHECK-LABEL: define void @test_int8()
|
||||
// CHECK-LABEL: define dso_local void @test_int8()
|
||||
// CHECK: [[TMP1:%.*]] = alloca [[REC]], align
|
||||
// CHECK: [[TMP2:%.*]] = alloca [[REC]], align
|
||||
// CHECK: [[CALL:%.*]] = call [[SWIFTCC]] [[UAGG]] @return_int8()
|
||||
@ -429,7 +429,7 @@ TEST(int5)
|
||||
// CHECK: [[T0:%.*]] = getelementptr inbounds [[AGG]], [[AGG]]* [[CAST_TMP]], i32 0, i32 1
|
||||
// CHECK: store i32 %1, i32* [[T0]], align
|
||||
// CHECK: ret void
|
||||
// CHECK-LABEL: define void @test_int5()
|
||||
// CHECK-LABEL: define dso_local void @test_int5()
|
||||
// CHECK: [[TMP1:%.*]] = alloca [[REC]], align
|
||||
// CHECK: [[TMP2:%.*]] = alloca [[REC]], align
|
||||
// CHECK: [[CALL:%.*]] = call [[SWIFTCC]] [[UAGG]] @return_int5()
|
||||
@ -455,4 +455,4 @@ typedef struct {
|
||||
int3 v __attribute__((packed));
|
||||
} misaligned_int3;
|
||||
TEST(misaligned_int3)
|
||||
// CHECK-LABEL: define swiftcc void @take_misaligned_int3(i64, i64)
|
||||
// CHECK-LABEL: define dso_local swiftcc void @take_misaligned_int3(i64, i64)
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// RUN: %clang_cc1 -w -triple i386-pc-win32 -emit-llvm -o - %s | FileCheck %s
|
||||
|
||||
// CHECK-LABEL: define i64 @f1_1()
|
||||
// CHECK-LABEL: define void @f1_2(i32 %a0.0, i32 %a0.1)
|
||||
// CHECK-LABEL: define dso_local i64 @f1_1()
|
||||
// CHECK-LABEL: define dso_local void @f1_2(i32 %a0.0, i32 %a0.1)
|
||||
struct s1 {
|
||||
int a;
|
||||
int b;
|
||||
@ -9,37 +9,37 @@ struct s1 {
|
||||
struct s1 f1_1(void) { while (1) {} }
|
||||
void f1_2(struct s1 a0) {}
|
||||
|
||||
// CHECK-LABEL: define i32 @f2_1()
|
||||
// CHECK-LABEL: define dso_local i32 @f2_1()
|
||||
struct s2 {
|
||||
short a;
|
||||
short b;
|
||||
};
|
||||
struct s2 f2_1(void) { while (1) {} }
|
||||
|
||||
// CHECK-LABEL: define i16 @f3_1()
|
||||
// CHECK-LABEL: define dso_local i16 @f3_1()
|
||||
struct s3 {
|
||||
char a;
|
||||
char b;
|
||||
};
|
||||
struct s3 f3_1(void) { while (1) {} }
|
||||
|
||||
// CHECK-LABEL: define i8 @f4_1()
|
||||
// CHECK-LABEL: define dso_local i8 @f4_1()
|
||||
struct s4 {
|
||||
char a:4;
|
||||
char b:4;
|
||||
};
|
||||
struct s4 f4_1(void) { while (1) {} }
|
||||
|
||||
// CHECK-LABEL: define i64 @f5_1()
|
||||
// CHECK-LABEL: define void @f5_2(double %a0.0)
|
||||
// CHECK-LABEL: define dso_local i64 @f5_1()
|
||||
// CHECK-LABEL: define dso_local void @f5_2(double %a0.0)
|
||||
struct s5 {
|
||||
double a;
|
||||
};
|
||||
struct s5 f5_1(void) { while (1) {} }
|
||||
void f5_2(struct s5 a0) {}
|
||||
|
||||
// CHECK-LABEL: define i32 @f6_1()
|
||||
// CHECK-LABEL: define void @f6_2(float %a0.0)
|
||||
// CHECK-LABEL: define dso_local i32 @f6_1()
|
||||
// CHECK-LABEL: define dso_local void @f6_2(float %a0.0)
|
||||
struct s6 {
|
||||
float a;
|
||||
};
|
||||
|
||||
@ -17,15 +17,15 @@ typedef struct { } ZeroSized;
|
||||
// CHECK: ret void
|
||||
Big returnBig(Big x) { return x; }
|
||||
|
||||
// CHECK-PCC-LABEL: define void @returnSmall
|
||||
// CHECK-PCC-LABEL: define {{(dso_local )?}}void @returnSmall
|
||||
// CHECK-PCC: ret void
|
||||
// CHECK-REG-LABEL: define i32 @returnSmall
|
||||
// CHECK-REG-LABEL: define {{(dso_local )?}}i32 @returnSmall
|
||||
// CHECK-REG: ret i32
|
||||
Small returnSmall(Small x) { return x; }
|
||||
|
||||
// CHECK-PCC-LABEL: define void @returnShort
|
||||
// CHECK-PCC-LABEL: define {{(dso_local )?}}void @returnShort
|
||||
// CHECK-PCC: ret void
|
||||
// CHECK-REG-LABEL: define i16 @returnShort
|
||||
// CHECK-REG-LABEL: define {{(dso_local )?}}i16 @returnShort
|
||||
// CHECK-REG: ret i16
|
||||
Short returnShort(Short x) { return x; }
|
||||
|
||||
|
||||
@ -3,29 +3,29 @@
|
||||
// To be ABI compatible with code generated by MSVC, there shouldn't be any
|
||||
// sign/zero extensions on types smaller than 64bit.
|
||||
|
||||
// CHECK-LABEL: define void @f1(i8 %a)
|
||||
// CHECK-LABEL: define dso_local void @f1(i8 %a)
|
||||
void f1(char a) {}
|
||||
|
||||
// CHECK-LABEL: define void @f2(i8 %a)
|
||||
// CHECK-LABEL: define dso_local void @f2(i8 %a)
|
||||
void f2(unsigned char a) {}
|
||||
|
||||
// CHECK-LABEL: define void @f3(i16 %a)
|
||||
// CHECK-LABEL: define dso_local void @f3(i16 %a)
|
||||
void f3(short a) {}
|
||||
|
||||
// CHECK-LABEL: define void @f4(i16 %a)
|
||||
// CHECK-LABEL: define dso_local void @f4(i16 %a)
|
||||
void f4(unsigned short a) {}
|
||||
|
||||
// For ABI compatibility with ICC, _Complex should be passed/returned
|
||||
// as if it were a struct with two elements.
|
||||
|
||||
// CHECK-LABEL: define void @f5(i64 %a.coerce)
|
||||
// CHECK-LABEL: define dso_local void @f5(i64 %a.coerce)
|
||||
void f5(_Complex float a) {}
|
||||
|
||||
// CHECK-LABEL: define void @f6({ double, double }* %a)
|
||||
// CHECK-LABEL: define dso_local void @f6({ double, double }* %a)
|
||||
void f6(_Complex double a) {}
|
||||
|
||||
// CHECK-LABEL: define i64 @f7()
|
||||
// CHECK-LABEL: define dso_local i64 @f7()
|
||||
_Complex float f7() { return 1.0; }
|
||||
|
||||
// CHECK-LABEL: define void @f8({ double, double }* noalias sret %agg.result)
|
||||
// CHECK-LABEL: define dso_local void @f8({ double, double }* noalias sret %agg.result)
|
||||
_Complex double f8() { return 1.0; }
|
||||
|
||||
@ -6,13 +6,13 @@ extern void __declspec(dllimport) fun();
|
||||
|
||||
extern int *varp;
|
||||
int *varp = &var;
|
||||
// CHECK-DAG: @"\01?varp@@3PAHA" = global i32* null
|
||||
// X64-DAG: @"\01?varp@@3PEAHEA" = global i32* null
|
||||
// CHECK-DAG: @"\01?varp@@3PAHA" = dso_local global i32* null
|
||||
// X64-DAG: @"\01?varp@@3PEAHEA" = dso_local global i32* null
|
||||
|
||||
extern void (*funp)();
|
||||
void (*funp)() = &fun;
|
||||
// CHECK-DAG: @"\01?funp@@3P6AXXZA" = global void ()* null
|
||||
// X64-DAG: @"\01?funp@@3P6AXXZEA" = global void ()* null
|
||||
// CHECK-DAG: @"\01?funp@@3P6AXXZA" = dso_local global void ()* null
|
||||
// X64-DAG: @"\01?funp@@3P6AXXZEA" = dso_local global void ()* null
|
||||
|
||||
// CHECK-LABEL: @"\01??__Evarp@@YAXXZ"
|
||||
// CHECK-DAG: store i32* @"\01?var@@3HA", i32** @"\01?varp@@3PAHA"
|
||||
|
||||
@ -12,7 +12,7 @@ struct B {
|
||||
};
|
||||
|
||||
void f();
|
||||
// CHECK-LABEL: define void @_Z1gv()
|
||||
// CHECK-LABEL: define {{(dso_local )?}}void @_Z1gv()
|
||||
void g() {
|
||||
// CHECK: br label %[[LOOP:.*]]
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
|
||||
struct __declspec(dllexport) SomeStruct {
|
||||
// Copy assignment operator should be produced, and exported:
|
||||
// M32: define weak_odr dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.SomeStruct* @"\01??4SomeStruct@@QAEAAU0@ABU0@@Z"
|
||||
// M64: define weak_odr dllexport dereferenceable({{[0-9]+}}) %struct.SomeStruct* @"\01??4SomeStruct@@QEAAAEAU0@AEBU0@@Z"
|
||||
// M32: define weak_odr dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.SomeStruct* @"\01??4SomeStruct@@QAEAAU0@ABU0@@Z"
|
||||
// M64: define weak_odr dso_local dllexport dereferenceable({{[0-9]+}}) %struct.SomeStruct* @"\01??4SomeStruct@@QEAAAEAU0@AEBU0@@Z"
|
||||
_Atomic(int) mData;
|
||||
};
|
||||
|
||||
@ -26,10 +26,10 @@ static void foo9(int *a) __attribute__((interrupt)) {}
|
||||
// X86_LINUX: define x86_intrcc void @{{.*}}foo8{{.*}}(i32* %{{.+}})
|
||||
// X86_LINUX: define linkonce_odr x86_intrcc void @{{.*}}foo9{{.*}}(i32* %{{.+}})
|
||||
// X86_64_WIN: @llvm.used = appending global [3 x i8*] [i8* bitcast (void (i32*, i64)* @{{.*}}foo7{{.*}} to i8*), i8* bitcast (void (i32*)* @{{.*}}foo8{{.*}} to i8*), i8* bitcast (void (i32*)* @{{.*}}foo9{{.*}} to i8*)], section "llvm.metadata"
|
||||
// X86_64_WIN: define x86_intrcc void @{{.*}}foo7{{.*}}(i32* %{{.+}}, i64 %{{.+}})
|
||||
// X86_64_WIN: define x86_intrcc void @{{.*}}foo8{{.*}}(i32* %{{.+}})
|
||||
// X86_64_WIN: define linkonce_odr x86_intrcc void @{{.*}}foo9{{.*}}(i32* %{{.+}})
|
||||
// X86_64_WIN: define dso_local x86_intrcc void @{{.*}}foo7{{.*}}(i32* %{{.+}}, i64 %{{.+}})
|
||||
// X86_64_WIN: define dso_local x86_intrcc void @{{.*}}foo8{{.*}}(i32* %{{.+}})
|
||||
// X86_64_WIN: define linkonce_odr dso_local x86_intrcc void @{{.*}}foo9{{.*}}(i32* %{{.+}})
|
||||
// X86_WIN: @llvm.used = appending global [3 x i8*] [i8* bitcast (void (i32*, i32)* @{{.*}}foo7{{.*}} to i8*), i8* bitcast (void (i32*)* @{{.*}}foo8{{.*}} to i8*), i8* bitcast (void (i32*)* @{{.*}}foo9{{.*}} to i8*)], section "llvm.metadata"
|
||||
// X86_WIN: define x86_intrcc void @{{.*}}foo7{{.*}}(i32* %{{.+}}, i32 %{{.+}})
|
||||
// X86_WIN: define x86_intrcc void @{{.*}}foo8{{.*}}(i32* %{{.+}})
|
||||
// X86_WIN: define linkonce_odr x86_intrcc void @{{.*}}foo9{{.*}}(i32* %{{.+}})
|
||||
// X86_WIN: define dso_local x86_intrcc void @{{.*}}foo7{{.*}}(i32* %{{.+}}, i32 %{{.+}})
|
||||
// X86_WIN: define dso_local x86_intrcc void @{{.*}}foo8{{.*}}(i32* %{{.+}})
|
||||
// X86_WIN: define linkonce_odr dso_local x86_intrcc void @{{.*}}foo9{{.*}}(i32* %{{.+}})
|
||||
|
||||
@ -182,7 +182,7 @@ void test_capture_lambda() {
|
||||
}
|
||||
|
||||
inline int test_captured_linkage() {
|
||||
// CHECK-7: @_ZZ21test_captured_linkagevE1i = linkonce_odr global i32 0
|
||||
// CHECK-7: @_ZZ21test_captured_linkagevE1i = linkonce_odr {{(dso_local )?}}global i32 0
|
||||
int j;
|
||||
#pragma clang __debug captured
|
||||
{
|
||||
|
||||
@ -7,4 +7,4 @@ struct B { char y; };
|
||||
struct C : A,B {};
|
||||
unsigned char x = ((char*)(B*)(C*)0x1000) - (char*)0x1000;
|
||||
|
||||
// CHECK: @x = global i8 1
|
||||
// CHECK: @x = {{(dso_local )?}}global i8 1
|
||||
|
||||
@ -4,7 +4,7 @@ const int x = 10;
|
||||
const int y = 20;
|
||||
const volatile int z = 30;
|
||||
// CHECK-NOT: @x
|
||||
// CHECK: @z = constant i32 30
|
||||
// CHECK: @z = {{(dso_local )?}}constant i32 30
|
||||
// CHECK: @_ZL1y = internal constant i32 20
|
||||
const int& b() { return y; }
|
||||
|
||||
@ -12,6 +12,6 @@ const char z1[] = "asdf";
|
||||
const char z2[] = "zxcv";
|
||||
const volatile char z3[] = "zxcv";
|
||||
// CHECK-NOT: @z1
|
||||
// CHECK: @z3 = constant
|
||||
// CHECK: @z3 = {{(dso_local )?}}constant
|
||||
// CHECK: @_ZL2z2 = internal constant
|
||||
const char* b2() { return z2; }
|
||||
|
||||
@ -45,8 +45,8 @@ B::~B() { }
|
||||
// CHECKIOS5-LABEL: define %class.B* @_ZN1BD2Ev(%class.B* %this)
|
||||
// CHECKIOS5-LABEL: define %class.B* @_ZN1BD1Ev(%class.B* %this)
|
||||
|
||||
// CHECKMS-LABEL: define x86_thiscallcc %class.B* @"\01??0B@@QAE@PAH@Z"(%class.B* returned %this, i32* %i)
|
||||
// CHECKMS-LABEL: define x86_thiscallcc void @"\01??1B@@UAE@XZ"(%class.B* %this)
|
||||
// CHECKMS-LABEL: define dso_local x86_thiscallcc %class.B* @"\01??0B@@QAE@PAH@Z"(%class.B* returned %this, i32* %i)
|
||||
// CHECKMS-LABEL: define dso_local x86_thiscallcc void @"\01??1B@@UAE@XZ"(%class.B* %this)
|
||||
|
||||
class C : public A, public B {
|
||||
public:
|
||||
@ -83,8 +83,8 @@ C::~C() { }
|
||||
// CHECKIOS5-LABEL: define void @_ZN1CD0Ev(%class.C* %this)
|
||||
// CHECKIOS5-LABEL: define void @_ZThn8_N1CD0Ev(%class.C* %this)
|
||||
|
||||
// CHECKMS-LABEL: define x86_thiscallcc %class.C* @"\01??0C@@QAE@PAHPAD@Z"(%class.C* returned %this, i32* %i, i8* %c)
|
||||
// CHECKMS-LABEL: define x86_thiscallcc void @"\01??1C@@UAE@XZ"(%class.C* %this)
|
||||
// CHECKMS-LABEL: define dso_local x86_thiscallcc %class.C* @"\01??0C@@QAE@PAHPAD@Z"(%class.C* returned %this, i32* %i, i8* %c)
|
||||
// CHECKMS-LABEL: define dso_local x86_thiscallcc void @"\01??1C@@UAE@XZ"(%class.C* %this)
|
||||
|
||||
class D : public virtual A {
|
||||
public:
|
||||
@ -110,8 +110,8 @@ D::~D() { }
|
||||
// CHECKIOS5-LABEL: define %class.D* @_ZN1DD2Ev(%class.D* %this, i8** %vtt)
|
||||
// CHECKIOS5-LABEL: define %class.D* @_ZN1DD1Ev(%class.D* %this)
|
||||
|
||||
// CHECKMS-LABEL: define x86_thiscallcc %class.D* @"\01??0D@@QAE@XZ"(%class.D* returned %this, i32 %is_most_derived)
|
||||
// CHECKMS-LABEL: define x86_thiscallcc void @"\01??1D@@UAE@XZ"(%class.D* %this)
|
||||
// CHECKMS-LABEL: define dso_local x86_thiscallcc %class.D* @"\01??0D@@QAE@XZ"(%class.D* returned %this, i32 %is_most_derived)
|
||||
// CHECKMS-LABEL: define dso_local x86_thiscallcc void @"\01??1D@@UAE@XZ"(%class.D* %this)
|
||||
|
||||
class E {
|
||||
public:
|
||||
|
||||
@ -14,5 +14,5 @@ A::A() {}
|
||||
|
||||
A::~A() {}
|
||||
|
||||
// CHECK: @_ZN1AC1Ev = dllexport alias void (%class.A*), void (%class.A*)* @_ZN1AC2Ev
|
||||
// CHECK: @_ZN1AD1Ev = dllexport alias void (%class.A*), void (%class.A*)* @_ZN1AD2Ev
|
||||
// CHECK: @_ZN1AC1Ev = dso_local dllexport alias void (%class.A*), void (%class.A*)* @_ZN1AC2Ev
|
||||
// CHECK: @_ZN1AD1Ev = dso_local dllexport alias void (%class.A*), void (%class.A*)* @_ZN1AD2Ev
|
||||
|
||||
@ -77,6 +77,6 @@ struct __declspec(dllexport) CtorClosureOutOfLine {
|
||||
CtorClosureOutOfLine::CtorClosureOutOfLine(const HasImplicitDtor2 &v) {}
|
||||
|
||||
// CHECK-LABEL: define weak_odr dllexport x86_thiscallcc void @"\01??_FCtorClosureInline@@QAEXXZ"
|
||||
// CHECK-LABEL: define linkonce_odr x86_thiscallcc void @"\01??1HasImplicitDtor1@@QAE@XZ"
|
||||
// CHECK-LABEL: define linkonce_odr dso_local x86_thiscallcc void @"\01??1HasImplicitDtor1@@QAE@XZ"
|
||||
// CHECK-LABEL: define weak_odr dllexport x86_thiscallcc void @"\01??_FCtorClosureOutOfLine@@QAEXXZ"
|
||||
// CHECK-LABEL: define linkonce_odr x86_thiscallcc void @"\01??1HasImplicitDtor2@@QAE@XZ"
|
||||
// CHECK-LABEL: define linkonce_odr dso_local x86_thiscallcc void @"\01??1HasImplicitDtor2@@QAE@XZ"
|
||||
|
||||
@ -6,5 +6,5 @@ struct __declspec(dllexport) C : A, B { virtual ~C(); };
|
||||
C::~C() {}
|
||||
|
||||
// This thunk should *not* be dllexport.
|
||||
// CHECK: define linkonce_odr i8* @"\01??_EC@@W7EAAPEAXI@Z"
|
||||
// CHECK: define dllexport void @"\01??1C@@UEAA@XZ"
|
||||
// CHECK: define linkonce_odr dso_local i8* @"\01??_EC@@W7EAAPEAXI@Z"
|
||||
// CHECK: define dso_local dllexport void @"\01??1C@@UEAA@XZ"
|
||||
|
||||
@ -26,101 +26,101 @@ extern "C" void free(void* p);
|
||||
struct ExportMembers {
|
||||
struct Nested;
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01?normalDef@ExportMembers@@QAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define dllexport void @"\01?normalDef@ExportMembers@@QEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?normalInclass@ExportMembers@@QAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01?normalInclass@ExportMembers@@QEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?normalInlineDef@ExportMembers@@QAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01?normalInlineDef@ExportMembers@@QEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?normalInlineDecl@ExportMembers@@QAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01?normalInlineDecl@ExportMembers@@QEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN13ExportMembers9normalDefEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define dllexport void @_ZN13ExportMembers9normalDefEv(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN13ExportMembers13normalInclassEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN13ExportMembers13normalInclassEv(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN13ExportMembers15normalInlineDefEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN13ExportMembers15normalInlineDefEv(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN13ExportMembers16normalInlineDeclEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN13ExportMembers16normalInlineDeclEv(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define linkonce_odr x86_thiscallcc void @"\01?referencedNonExportedInClass@ExportMembers@@QAEXXZ"
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01?normalDef@ExportMembers@@QAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01?normalDef@ExportMembers@@QEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01?normalInclass@ExportMembers@@QAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01?normalInclass@ExportMembers@@QEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01?normalInlineDef@ExportMembers@@QAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01?normalInlineDef@ExportMembers@@QEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01?normalInlineDecl@ExportMembers@@QAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01?normalInlineDecl@ExportMembers@@QEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers9normalDefEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN13ExportMembers9normalDefEv(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers13normalInclassEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers13normalInclassEv(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers15normalInlineDefEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers15normalInlineDefEv(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers16normalInlineDeclEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers16normalInlineDeclEv(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define linkonce_odr dso_local x86_thiscallcc void @"\01?referencedNonExportedInClass@ExportMembers@@QAEXXZ"
|
||||
__declspec(dllexport) void normalDef();
|
||||
__declspec(dllexport) void normalInclass() { referencedNonExportedInClass(); }
|
||||
__declspec(dllexport) void normalInlineDef();
|
||||
__declspec(dllexport) inline void normalInlineDecl();
|
||||
void referencedNonExportedInClass() {}
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01?virtualDef@ExportMembers@@UAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define dllexport void @"\01?virtualDef@ExportMembers@@UEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?virtualInclass@ExportMembers@@UAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01?virtualInclass@ExportMembers@@UEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?virtualInlineDef@ExportMembers@@UAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01?virtualInlineDef@ExportMembers@@UEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?virtualInlineDecl@ExportMembers@@UAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01?virtualInlineDecl@ExportMembers@@UEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN13ExportMembers10virtualDefEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define dllexport void @_ZN13ExportMembers10virtualDefEv(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN13ExportMembers14virtualInclassEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN13ExportMembers14virtualInclassEv(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN13ExportMembers16virtualInlineDefEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN13ExportMembers16virtualInlineDefEv(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN13ExportMembers17virtualInlineDeclEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN13ExportMembers17virtualInlineDeclEv(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01?virtualDef@ExportMembers@@UAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01?virtualDef@ExportMembers@@UEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01?virtualInclass@ExportMembers@@UAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01?virtualInclass@ExportMembers@@UEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01?virtualInlineDef@ExportMembers@@UAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01?virtualInlineDef@ExportMembers@@UEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01?virtualInlineDecl@ExportMembers@@UAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01?virtualInlineDecl@ExportMembers@@UEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers10virtualDefEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN13ExportMembers10virtualDefEv(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers14virtualInclassEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers14virtualInclassEv(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers16virtualInlineDefEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers16virtualInlineDefEv(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers17virtualInlineDeclEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers17virtualInlineDeclEv(%struct.ExportMembers* %this)
|
||||
__declspec(dllexport) virtual void virtualDef();
|
||||
__declspec(dllexport) virtual void virtualInclass() {}
|
||||
__declspec(dllexport) virtual void virtualInlineDef();
|
||||
__declspec(dllexport) virtual inline void virtualInlineDecl();
|
||||
|
||||
// MSC-DAG: define dllexport void @"\01?staticDef@ExportMembers@@SAXXZ"()
|
||||
// MSC-DAG: define weak_odr dllexport void @"\01?staticInclass@ExportMembers@@SAXXZ"()
|
||||
// MSC-DAG: define weak_odr dllexport void @"\01?staticInlineDef@ExportMembers@@SAXXZ"()
|
||||
// MSC-DAG: define weak_odr dllexport void @"\01?staticInlineDecl@ExportMembers@@SAXXZ"()
|
||||
// GNU-DAG: define dllexport void @_ZN13ExportMembers9staticDefEv()
|
||||
// GNU-DAG: define weak_odr dllexport void @_ZN13ExportMembers13staticInclassEv()
|
||||
// GNU-DAG: define weak_odr dllexport void @_ZN13ExportMembers15staticInlineDefEv()
|
||||
// GNU-DAG: define weak_odr dllexport void @_ZN13ExportMembers16staticInlineDeclEv()
|
||||
// MSC-DAG: define dso_local dllexport void @"\01?staticDef@ExportMembers@@SAXXZ"()
|
||||
// MSC-DAG: define weak_odr dso_local dllexport void @"\01?staticInclass@ExportMembers@@SAXXZ"()
|
||||
// MSC-DAG: define weak_odr dso_local dllexport void @"\01?staticInlineDef@ExportMembers@@SAXXZ"()
|
||||
// MSC-DAG: define weak_odr dso_local dllexport void @"\01?staticInlineDecl@ExportMembers@@SAXXZ"()
|
||||
// GNU-DAG: define dso_local dllexport void @_ZN13ExportMembers9staticDefEv()
|
||||
// GNU-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers13staticInclassEv()
|
||||
// GNU-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers15staticInlineDefEv()
|
||||
// GNU-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers16staticInlineDeclEv()
|
||||
__declspec(dllexport) static void staticDef();
|
||||
__declspec(dllexport) static void staticInclass() {}
|
||||
__declspec(dllexport) static void staticInlineDef();
|
||||
__declspec(dllexport) static inline void staticInlineDecl();
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01?protectedDef@ExportMembers@@IAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define dllexport void @"\01?protectedDef@ExportMembers@@IEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN13ExportMembers12protectedDefEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define dllexport void @_ZN13ExportMembers12protectedDefEv(%struct.ExportMembers* %this)
|
||||
// MSC-DAG: define dllexport void @"\01?protectedStaticDef@ExportMembers@@KAXXZ"()
|
||||
// GNU-DAG: define dllexport void @_ZN13ExportMembers18protectedStaticDefEv()
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01?protectedDef@ExportMembers@@IAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01?protectedDef@ExportMembers@@IEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers12protectedDefEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN13ExportMembers12protectedDefEv(%struct.ExportMembers* %this)
|
||||
// MSC-DAG: define dso_local dllexport void @"\01?protectedStaticDef@ExportMembers@@KAXXZ"()
|
||||
// GNU-DAG: define dso_local dllexport void @_ZN13ExportMembers18protectedStaticDefEv()
|
||||
protected:
|
||||
__declspec(dllexport) void protectedDef();
|
||||
__declspec(dllexport) static void protectedStaticDef();
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01?privateDef@ExportMembers@@AAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define dllexport void @"\01?privateDef@ExportMembers@@AEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN13ExportMembers10privateDefEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define dllexport void @_ZN13ExportMembers10privateDefEv(%struct.ExportMembers* %this)
|
||||
// MSC-DAG: define dllexport void @"\01?privateStaticDef@ExportMembers@@CAXXZ"()
|
||||
// GNU-DAG: define dllexport void @_ZN13ExportMembers16privateStaticDefEv()
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01?privateDef@ExportMembers@@AAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01?privateDef@ExportMembers@@AEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers10privateDefEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN13ExportMembers10privateDefEv(%struct.ExportMembers* %this)
|
||||
// MSC-DAG: define dso_local dllexport void @"\01?privateStaticDef@ExportMembers@@CAXXZ"()
|
||||
// GNU-DAG: define dso_local dllexport void @_ZN13ExportMembers16privateStaticDefEv()
|
||||
private:
|
||||
__declspec(dllexport) void privateDef();
|
||||
__declspec(dllexport) static void privateStaticDef();
|
||||
|
||||
// M32-DAG: define x86_thiscallcc void @"\01?ignored@ExportMembers@@QAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define void @"\01?ignored@ExportMembers@@QEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define x86_thiscallcc void @_ZN13ExportMembers7ignoredEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define void @_ZN13ExportMembers7ignoredEv(%struct.ExportMembers* %this)
|
||||
// M32-DAG: define dso_local x86_thiscallcc void @"\01?ignored@ExportMembers@@QAEXXZ"(%struct.ExportMembers* %this)
|
||||
// M64-DAG: define dso_local void @"\01?ignored@ExportMembers@@QEAAXXZ"(%struct.ExportMembers* %this)
|
||||
// G32-DAG: define dso_local x86_thiscallcc void @_ZN13ExportMembers7ignoredEv(%struct.ExportMembers* %this)
|
||||
// G64-DAG: define dso_local void @_ZN13ExportMembers7ignoredEv(%struct.ExportMembers* %this)
|
||||
public:
|
||||
void ignored();
|
||||
|
||||
// MSC-DAG: @"\01?StaticField@ExportMembers@@2HA" = dllexport global i32 1, align 4
|
||||
// MSC-DAG: @"\01?StaticConstField@ExportMembers@@2HB" = dllexport constant i32 1, align 4
|
||||
// MSC-DAG: @"\01?StaticConstFieldEqualInit@ExportMembers@@2HB" = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01?StaticConstFieldBraceInit@ExportMembers@@2HB" = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01?StaticConstFieldRefNotDef@ExportMembers@@2HB" = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01?ConstexprField@ExportMembers@@2HB" = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers11StaticFieldE = dllexport global i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers16StaticConstFieldE = dllexport constant i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers25StaticConstFieldEqualInitE = dllexport constant i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers25StaticConstFieldBraceInitE = dllexport constant i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers14ConstexprFieldE = dllexport constant i32 1, align 4
|
||||
// MSC-DAG: @"\01?StaticField@ExportMembers@@2HA" = dso_local dllexport global i32 1, align 4
|
||||
// MSC-DAG: @"\01?StaticConstField@ExportMembers@@2HB" = dso_local dllexport constant i32 1, align 4
|
||||
// MSC-DAG: @"\01?StaticConstFieldEqualInit@ExportMembers@@2HB" = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01?StaticConstFieldBraceInit@ExportMembers@@2HB" = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01?StaticConstFieldRefNotDef@ExportMembers@@2HB" = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01?ConstexprField@ExportMembers@@2HB" = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers11StaticFieldE = dso_local dllexport global i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers16StaticConstFieldE = dso_local dllexport constant i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers25StaticConstFieldEqualInitE = dso_local dllexport constant i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers25StaticConstFieldBraceInitE = dso_local dllexport constant i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers14ConstexprFieldE = dso_local dllexport constant i32 1, align 4
|
||||
__declspec(dllexport) static int StaticField;
|
||||
__declspec(dllexport) static const int StaticConstField;
|
||||
__declspec(dllexport) static const int StaticConstFieldEqualInit = 1;
|
||||
@ -154,99 +154,99 @@ constexpr int ExportMembers::ConstexprField;
|
||||
|
||||
// Export individual members of a nested class.
|
||||
struct ExportMembers::Nested {
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01?normalDef@Nested@ExportMembers@@QAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define dllexport void @"\01?normalDef@Nested@ExportMembers@@QEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?normalInclass@Nested@ExportMembers@@QAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01?normalInclass@Nested@ExportMembers@@QEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?normalInlineDef@Nested@ExportMembers@@QAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01?normalInlineDef@Nested@ExportMembers@@QEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?normalInlineDecl@Nested@ExportMembers@@QAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01?normalInlineDecl@Nested@ExportMembers@@QEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested9normalDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define dllexport void @_ZN13ExportMembers6Nested9normalDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested13normalInclassEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN13ExportMembers6Nested13normalInclassEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested15normalInlineDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN13ExportMembers6Nested15normalInlineDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested16normalInlineDeclEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN13ExportMembers6Nested16normalInlineDeclEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01?normalDef@Nested@ExportMembers@@QAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01?normalDef@Nested@ExportMembers@@QEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01?normalInclass@Nested@ExportMembers@@QAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01?normalInclass@Nested@ExportMembers@@QEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01?normalInlineDef@Nested@ExportMembers@@QAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01?normalInlineDef@Nested@ExportMembers@@QEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01?normalInlineDecl@Nested@ExportMembers@@QAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01?normalInlineDecl@Nested@ExportMembers@@QEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested9normalDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN13ExportMembers6Nested9normalDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested13normalInclassEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers6Nested13normalInclassEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested15normalInlineDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers6Nested15normalInlineDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested16normalInlineDeclEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers6Nested16normalInlineDeclEv(%"struct.ExportMembers::Nested"* %this)
|
||||
__declspec(dllexport) void normalDef();
|
||||
__declspec(dllexport) void normalInclass() {}
|
||||
__declspec(dllexport) void normalInlineDef();
|
||||
__declspec(dllexport) inline void normalInlineDecl();
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01?virtualDef@Nested@ExportMembers@@UAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define dllexport void @"\01?virtualDef@Nested@ExportMembers@@UEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?virtualInclass@Nested@ExportMembers@@UAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01?virtualInclass@Nested@ExportMembers@@UEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?virtualInlineDef@Nested@ExportMembers@@UAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01?virtualInlineDef@Nested@ExportMembers@@UEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?virtualInlineDecl@Nested@ExportMembers@@UAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01?virtualInlineDecl@Nested@ExportMembers@@UEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested10virtualDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define dllexport void @_ZN13ExportMembers6Nested10virtualDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested14virtualInclassEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN13ExportMembers6Nested14virtualInclassEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested16virtualInlineDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN13ExportMembers6Nested16virtualInlineDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested17virtualInlineDeclEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN13ExportMembers6Nested17virtualInlineDeclEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01?virtualDef@Nested@ExportMembers@@UAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01?virtualDef@Nested@ExportMembers@@UEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01?virtualInclass@Nested@ExportMembers@@UAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01?virtualInclass@Nested@ExportMembers@@UEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01?virtualInlineDef@Nested@ExportMembers@@UAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01?virtualInlineDef@Nested@ExportMembers@@UEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01?virtualInlineDecl@Nested@ExportMembers@@UAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01?virtualInlineDecl@Nested@ExportMembers@@UEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested10virtualDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN13ExportMembers6Nested10virtualDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested14virtualInclassEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers6Nested14virtualInclassEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested16virtualInlineDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers6Nested16virtualInlineDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested17virtualInlineDeclEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers6Nested17virtualInlineDeclEv(%"struct.ExportMembers::Nested"* %this)
|
||||
__declspec(dllexport) virtual void virtualDef();
|
||||
__declspec(dllexport) virtual void virtualInclass() {}
|
||||
__declspec(dllexport) virtual void virtualInlineDef();
|
||||
__declspec(dllexport) virtual inline void virtualInlineDecl();
|
||||
|
||||
// MSC-DAG: define dllexport void @"\01?staticDef@Nested@ExportMembers@@SAXXZ"()
|
||||
// MSC-DAG: define weak_odr dllexport void @"\01?staticInclass@Nested@ExportMembers@@SAXXZ"()
|
||||
// MSC-DAG: define weak_odr dllexport void @"\01?staticInlineDef@Nested@ExportMembers@@SAXXZ"()
|
||||
// MSC-DAG: define weak_odr dllexport void @"\01?staticInlineDecl@Nested@ExportMembers@@SAXXZ"()
|
||||
// GNU-DAG: define dllexport void @_ZN13ExportMembers6Nested9staticDefEv()
|
||||
// GNU-DAG: define weak_odr dllexport void @_ZN13ExportMembers6Nested13staticInclassEv()
|
||||
// GNU-DAG: define weak_odr dllexport void @_ZN13ExportMembers6Nested15staticInlineDefEv()
|
||||
// GNU-DAG: define weak_odr dllexport void @_ZN13ExportMembers6Nested16staticInlineDeclEv()
|
||||
// MSC-DAG: define dso_local dllexport void @"\01?staticDef@Nested@ExportMembers@@SAXXZ"()
|
||||
// MSC-DAG: define weak_odr dso_local dllexport void @"\01?staticInclass@Nested@ExportMembers@@SAXXZ"()
|
||||
// MSC-DAG: define weak_odr dso_local dllexport void @"\01?staticInlineDef@Nested@ExportMembers@@SAXXZ"()
|
||||
// MSC-DAG: define weak_odr dso_local dllexport void @"\01?staticInlineDecl@Nested@ExportMembers@@SAXXZ"()
|
||||
// GNU-DAG: define dso_local dllexport void @_ZN13ExportMembers6Nested9staticDefEv()
|
||||
// GNU-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers6Nested13staticInclassEv()
|
||||
// GNU-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers6Nested15staticInlineDefEv()
|
||||
// GNU-DAG: define weak_odr dso_local dllexport void @_ZN13ExportMembers6Nested16staticInlineDeclEv()
|
||||
__declspec(dllexport) static void staticDef();
|
||||
__declspec(dllexport) static void staticInclass() {}
|
||||
__declspec(dllexport) static void staticInlineDef();
|
||||
__declspec(dllexport) static inline void staticInlineDecl();
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01?protectedDef@Nested@ExportMembers@@IAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define dllexport void @"\01?protectedDef@Nested@ExportMembers@@IEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested12protectedDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define dllexport void @_ZN13ExportMembers6Nested12protectedDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// MSC-DAG: define dllexport void @"\01?protectedStaticDef@Nested@ExportMembers@@KAXXZ"()
|
||||
// GNU-DAG: define dllexport void @_ZN13ExportMembers6Nested18protectedStaticDefEv()
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01?protectedDef@Nested@ExportMembers@@IAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01?protectedDef@Nested@ExportMembers@@IEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested12protectedDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN13ExportMembers6Nested12protectedDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// MSC-DAG: define dso_local dllexport void @"\01?protectedStaticDef@Nested@ExportMembers@@KAXXZ"()
|
||||
// GNU-DAG: define dso_local dllexport void @_ZN13ExportMembers6Nested18protectedStaticDefEv()
|
||||
protected:
|
||||
__declspec(dllexport) void protectedDef();
|
||||
__declspec(dllexport) static void protectedStaticDef();
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01?privateDef@Nested@ExportMembers@@AAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define dllexport void @"\01?privateDef@Nested@ExportMembers@@AEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested10privateDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define dllexport void @_ZN13ExportMembers6Nested10privateDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// MSC-DAG: define dllexport void @"\01?privateStaticDef@Nested@ExportMembers@@CAXXZ"()
|
||||
// GNU-DAG: define dllexport void @_ZN13ExportMembers6Nested16privateStaticDefEv()
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01?privateDef@Nested@ExportMembers@@AAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01?privateDef@Nested@ExportMembers@@AEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN13ExportMembers6Nested10privateDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN13ExportMembers6Nested10privateDefEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// MSC-DAG: define dso_local dllexport void @"\01?privateStaticDef@Nested@ExportMembers@@CAXXZ"()
|
||||
// GNU-DAG: define dso_local dllexport void @_ZN13ExportMembers6Nested16privateStaticDefEv()
|
||||
private:
|
||||
__declspec(dllexport) void privateDef();
|
||||
__declspec(dllexport) static void privateStaticDef();
|
||||
|
||||
// M32-DAG: define x86_thiscallcc void @"\01?ignored@Nested@ExportMembers@@QAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define void @"\01?ignored@Nested@ExportMembers@@QEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define x86_thiscallcc void @_ZN13ExportMembers6Nested7ignoredEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define void @_ZN13ExportMembers6Nested7ignoredEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// M32-DAG: define dso_local x86_thiscallcc void @"\01?ignored@Nested@ExportMembers@@QAEXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// M64-DAG: define dso_local void @"\01?ignored@Nested@ExportMembers@@QEAAXXZ"(%"struct.ExportMembers::Nested"* %this)
|
||||
// G32-DAG: define dso_local x86_thiscallcc void @_ZN13ExportMembers6Nested7ignoredEv(%"struct.ExportMembers::Nested"* %this)
|
||||
// G64-DAG: define dso_local void @_ZN13ExportMembers6Nested7ignoredEv(%"struct.ExportMembers::Nested"* %this)
|
||||
public:
|
||||
void ignored();
|
||||
|
||||
// MSC-DAG: @"\01?StaticField@Nested@ExportMembers@@2HA" = dllexport global i32 1, align 4
|
||||
// MSC-DAG: @"\01?StaticConstField@Nested@ExportMembers@@2HB" = dllexport constant i32 1, align 4
|
||||
// MSC-DAG: @"\01?StaticConstFieldEqualInit@Nested@ExportMembers@@2HB" = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01?StaticConstFieldBraceInit@Nested@ExportMembers@@2HB" = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01?StaticConstFieldRefNotDef@Nested@ExportMembers@@2HB" = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01?ConstexprField@Nested@ExportMembers@@2HB" = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers6Nested11StaticFieldE = dllexport global i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers6Nested16StaticConstFieldE = dllexport constant i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers6Nested25StaticConstFieldEqualInitE = dllexport constant i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers6Nested25StaticConstFieldBraceInitE = dllexport constant i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers6Nested14ConstexprFieldE = dllexport constant i32 1, align 4
|
||||
// MSC-DAG: @"\01?StaticField@Nested@ExportMembers@@2HA" = dso_local dllexport global i32 1, align 4
|
||||
// MSC-DAG: @"\01?StaticConstField@Nested@ExportMembers@@2HB" = dso_local dllexport constant i32 1, align 4
|
||||
// MSC-DAG: @"\01?StaticConstFieldEqualInit@Nested@ExportMembers@@2HB" = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01?StaticConstFieldBraceInit@Nested@ExportMembers@@2HB" = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01?StaticConstFieldRefNotDef@Nested@ExportMembers@@2HB" = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01?ConstexprField@Nested@ExportMembers@@2HB" = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers6Nested11StaticFieldE = dso_local dllexport global i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers6Nested16StaticConstFieldE = dso_local dllexport constant i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers6Nested25StaticConstFieldEqualInitE = dso_local dllexport constant i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers6Nested25StaticConstFieldBraceInitE = dso_local dllexport constant i32 1, align 4
|
||||
// GNU-DAG: @_ZN13ExportMembers6Nested14ConstexprFieldE = dso_local dllexport constant i32 1, align 4
|
||||
__declspec(dllexport) static int StaticField;
|
||||
__declspec(dllexport) static const int StaticConstField;
|
||||
__declspec(dllexport) static const int StaticConstFieldEqualInit = 1;
|
||||
@ -280,48 +280,48 @@ constexpr int ExportMembers::Nested::ConstexprField;
|
||||
|
||||
// Export special member functions.
|
||||
struct ExportSpecials {
|
||||
// M32-DAG: define dllexport x86_thiscallcc %struct.ExportSpecials* @"\01??0ExportSpecials@@QAE@XZ"(%struct.ExportSpecials* returned %this)
|
||||
// M64-DAG: define dllexport %struct.ExportSpecials* @"\01??0ExportSpecials@@QEAA@XZ"(%struct.ExportSpecials* returned %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN14ExportSpecialsC1Ev(%struct.ExportSpecials* %this)
|
||||
// G64-DAG: define dllexport void @_ZN14ExportSpecialsC1Ev(%struct.ExportSpecials* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN14ExportSpecialsC2Ev(%struct.ExportSpecials* %this)
|
||||
// G64-DAG: define dllexport void @_ZN14ExportSpecialsC2Ev(%struct.ExportSpecials* %this)
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc %struct.ExportSpecials* @"\01??0ExportSpecials@@QAE@XZ"(%struct.ExportSpecials* returned %this)
|
||||
// M64-DAG: define dso_local dllexport %struct.ExportSpecials* @"\01??0ExportSpecials@@QEAA@XZ"(%struct.ExportSpecials* returned %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN14ExportSpecialsC1Ev(%struct.ExportSpecials* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN14ExportSpecialsC1Ev(%struct.ExportSpecials* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN14ExportSpecialsC2Ev(%struct.ExportSpecials* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN14ExportSpecialsC2Ev(%struct.ExportSpecials* %this)
|
||||
__declspec(dllexport) ExportSpecials();
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01??1ExportSpecials@@QAE@XZ"(%struct.ExportSpecials* %this)
|
||||
// M64-DAG: define dllexport void @"\01??1ExportSpecials@@QEAA@XZ"(%struct.ExportSpecials* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN14ExportSpecialsD1Ev(%struct.ExportSpecials* %this)
|
||||
// G64-DAG: define dllexport void @_ZN14ExportSpecialsD1Ev(%struct.ExportSpecials* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN14ExportSpecialsD2Ev(%struct.ExportSpecials* %this)
|
||||
// G64-DAG: define dllexport void @_ZN14ExportSpecialsD2Ev(%struct.ExportSpecials* %this)
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01??1ExportSpecials@@QAE@XZ"(%struct.ExportSpecials* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01??1ExportSpecials@@QEAA@XZ"(%struct.ExportSpecials* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN14ExportSpecialsD1Ev(%struct.ExportSpecials* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN14ExportSpecialsD1Ev(%struct.ExportSpecials* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN14ExportSpecialsD2Ev(%struct.ExportSpecials* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN14ExportSpecialsD2Ev(%struct.ExportSpecials* %this)
|
||||
__declspec(dllexport) ~ExportSpecials();
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc %struct.ExportSpecials* @"\01??0ExportSpecials@@QAE@ABU0@@Z"(%struct.ExportSpecials* returned %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dllexport %struct.ExportSpecials* @"\01??0ExportSpecials@@QEAA@AEBU0@@Z"(%struct.ExportSpecials* returned %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN14ExportSpecialsC1ERKS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dllexport void @_ZN14ExportSpecialsC1ERKS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN14ExportSpecialsC2ERKS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dllexport void @_ZN14ExportSpecialsC2ERKS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc %struct.ExportSpecials* @"\01??0ExportSpecials@@QAE@ABU0@@Z"(%struct.ExportSpecials* returned %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dso_local dllexport %struct.ExportSpecials* @"\01??0ExportSpecials@@QEAA@AEBU0@@Z"(%struct.ExportSpecials* returned %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN14ExportSpecialsC1ERKS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dso_local dllexport void @_ZN14ExportSpecialsC1ERKS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN14ExportSpecialsC2ERKS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dso_local dllexport void @_ZN14ExportSpecialsC2ERKS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
__declspec(dllexport) ExportSpecials(const ExportSpecials&);
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @"\01??4ExportSpecials@@QAEAAU0@ABU0@@Z"(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dllexport dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @"\01??4ExportSpecials@@QEAAAEAU0@AEBU0@@Z"(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @_ZN14ExportSpecialsaSERKS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dllexport dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @_ZN14ExportSpecialsaSERKS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @"\01??4ExportSpecials@@QAEAAU0@ABU0@@Z"(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dso_local dllexport dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @"\01??4ExportSpecials@@QEAAAEAU0@AEBU0@@Z"(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @_ZN14ExportSpecialsaSERKS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dso_local dllexport dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @_ZN14ExportSpecialsaSERKS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
__declspec(dllexport) ExportSpecials& operator=(const ExportSpecials&);
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc %struct.ExportSpecials* @"\01??0ExportSpecials@@QAE@$$QAU0@@Z"(%struct.ExportSpecials* returned %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dllexport %struct.ExportSpecials* @"\01??0ExportSpecials@@QEAA@$$QEAU0@@Z"(%struct.ExportSpecials* returned %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN14ExportSpecialsC1EOS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dllexport void @_ZN14ExportSpecialsC1EOS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN14ExportSpecialsC2EOS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dllexport void @_ZN14ExportSpecialsC2EOS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc %struct.ExportSpecials* @"\01??0ExportSpecials@@QAE@$$QAU0@@Z"(%struct.ExportSpecials* returned %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dso_local dllexport %struct.ExportSpecials* @"\01??0ExportSpecials@@QEAA@$$QEAU0@@Z"(%struct.ExportSpecials* returned %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN14ExportSpecialsC1EOS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dso_local dllexport void @_ZN14ExportSpecialsC1EOS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN14ExportSpecialsC2EOS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dso_local dllexport void @_ZN14ExportSpecialsC2EOS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
__declspec(dllexport) ExportSpecials(ExportSpecials&&);
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @"\01??4ExportSpecials@@QAEAAU0@$$QAU0@@Z"(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dllexport dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @"\01??4ExportSpecials@@QEAAAEAU0@$$QEAU0@@Z"(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @_ZN14ExportSpecialsaSEOS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dllexport dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @_ZN14ExportSpecialsaSEOS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @"\01??4ExportSpecials@@QAEAAU0@$$QAU0@@Z"(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dso_local dllexport dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @"\01??4ExportSpecials@@QEAAAEAU0@$$QEAU0@@Z"(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @_ZN14ExportSpecialsaSEOS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dso_local dllexport dereferenceable({{[0-9]+}}) %struct.ExportSpecials* @_ZN14ExportSpecialsaSEOS_(%struct.ExportSpecials* %this, %struct.ExportSpecials* dereferenceable({{[0-9]+}}))
|
||||
__declspec(dllexport) ExportSpecials& operator=(ExportSpecials&&);
|
||||
};
|
||||
ExportSpecials::ExportSpecials() {}
|
||||
@ -334,40 +334,40 @@ ExportSpecials& ExportSpecials::operator=(ExportSpecials&&) { return *this; }
|
||||
|
||||
// Export class with inline special member functions.
|
||||
struct ExportInlineSpecials {
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc %struct.ExportInlineSpecials* @"\01??0ExportInlineSpecials@@QAE@XZ"(%struct.ExportInlineSpecials* returned %this)
|
||||
// M64-DAG: define weak_odr dllexport %struct.ExportInlineSpecials* @"\01??0ExportInlineSpecials@@QEAA@XZ"(
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN20ExportInlineSpecialsC1Ev(
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN20ExportInlineSpecialsC1Ev(
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc %struct.ExportInlineSpecials* @"\01??0ExportInlineSpecials@@QAE@XZ"(%struct.ExportInlineSpecials* returned %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport %struct.ExportInlineSpecials* @"\01??0ExportInlineSpecials@@QEAA@XZ"(
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN20ExportInlineSpecialsC1Ev(
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN20ExportInlineSpecialsC1Ev(
|
||||
__declspec(dllexport) ExportInlineSpecials() {}
|
||||
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01??1ExportInlineSpecials@@QAE@XZ"(
|
||||
// M64-DAG: define weak_odr dllexport void @"\01??1ExportInlineSpecials@@QEAA@XZ"(
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN20ExportInlineSpecialsD1Ev(
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN20ExportInlineSpecialsD1Ev(
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01??1ExportInlineSpecials@@QAE@XZ"(
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01??1ExportInlineSpecials@@QEAA@XZ"(
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN20ExportInlineSpecialsD1Ev(
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN20ExportInlineSpecialsD1Ev(
|
||||
__declspec(dllexport) ~ExportInlineSpecials() {}
|
||||
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc %struct.ExportInlineSpecials* @"\01??0ExportInlineSpecials@@QAE@ABU0@@Z"(
|
||||
// M64-DAG: define weak_odr dllexport %struct.ExportInlineSpecials* @"\01??0ExportInlineSpecials@@QEAA@AEBU0@@Z"(
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN20ExportInlineSpecialsC1ERKS_(
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN20ExportInlineSpecialsC1ERKS_(
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc %struct.ExportInlineSpecials* @"\01??0ExportInlineSpecials@@QAE@ABU0@@Z"(
|
||||
// M64-DAG: define weak_odr dso_local dllexport %struct.ExportInlineSpecials* @"\01??0ExportInlineSpecials@@QEAA@AEBU0@@Z"(
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN20ExportInlineSpecialsC1ERKS_(
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN20ExportInlineSpecialsC1ERKS_(
|
||||
__declspec(dllexport) inline ExportInlineSpecials(const ExportInlineSpecials&);
|
||||
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @"\01??4ExportInlineSpecials@@QAEAAU0@ABU0@@Z"(
|
||||
// M64-DAG: define weak_odr dllexport dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @"\01??4ExportInlineSpecials@@QEAAAEAU0@AEBU0@@Z"(
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @_ZN20ExportInlineSpecialsaSERKS_(
|
||||
// G64-DAG: define weak_odr dllexport dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @_ZN20ExportInlineSpecialsaSERKS_(
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @"\01??4ExportInlineSpecials@@QAEAAU0@ABU0@@Z"(
|
||||
// M64-DAG: define weak_odr dso_local dllexport dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @"\01??4ExportInlineSpecials@@QEAAAEAU0@AEBU0@@Z"(
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @_ZN20ExportInlineSpecialsaSERKS_(
|
||||
// G64-DAG: define weak_odr dso_local dllexport dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @_ZN20ExportInlineSpecialsaSERKS_(
|
||||
__declspec(dllexport) ExportInlineSpecials& operator=(const ExportInlineSpecials&);
|
||||
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc %struct.ExportInlineSpecials* @"\01??0ExportInlineSpecials@@QAE@$$QAU0@@Z"(
|
||||
// M64-DAG: define weak_odr dllexport %struct.ExportInlineSpecials* @"\01??0ExportInlineSpecials@@QEAA@$$QEAU0@@Z"(
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN20ExportInlineSpecialsC1EOS_(
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN20ExportInlineSpecialsC1EOS_(
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc %struct.ExportInlineSpecials* @"\01??0ExportInlineSpecials@@QAE@$$QAU0@@Z"(
|
||||
// M64-DAG: define weak_odr dso_local dllexport %struct.ExportInlineSpecials* @"\01??0ExportInlineSpecials@@QEAA@$$QEAU0@@Z"(
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN20ExportInlineSpecialsC1EOS_(
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN20ExportInlineSpecialsC1EOS_(
|
||||
__declspec(dllexport) ExportInlineSpecials(ExportInlineSpecials&&) {}
|
||||
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @"\01??4ExportInlineSpecials@@QAEAAU0@$$QAU0@@Z"(
|
||||
// M64-DAG: define weak_odr dllexport dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @"\01??4ExportInlineSpecials@@QEAAAEAU0@$$QEAU0@@Z"(
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @_ZN20ExportInlineSpecialsaSEOS_(
|
||||
// G64-DAG: define weak_odr dllexport dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @_ZN20ExportInlineSpecialsaSEOS_(
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @"\01??4ExportInlineSpecials@@QAEAAU0@$$QAU0@@Z"(
|
||||
// M64-DAG: define weak_odr dso_local dllexport dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @"\01??4ExportInlineSpecials@@QEAAAEAU0@$$QEAU0@@Z"(
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @_ZN20ExportInlineSpecialsaSEOS_(
|
||||
// G64-DAG: define weak_odr dso_local dllexport dereferenceable({{[0-9]+}}) %struct.ExportInlineSpecials* @_ZN20ExportInlineSpecialsaSEOS_(
|
||||
__declspec(dllexport) ExportInlineSpecials& operator=(ExportInlineSpecials&&) { return *this; }
|
||||
};
|
||||
ExportInlineSpecials::ExportInlineSpecials(const ExportInlineSpecials&) {}
|
||||
@ -384,74 +384,74 @@ struct ExportDefaultedDefs {
|
||||
__declspec(dllexport) ExportDefaultedDefs& operator=(ExportDefaultedDefs&&);
|
||||
};
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc %struct.ExportDefaultedDefs* @"\01??0ExportDefaultedDefs@@QAE@XZ"(%struct.ExportDefaultedDefs* returned %this)
|
||||
// M64-DAG: define dllexport %struct.ExportDefaultedDefs* @"\01??0ExportDefaultedDefs@@QEAA@XZ"(%struct.ExportDefaultedDefs* returned %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsC1Ev(%struct.ExportDefaultedDefs* %this)
|
||||
// G64-DAG: define dllexport void @_ZN19ExportDefaultedDefsC1Ev(%struct.ExportDefaultedDefs* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsC2Ev(%struct.ExportDefaultedDefs* %this)
|
||||
// G64-DAG: define dllexport void @_ZN19ExportDefaultedDefsC2Ev(%struct.ExportDefaultedDefs* %this)
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc %struct.ExportDefaultedDefs* @"\01??0ExportDefaultedDefs@@QAE@XZ"(%struct.ExportDefaultedDefs* returned %this)
|
||||
// M64-DAG: define dso_local dllexport %struct.ExportDefaultedDefs* @"\01??0ExportDefaultedDefs@@QEAA@XZ"(%struct.ExportDefaultedDefs* returned %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsC1Ev(%struct.ExportDefaultedDefs* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN19ExportDefaultedDefsC1Ev(%struct.ExportDefaultedDefs* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsC2Ev(%struct.ExportDefaultedDefs* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN19ExportDefaultedDefsC2Ev(%struct.ExportDefaultedDefs* %this)
|
||||
__declspec(dllexport) ExportDefaultedDefs::ExportDefaultedDefs() = default;
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01??1ExportDefaultedDefs@@QAE@XZ"(%struct.ExportDefaultedDefs* %this)
|
||||
// M64-DAG: define dllexport void @"\01??1ExportDefaultedDefs@@QEAA@XZ"(%struct.ExportDefaultedDefs* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsD1Ev(%struct.ExportDefaultedDefs* %this)
|
||||
// G64-DAG: define dllexport void @_ZN19ExportDefaultedDefsD1Ev(%struct.ExportDefaultedDefs* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsD2Ev(%struct.ExportDefaultedDefs* %this)
|
||||
// G64-DAG: define dllexport void @_ZN19ExportDefaultedDefsD2Ev(%struct.ExportDefaultedDefs* %this)
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01??1ExportDefaultedDefs@@QAE@XZ"(%struct.ExportDefaultedDefs* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01??1ExportDefaultedDefs@@QEAA@XZ"(%struct.ExportDefaultedDefs* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsD1Ev(%struct.ExportDefaultedDefs* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN19ExportDefaultedDefsD1Ev(%struct.ExportDefaultedDefs* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsD2Ev(%struct.ExportDefaultedDefs* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN19ExportDefaultedDefsD2Ev(%struct.ExportDefaultedDefs* %this)
|
||||
ExportDefaultedDefs::~ExportDefaultedDefs() = default;
|
||||
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc %struct.ExportDefaultedDefs* @"\01??0ExportDefaultedDefs@@QAE@ABU0@@Z"(%struct.ExportDefaultedDefs* returned %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define weak_odr dllexport %struct.ExportDefaultedDefs* @"\01??0ExportDefaultedDefs@@QEAA@AEBU0@@Z"(%struct.ExportDefaultedDefs* returned %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsC1ERKS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN19ExportDefaultedDefsC1ERKS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsC2ERKS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN19ExportDefaultedDefsC2ERKS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc %struct.ExportDefaultedDefs* @"\01??0ExportDefaultedDefs@@QAE@ABU0@@Z"(%struct.ExportDefaultedDefs* returned %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define weak_odr dso_local dllexport %struct.ExportDefaultedDefs* @"\01??0ExportDefaultedDefs@@QEAA@AEBU0@@Z"(%struct.ExportDefaultedDefs* returned %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsC1ERKS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN19ExportDefaultedDefsC1ERKS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsC2ERKS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN19ExportDefaultedDefsC2ERKS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
__declspec(dllexport) ExportDefaultedDefs::ExportDefaultedDefs(const ExportDefaultedDefs&) = default;
|
||||
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @"\01??4ExportDefaultedDefs@@QAEAAU0@ABU0@@Z"(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define weak_odr dllexport dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @"\01??4ExportDefaultedDefs@@QEAAAEAU0@AEBU0@@Z"(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @_ZN19ExportDefaultedDefsaSERKS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define weak_odr dllexport dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @_ZN19ExportDefaultedDefsaSERKS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @"\01??4ExportDefaultedDefs@@QAEAAU0@ABU0@@Z"(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define weak_odr dso_local dllexport dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @"\01??4ExportDefaultedDefs@@QEAAAEAU0@AEBU0@@Z"(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @_ZN19ExportDefaultedDefsaSERKS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define weak_odr dso_local dllexport dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @_ZN19ExportDefaultedDefsaSERKS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
inline ExportDefaultedDefs& ExportDefaultedDefs::operator=(const ExportDefaultedDefs&) = default;
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc %struct.ExportDefaultedDefs* @"\01??0ExportDefaultedDefs@@QAE@$$QAU0@@Z"(%struct.ExportDefaultedDefs* returned %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dllexport %struct.ExportDefaultedDefs* @"\01??0ExportDefaultedDefs@@QEAA@$$QEAU0@@Z"(%struct.ExportDefaultedDefs* returned %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsC1EOS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dllexport void @_ZN19ExportDefaultedDefsC1EOS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsC2EOS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dllexport void @_ZN19ExportDefaultedDefsC2EOS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc %struct.ExportDefaultedDefs* @"\01??0ExportDefaultedDefs@@QAE@$$QAU0@@Z"(%struct.ExportDefaultedDefs* returned %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dso_local dllexport %struct.ExportDefaultedDefs* @"\01??0ExportDefaultedDefs@@QEAA@$$QEAU0@@Z"(%struct.ExportDefaultedDefs* returned %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsC1EOS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dso_local dllexport void @_ZN19ExportDefaultedDefsC1EOS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN19ExportDefaultedDefsC2EOS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dso_local dllexport void @_ZN19ExportDefaultedDefsC2EOS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
__declspec(dllexport) ExportDefaultedDefs::ExportDefaultedDefs(ExportDefaultedDefs&&) = default;
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @"\01??4ExportDefaultedDefs@@QAEAAU0@$$QAU0@@Z"(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dllexport dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @"\01??4ExportDefaultedDefs@@QEAAAEAU0@$$QEAU0@@Z"(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @_ZN19ExportDefaultedDefsaSEOS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dllexport dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @_ZN19ExportDefaultedDefsaSEOS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @"\01??4ExportDefaultedDefs@@QAEAAU0@$$QAU0@@Z"(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dso_local dllexport dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @"\01??4ExportDefaultedDefs@@QEAAAEAU0@$$QEAU0@@Z"(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @_ZN19ExportDefaultedDefsaSEOS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dso_local dllexport dereferenceable({{[0-9]+}}) %struct.ExportDefaultedDefs* @_ZN19ExportDefaultedDefsaSEOS_(%struct.ExportDefaultedDefs* %this, %struct.ExportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
ExportDefaultedDefs& ExportDefaultedDefs::operator=(ExportDefaultedDefs&&) = default;
|
||||
|
||||
|
||||
// Export defaulted member function definitions declared inside class.
|
||||
struct ExportDefaultedInclassDefs {
|
||||
__declspec(dllexport) ExportDefaultedInclassDefs() = default;
|
||||
// M32VS2013-DAG: define weak_odr dllexport x86_thiscallcc %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QAE@XZ"(%struct.ExportDefaultedInclassDefs* returned %this)
|
||||
// M64VS2013-DAG: define weak_odr dllexport %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QEAA@XZ"(%struct.ExportDefaultedInclassDefs* returned %this)
|
||||
// M32VS2015-NOT: define weak_odr dllexport x86_thiscallcc %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QAE@XZ"(%struct.ExportDefaultedInclassDefs* returned %this)
|
||||
// M64VS2015-NOT: define weak_odr dllexport %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QEAA@XZ"(%struct.ExportDefaultedInclassDefs* returned %this)
|
||||
// M32VS2013-DAG: define weak_odr dso_local dllexport x86_thiscallcc %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QAE@XZ"(%struct.ExportDefaultedInclassDefs* returned %this)
|
||||
// M64VS2013-DAG: define weak_odr dso_local dllexport %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QEAA@XZ"(%struct.ExportDefaultedInclassDefs* returned %this)
|
||||
// M32VS2015-NOT: define weak_odr dso_local dllexport x86_thiscallcc %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QAE@XZ"(%struct.ExportDefaultedInclassDefs* returned %this)
|
||||
// M64VS2015-NOT: define weak_odr dso_local dllexport %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QEAA@XZ"(%struct.ExportDefaultedInclassDefs* returned %this)
|
||||
|
||||
__declspec(dllexport) ~ExportDefaultedInclassDefs() = default;
|
||||
// M32VS2013-DAG: define weak_odr dllexport x86_thiscallcc void @"\01??1ExportDefaultedInclassDefs@@QAE@XZ"(%struct.ExportDefaultedInclassDefs* %this)
|
||||
// M64VS2013-DAG: define weak_odr dllexport void @"\01??1ExportDefaultedInclassDefs@@QEAA@XZ"(%struct.ExportDefaultedInclassDefs* %this)
|
||||
// M32VS2015-NOT: define weak_odr dllexport x86_thiscallcc void @"\01??1ExportDefaultedInclassDefs@@QAE@XZ"(%struct.ExportDefaultedInclassDefs* %this)
|
||||
// M64VS2015-NOT: define weak_odr dllexport void @"\01??1ExportDefaultedInclassDefs@@QEAA@XZ"(%struct.ExportDefaultedInclassDefs* %this)
|
||||
// M32VS2013-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01??1ExportDefaultedInclassDefs@@QAE@XZ"(%struct.ExportDefaultedInclassDefs* %this)
|
||||
// M64VS2013-DAG: define weak_odr dso_local dllexport void @"\01??1ExportDefaultedInclassDefs@@QEAA@XZ"(%struct.ExportDefaultedInclassDefs* %this)
|
||||
// M32VS2015-NOT: define weak_odr dso_local dllexport x86_thiscallcc void @"\01??1ExportDefaultedInclassDefs@@QAE@XZ"(%struct.ExportDefaultedInclassDefs* %this)
|
||||
// M64VS2015-NOT: define weak_odr dso_local dllexport void @"\01??1ExportDefaultedInclassDefs@@QEAA@XZ"(%struct.ExportDefaultedInclassDefs* %this)
|
||||
|
||||
__declspec(dllexport) ExportDefaultedInclassDefs(const ExportDefaultedInclassDefs&) = default;
|
||||
// M32VS2013-DAG: define weak_odr dllexport x86_thiscallcc %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QAE@ABU0@@Z"(%struct.ExportDefaultedInclassDefs* returned %this, %struct.ExportDefaultedInclassDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64VS2013-DAG: define weak_odr dllexport %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QEAA@AEBU0@@Z"(%struct.ExportDefaultedInclassDefs* returned %this, %struct.ExportDefaultedInclassDefs* dereferenceable({{[0-9]+}}))
|
||||
// M32VS2015-NOT: define weak_odr dllexport x86_thiscallcc %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QAE@ABU0@@Z"(%struct.ExportDefaultedInclassDefs* returned %this, %struct.ExportDefaultedInclassDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64VS2015-NOT: define weak_odr dllexport %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QEAA@AEBU0@@Z"(%struct.ExportDefaultedInclassDefs* returned %this, %struct.ExportDefaultedInclassDefs* dereferenceable({{[0-9]+}}))
|
||||
// M32VS2013-DAG: define weak_odr dso_local dllexport x86_thiscallcc %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QAE@ABU0@@Z"(%struct.ExportDefaultedInclassDefs* returned %this, %struct.ExportDefaultedInclassDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64VS2013-DAG: define weak_odr dso_local dllexport %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QEAA@AEBU0@@Z"(%struct.ExportDefaultedInclassDefs* returned %this, %struct.ExportDefaultedInclassDefs* dereferenceable({{[0-9]+}}))
|
||||
// M32VS2015-NOT: define weak_odr dso_local dllexport x86_thiscallcc %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QAE@ABU0@@Z"(%struct.ExportDefaultedInclassDefs* returned %this, %struct.ExportDefaultedInclassDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64VS2015-NOT: define weak_odr dso_local dllexport %struct.ExportDefaultedInclassDefs* @"\01??0ExportDefaultedInclassDefs@@QEAA@AEBU0@@Z"(%struct.ExportDefaultedInclassDefs* returned %this, %struct.ExportDefaultedInclassDefs* dereferenceable({{[0-9]+}}))
|
||||
|
||||
__declspec(dllexport) ExportDefaultedInclassDefs& operator=(const ExportDefaultedInclassDefs&) = default;
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportDefaultedInclassDefs* @"\01??4ExportDefaultedInclassDefs@@QAEAAU0@ABU0@@Z"(%struct.ExportDefaultedInclassDefs* %this, %struct.ExportDefaultedInclassDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define weak_odr dllexport dereferenceable({{[0-9]+}}) %struct.ExportDefaultedInclassDefs* @"\01??4ExportDefaultedInclassDefs@@QEAAAEAU0@AEBU0@@Z"(%struct.ExportDefaultedInclassDefs* %this, %struct.ExportDefaultedInclassDefs* dereferenceable({{[0-9]+}}))
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ExportDefaultedInclassDefs* @"\01??4ExportDefaultedInclassDefs@@QAEAAU0@ABU0@@Z"(%struct.ExportDefaultedInclassDefs* %this, %struct.ExportDefaultedInclassDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define weak_odr dso_local dllexport dereferenceable({{[0-9]+}}) %struct.ExportDefaultedInclassDefs* @"\01??4ExportDefaultedInclassDefs@@QEAAAEAU0@AEBU0@@Z"(%struct.ExportDefaultedInclassDefs* %this, %struct.ExportDefaultedInclassDefs* dereferenceable({{[0-9]+}}))
|
||||
};
|
||||
|
||||
|
||||
@ -463,28 +463,28 @@ struct ExportAlloc {
|
||||
__declspec(dllexport) void operator delete[](void*);
|
||||
};
|
||||
|
||||
// M32-DAG: define dllexport i8* @"\01??2ExportAlloc@@SAPAXI@Z"(i32 %n)
|
||||
// M64-DAG: define dllexport i8* @"\01??2ExportAlloc@@SAPEAX_K@Z"(i64 %n)
|
||||
// G32-DAG: define dllexport i8* @_ZN11ExportAllocnwEj(i32 %n)
|
||||
// G64-DAG: define dllexport i8* @_ZN11ExportAllocnwEy(i64 %n)
|
||||
// M32-DAG: define dso_local dllexport i8* @"\01??2ExportAlloc@@SAPAXI@Z"(i32 %n)
|
||||
// M64-DAG: define dso_local dllexport i8* @"\01??2ExportAlloc@@SAPEAX_K@Z"(i64 %n)
|
||||
// G32-DAG: define dso_local dllexport i8* @_ZN11ExportAllocnwEj(i32 %n)
|
||||
// G64-DAG: define dso_local dllexport i8* @_ZN11ExportAllocnwEy(i64 %n)
|
||||
void* ExportAlloc::operator new(__SIZE_TYPE__ n) { return malloc(n); }
|
||||
|
||||
// M32-DAG: define dllexport i8* @"\01??_UExportAlloc@@SAPAXI@Z"(i32 %n)
|
||||
// M64-DAG: define dllexport i8* @"\01??_UExportAlloc@@SAPEAX_K@Z"(i64 %n)
|
||||
// G32-DAG: define dllexport i8* @_ZN11ExportAllocnaEj(i32 %n)
|
||||
// G64-DAG: define dllexport i8* @_ZN11ExportAllocnaEy(i64 %n)
|
||||
// M32-DAG: define dso_local dllexport i8* @"\01??_UExportAlloc@@SAPAXI@Z"(i32 %n)
|
||||
// M64-DAG: define dso_local dllexport i8* @"\01??_UExportAlloc@@SAPEAX_K@Z"(i64 %n)
|
||||
// G32-DAG: define dso_local dllexport i8* @_ZN11ExportAllocnaEj(i32 %n)
|
||||
// G64-DAG: define dso_local dllexport i8* @_ZN11ExportAllocnaEy(i64 %n)
|
||||
void* ExportAlloc::operator new[](__SIZE_TYPE__ n) { return malloc(n); }
|
||||
|
||||
// M32-DAG: define dllexport void @"\01??3ExportAlloc@@SAXPAX@Z"(i8* %p)
|
||||
// M64-DAG: define dllexport void @"\01??3ExportAlloc@@SAXPEAX@Z"(i8* %p)
|
||||
// G32-DAG: define dllexport void @_ZN11ExportAllocdlEPv(i8* %p)
|
||||
// G64-DAG: define dllexport void @_ZN11ExportAllocdlEPv(i8* %p)
|
||||
// M32-DAG: define dso_local dllexport void @"\01??3ExportAlloc@@SAXPAX@Z"(i8* %p)
|
||||
// M64-DAG: define dso_local dllexport void @"\01??3ExportAlloc@@SAXPEAX@Z"(i8* %p)
|
||||
// G32-DAG: define dso_local dllexport void @_ZN11ExportAllocdlEPv(i8* %p)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN11ExportAllocdlEPv(i8* %p)
|
||||
void ExportAlloc::operator delete(void* p) { free(p); }
|
||||
|
||||
// M32-DAG: define dllexport void @"\01??_VExportAlloc@@SAXPAX@Z"(i8* %p)
|
||||
// M64-DAG: define dllexport void @"\01??_VExportAlloc@@SAXPEAX@Z"(i8* %p)
|
||||
// G32-DAG: define dllexport void @_ZN11ExportAllocdaEPv(i8* %p)
|
||||
// G64-DAG: define dllexport void @_ZN11ExportAllocdaEPv(i8* %p)
|
||||
// M32-DAG: define dso_local dllexport void @"\01??_VExportAlloc@@SAXPAX@Z"(i8* %p)
|
||||
// M64-DAG: define dso_local dllexport void @"\01??_VExportAlloc@@SAXPEAX@Z"(i8* %p)
|
||||
// G32-DAG: define dso_local dllexport void @_ZN11ExportAllocdaEPv(i8* %p)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN11ExportAllocdaEPv(i8* %p)
|
||||
void ExportAlloc::operator delete[](void* p) { free(p); }
|
||||
|
||||
|
||||
@ -501,125 +501,125 @@ struct MemFunTmpl {
|
||||
|
||||
// Export implicit instantiation of an exported member function template.
|
||||
void useMemFunTmpl() {
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01??$exportedNormal@UImplicitInst_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01??$exportedNormal@UImplicitInst_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN10MemFunTmpl14exportedNormalI21ImplicitInst_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN10MemFunTmpl14exportedNormalI21ImplicitInst_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01??$exportedNormal@UImplicitInst_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01??$exportedNormal@UImplicitInst_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN10MemFunTmpl14exportedNormalI21ImplicitInst_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN10MemFunTmpl14exportedNormalI21ImplicitInst_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
MemFunTmpl().exportedNormal<ImplicitInst_Exported>();
|
||||
|
||||
// MSC-DAG: define weak_odr dllexport void @"\01??$exportedStatic@UImplicitInst_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define weak_odr dllexport void @_ZN10MemFunTmpl14exportedStaticI21ImplicitInst_ExportedEEvv()
|
||||
// MSC-DAG: define weak_odr dso_local dllexport void @"\01??$exportedStatic@UImplicitInst_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define weak_odr dso_local dllexport void @_ZN10MemFunTmpl14exportedStaticI21ImplicitInst_ExportedEEvv()
|
||||
MemFunTmpl().exportedStatic<ImplicitInst_Exported>();
|
||||
}
|
||||
|
||||
|
||||
// Export explicit instantiation declaration of an exported member function
|
||||
// template.
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01??$exportedNormal@UExplicitDecl_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01??$exportedNormal@UExplicitDecl_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN10MemFunTmpl14exportedNormalI21ExplicitDecl_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN10MemFunTmpl14exportedNormalI21ExplicitDecl_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01??$exportedNormal@UExplicitDecl_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01??$exportedNormal@UExplicitDecl_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN10MemFunTmpl14exportedNormalI21ExplicitDecl_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN10MemFunTmpl14exportedNormalI21ExplicitDecl_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
extern template void MemFunTmpl::exportedNormal<ExplicitDecl_Exported>();
|
||||
template void MemFunTmpl::exportedNormal<ExplicitDecl_Exported>();
|
||||
|
||||
// MSC-DAG: define weak_odr dllexport void @"\01??$exportedStatic@UExplicitDecl_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define weak_odr dllexport void @_ZN10MemFunTmpl14exportedStaticI21ExplicitDecl_ExportedEEvv()
|
||||
// MSC-DAG: define weak_odr dso_local dllexport void @"\01??$exportedStatic@UExplicitDecl_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define weak_odr dso_local dllexport void @_ZN10MemFunTmpl14exportedStaticI21ExplicitDecl_ExportedEEvv()
|
||||
extern template void MemFunTmpl::exportedStatic<ExplicitDecl_Exported>();
|
||||
template void MemFunTmpl::exportedStatic<ExplicitDecl_Exported>();
|
||||
|
||||
|
||||
// Export explicit instantiation definition of an exported member function
|
||||
// template.
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01??$exportedNormal@UExplicitInst_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01??$exportedNormal@UExplicitInst_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN10MemFunTmpl14exportedNormalI21ExplicitInst_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN10MemFunTmpl14exportedNormalI21ExplicitInst_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01??$exportedNormal@UExplicitInst_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01??$exportedNormal@UExplicitInst_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN10MemFunTmpl14exportedNormalI21ExplicitInst_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN10MemFunTmpl14exportedNormalI21ExplicitInst_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
template void MemFunTmpl::exportedNormal<ExplicitInst_Exported>();
|
||||
|
||||
// MSC-DAG: define weak_odr dllexport void @"\01??$exportedStatic@UExplicitInst_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define weak_odr dllexport void @_ZN10MemFunTmpl14exportedStaticI21ExplicitInst_ExportedEEvv()
|
||||
// MSC-DAG: define weak_odr dso_local dllexport void @"\01??$exportedStatic@UExplicitInst_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define weak_odr dso_local dllexport void @_ZN10MemFunTmpl14exportedStaticI21ExplicitInst_ExportedEEvv()
|
||||
template void MemFunTmpl::exportedStatic<ExplicitInst_Exported>();
|
||||
|
||||
|
||||
// Export specialization of an exported member function template.
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01??$exportedNormal@UExplicitSpec_Def_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define dllexport void @"\01??$exportedNormal@UExplicitSpec_Def_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN10MemFunTmpl14exportedNormalI25ExplicitSpec_Def_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define dllexport void @_ZN10MemFunTmpl14exportedNormalI25ExplicitSpec_Def_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01??$exportedNormal@UExplicitSpec_Def_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01??$exportedNormal@UExplicitSpec_Def_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN10MemFunTmpl14exportedNormalI25ExplicitSpec_Def_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN10MemFunTmpl14exportedNormalI25ExplicitSpec_Def_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
template<> __declspec(dllexport) void MemFunTmpl::exportedNormal<ExplicitSpec_Def_Exported>() {}
|
||||
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01??$exportedNormal@UExplicitSpec_InlineDef_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01??$exportedNormal@UExplicitSpec_InlineDef_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN10MemFunTmpl14exportedNormalI31ExplicitSpec_InlineDef_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN10MemFunTmpl14exportedNormalI31ExplicitSpec_InlineDef_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01??$exportedNormal@UExplicitSpec_InlineDef_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01??$exportedNormal@UExplicitSpec_InlineDef_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN10MemFunTmpl14exportedNormalI31ExplicitSpec_InlineDef_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN10MemFunTmpl14exportedNormalI31ExplicitSpec_InlineDef_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
template<> __declspec(dllexport) inline void MemFunTmpl::exportedNormal<ExplicitSpec_InlineDef_Exported>() {}
|
||||
|
||||
// MSC-DAG: define dllexport void @"\01??$exportedStatic@UExplicitSpec_Def_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define dllexport void @_ZN10MemFunTmpl14exportedStaticI25ExplicitSpec_Def_ExportedEEvv()
|
||||
// MSC-DAG: define dso_local dllexport void @"\01??$exportedStatic@UExplicitSpec_Def_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define dso_local dllexport void @_ZN10MemFunTmpl14exportedStaticI25ExplicitSpec_Def_ExportedEEvv()
|
||||
template<> __declspec(dllexport) void MemFunTmpl::exportedStatic<ExplicitSpec_Def_Exported>() {}
|
||||
|
||||
// MSC-DAG: define weak_odr dllexport void @"\01??$exportedStatic@UExplicitSpec_InlineDef_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define weak_odr dllexport void @_ZN10MemFunTmpl14exportedStaticI31ExplicitSpec_InlineDef_ExportedEEvv()
|
||||
// MSC-DAG: define weak_odr dso_local dllexport void @"\01??$exportedStatic@UExplicitSpec_InlineDef_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define weak_odr dso_local dllexport void @_ZN10MemFunTmpl14exportedStaticI31ExplicitSpec_InlineDef_ExportedEEvv()
|
||||
template<> __declspec(dllexport) inline void MemFunTmpl::exportedStatic<ExplicitSpec_InlineDef_Exported>() {}
|
||||
|
||||
|
||||
// Not exporting specialization of an exported member function template without
|
||||
// explicit dllexport.
|
||||
// M32-DAG: define x86_thiscallcc void @"\01??$exportedNormal@UExplicitSpec_NotExported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define void @"\01??$exportedNormal@UExplicitSpec_NotExported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define x86_thiscallcc void @_ZN10MemFunTmpl14exportedNormalI24ExplicitSpec_NotExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define void @_ZN10MemFunTmpl14exportedNormalI24ExplicitSpec_NotExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// explicit dso_local dllexport.
|
||||
// M32-DAG: define dso_local x86_thiscallcc void @"\01??$exportedNormal@UExplicitSpec_NotExported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define dso_local void @"\01??$exportedNormal@UExplicitSpec_NotExported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define dso_local x86_thiscallcc void @_ZN10MemFunTmpl14exportedNormalI24ExplicitSpec_NotExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define dso_local void @_ZN10MemFunTmpl14exportedNormalI24ExplicitSpec_NotExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
template<> void MemFunTmpl::exportedNormal<ExplicitSpec_NotExported>() {}
|
||||
|
||||
// M32-DAG: define void @"\01??$exportedStatic@UExplicitSpec_NotExported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define void @_ZN10MemFunTmpl14exportedStaticI24ExplicitSpec_NotExportedEEvv()
|
||||
// M32-DAG: define dso_local void @"\01??$exportedStatic@UExplicitSpec_NotExported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define dso_local void @_ZN10MemFunTmpl14exportedStaticI24ExplicitSpec_NotExportedEEvv()
|
||||
template<> void MemFunTmpl::exportedStatic<ExplicitSpec_NotExported>() {}
|
||||
|
||||
|
||||
// Export explicit instantiation declaration of a non-exported member function
|
||||
// template.
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01??$normalDef@UExplicitDecl_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01??$normalDef@UExplicitDecl_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI21ExplicitDecl_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN10MemFunTmpl9normalDefI21ExplicitDecl_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01??$normalDef@UExplicitDecl_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01??$normalDef@UExplicitDecl_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI21ExplicitDecl_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN10MemFunTmpl9normalDefI21ExplicitDecl_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
extern template __declspec(dllexport) void MemFunTmpl::normalDef<ExplicitDecl_Exported>();
|
||||
template __declspec(dllexport) void MemFunTmpl::normalDef<ExplicitDecl_Exported>();
|
||||
|
||||
// M32-DAG: define weak_odr dllexport void @"\01??$staticDef@UExplicitDecl_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define weak_odr dllexport void @_ZN10MemFunTmpl9staticDefI21ExplicitDecl_ExportedEEvv()
|
||||
// M32-DAG: define weak_odr dso_local dllexport void @"\01??$staticDef@UExplicitDecl_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define weak_odr dso_local dllexport void @_ZN10MemFunTmpl9staticDefI21ExplicitDecl_ExportedEEvv()
|
||||
extern template __declspec(dllexport) void MemFunTmpl::staticDef<ExplicitDecl_Exported>();
|
||||
template __declspec(dllexport) void MemFunTmpl::staticDef<ExplicitDecl_Exported>();
|
||||
|
||||
|
||||
// Export explicit instantiation definition of a non-exported member function
|
||||
// template.
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01??$normalDef@UExplicitInst_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01??$normalDef@UExplicitInst_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI21ExplicitInst_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN10MemFunTmpl9normalDefI21ExplicitInst_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01??$normalDef@UExplicitInst_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01??$normalDef@UExplicitInst_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI21ExplicitInst_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN10MemFunTmpl9normalDefI21ExplicitInst_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
template __declspec(dllexport) void MemFunTmpl::normalDef<ExplicitInst_Exported>();
|
||||
|
||||
// MSC-DAG: define weak_odr dllexport void @"\01??$staticDef@UExplicitInst_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define weak_odr dllexport void @_ZN10MemFunTmpl9staticDefI21ExplicitInst_ExportedEEvv()
|
||||
// MSC-DAG: define weak_odr dso_local dllexport void @"\01??$staticDef@UExplicitInst_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define weak_odr dso_local dllexport void @_ZN10MemFunTmpl9staticDefI21ExplicitInst_ExportedEEvv()
|
||||
template __declspec(dllexport) void MemFunTmpl::staticDef<ExplicitInst_Exported>();
|
||||
|
||||
|
||||
// Export specialization of a non-exported member function template.
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01??$normalDef@UExplicitSpec_Def_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define dllexport void @"\01??$normalDef@UExplicitSpec_Def_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01??$normalDef@UExplicitSpec_InlineDef_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define weak_odr dllexport void @"\01??$normalDef@UExplicitSpec_InlineDef_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI25ExplicitSpec_Def_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define dllexport void @_ZN10MemFunTmpl9normalDefI25ExplicitSpec_Def_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI31ExplicitSpec_InlineDef_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dllexport void @_ZN10MemFunTmpl9normalDefI31ExplicitSpec_InlineDef_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01??$normalDef@UExplicitSpec_Def_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01??$normalDef@UExplicitSpec_Def_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01??$normalDef@UExplicitSpec_InlineDef_Exported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define weak_odr dso_local dllexport void @"\01??$normalDef@UExplicitSpec_InlineDef_Exported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI25ExplicitSpec_Def_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define dso_local dllexport void @_ZN10MemFunTmpl9normalDefI25ExplicitSpec_Def_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI31ExplicitSpec_InlineDef_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dso_local dllexport void @_ZN10MemFunTmpl9normalDefI31ExplicitSpec_InlineDef_ExportedEEvv(%struct.MemFunTmpl* %this)
|
||||
template<> __declspec(dllexport) void MemFunTmpl::normalDef<ExplicitSpec_Def_Exported>() {}
|
||||
template<> __declspec(dllexport) inline void MemFunTmpl::normalDef<ExplicitSpec_InlineDef_Exported>() {}
|
||||
|
||||
// MSC-DAG: define dllexport void @"\01??$staticDef@UExplicitSpec_Def_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// MSC-DAG: define weak_odr dllexport void @"\01??$staticDef@UExplicitSpec_InlineDef_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define dllexport void @_ZN10MemFunTmpl9staticDefI25ExplicitSpec_Def_ExportedEEvv()
|
||||
// GNU-DAG: define weak_odr dllexport void @_ZN10MemFunTmpl9staticDefI31ExplicitSpec_InlineDef_ExportedEEvv()
|
||||
// MSC-DAG: define dso_local dllexport void @"\01??$staticDef@UExplicitSpec_Def_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// MSC-DAG: define weak_odr dso_local dllexport void @"\01??$staticDef@UExplicitSpec_InlineDef_Exported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define dso_local dllexport void @_ZN10MemFunTmpl9staticDefI25ExplicitSpec_Def_ExportedEEvv()
|
||||
// GNU-DAG: define weak_odr dso_local dllexport void @_ZN10MemFunTmpl9staticDefI31ExplicitSpec_InlineDef_ExportedEEvv()
|
||||
template<> __declspec(dllexport) void MemFunTmpl::staticDef<ExplicitSpec_Def_Exported>() {}
|
||||
template<> __declspec(dllexport) inline void MemFunTmpl::staticDef<ExplicitSpec_InlineDef_Exported>() {}
|
||||
|
||||
@ -633,49 +633,49 @@ template<typename T> const int MemVarTmpl::StaticVar;
|
||||
template<typename T> const int MemVarTmpl::ExportedStaticVar;
|
||||
|
||||
// Export implicit instantiation of an exported member variable template.
|
||||
// MSC-DAG: @"\01??$ExportedStaticVar@UImplicitInst_Exported@@@MemVarTmpl@@2HB" = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl17ExportedStaticVarI21ImplicitInst_ExportedEE = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01??$ExportedStaticVar@UImplicitInst_Exported@@@MemVarTmpl@@2HB" = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl17ExportedStaticVarI21ImplicitInst_ExportedEE = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
int useMemVarTmpl() { return MemVarTmpl::ExportedStaticVar<ImplicitInst_Exported>; }
|
||||
|
||||
// Export explicit instantiation declaration of an exported member variable
|
||||
// template.
|
||||
// MSC-DAG: @"\01??$ExportedStaticVar@UExplicitDecl_Exported@@@MemVarTmpl@@2HB" = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl17ExportedStaticVarI21ExplicitDecl_ExportedEE = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01??$ExportedStaticVar@UExplicitDecl_Exported@@@MemVarTmpl@@2HB" = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl17ExportedStaticVarI21ExplicitDecl_ExportedEE = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
extern template const int MemVarTmpl::ExportedStaticVar<ExplicitDecl_Exported>;
|
||||
template const int MemVarTmpl::ExportedStaticVar<ExplicitDecl_Exported>;
|
||||
|
||||
// Export explicit instantiation definition of an exported member variable
|
||||
// template.
|
||||
// MSC-DAG: @"\01??$ExportedStaticVar@UExplicitInst_Exported@@@MemVarTmpl@@2HB" = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl17ExportedStaticVarI21ExplicitInst_ExportedEE = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01??$ExportedStaticVar@UExplicitInst_Exported@@@MemVarTmpl@@2HB" = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl17ExportedStaticVarI21ExplicitInst_ExportedEE = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
template const int MemVarTmpl::ExportedStaticVar<ExplicitInst_Exported>;
|
||||
|
||||
// Export specialization of an exported member variable template.
|
||||
// MSC-DAG: @"\01??$ExportedStaticVar@UExplicitSpec_Def_Exported@@@MemVarTmpl@@2HB" = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl17ExportedStaticVarI25ExplicitSpec_Def_ExportedEE = dllexport constant i32 1, align 4
|
||||
// MSC-DAG: @"\01??$ExportedStaticVar@UExplicitSpec_Def_Exported@@@MemVarTmpl@@2HB" = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl17ExportedStaticVarI25ExplicitSpec_Def_ExportedEE = dso_local dllexport constant i32 1, align 4
|
||||
template<> __declspec(dllexport) const int MemVarTmpl::ExportedStaticVar<ExplicitSpec_Def_Exported> = 1;
|
||||
|
||||
// Not exporting specialization of an exported member variable template without
|
||||
// explicit dllexport.
|
||||
// MSC-DAG: @"\01??$ExportedStaticVar@UExplicitSpec_NotExported@@@MemVarTmpl@@2HB" = weak_odr constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl17ExportedStaticVarI24ExplicitSpec_NotExportedEE = constant i32 1, align 4
|
||||
// MSC-DAG: @"\01??$ExportedStaticVar@UExplicitSpec_NotExported@@@MemVarTmpl@@2HB" = weak_odr dso_local constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl17ExportedStaticVarI24ExplicitSpec_NotExportedEE = dso_local constant i32 1, align 4
|
||||
template<> const int MemVarTmpl::ExportedStaticVar<ExplicitSpec_NotExported> = 1;
|
||||
|
||||
|
||||
// Export explicit instantiation declaration of a non-exported member variable
|
||||
// template.
|
||||
// MSC-DAG: @"\01??$StaticVar@UExplicitDecl_Exported@@@MemVarTmpl@@2HB" = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl9StaticVarI21ExplicitDecl_ExportedEE = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01??$StaticVar@UExplicitDecl_Exported@@@MemVarTmpl@@2HB" = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl9StaticVarI21ExplicitDecl_ExportedEE = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
extern template __declspec(dllexport) const int MemVarTmpl::StaticVar<ExplicitDecl_Exported>;
|
||||
template __declspec(dllexport) const int MemVarTmpl::StaticVar<ExplicitDecl_Exported>;
|
||||
|
||||
// Export explicit instantiation definition of a non-exported member variable
|
||||
// template.
|
||||
// MSC-DAG: @"\01??$StaticVar@UExplicitInst_Exported@@@MemVarTmpl@@2HB" = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl9StaticVarI21ExplicitInst_ExportedEE = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// MSC-DAG: @"\01??$StaticVar@UExplicitInst_Exported@@@MemVarTmpl@@2HB" = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl9StaticVarI21ExplicitInst_ExportedEE = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
template __declspec(dllexport) const int MemVarTmpl::StaticVar<ExplicitInst_Exported>;
|
||||
|
||||
// Export specialization of a non-exported member variable template.
|
||||
// MSC-DAG: @"\01??$StaticVar@UExplicitSpec_Def_Exported@@@MemVarTmpl@@2HB" = weak_odr dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl9StaticVarI25ExplicitSpec_Def_ExportedEE = dllexport constant i32 1, align 4
|
||||
// MSC-DAG: @"\01??$StaticVar@UExplicitSpec_Def_Exported@@@MemVarTmpl@@2HB" = weak_odr dso_local dllexport constant i32 1, comdat, align 4
|
||||
// GNU-DAG: @_ZN10MemVarTmpl9StaticVarI25ExplicitSpec_Def_ExportedEE = dso_local dllexport constant i32 1, align 4
|
||||
template<> __declspec(dllexport) const int MemVarTmpl::StaticVar<ExplicitSpec_Def_Exported> = 1;
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// RUN: %clang_cc1 -triple %ms_abi_triple -fms-extensions -emit-llvm -O0 -o - %s | FileCheck %s
|
||||
|
||||
// Friend functions defined in classes are emitted.
|
||||
// CHECK: define weak_odr dllexport void @"\01?friend1@@YAXXZ"()
|
||||
// CHECK: define weak_odr dso_local dllexport void @"\01?friend1@@YAXXZ"()
|
||||
struct FuncFriend1 {
|
||||
friend __declspec(dllexport) void friend1() {}
|
||||
};
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
template <typename> struct MessageT { };
|
||||
extern template struct MessageT<int>;
|
||||
|
||||
// CHECK: define weak_odr dllexport {{.*}} %struct.MessageT* @"\01??4?$MessageT@H@@QEAAAEAU0@AEBU0@@Z"(
|
||||
// CHECK: define weak_odr dso_local dllexport {{.*}} %struct.MessageT* @"\01??4?$MessageT@H@@QEAAAEAU0@AEBU0@@Z"(
|
||||
template struct __declspec(dllexport) MessageT<int>;
|
||||
// Previously we crashed when this dllexport was the last thing in the file.
|
||||
// DO NOT ADD MORE TESTS AFTER THIS LINE!
|
||||
|
||||
@ -11,7 +11,7 @@ struct __declspec(dllexport) C : A, B {
|
||||
virtual void m();
|
||||
};
|
||||
void C::m() {}
|
||||
// CHECK: define dllexport void @_ZThn8_N1C1mEv
|
||||
// CHECK: define dso_local dllexport void @_ZThn8_N1C1mEv
|
||||
|
||||
struct Base {
|
||||
virtual void m();
|
||||
@ -20,4 +20,4 @@ struct __declspec(dllexport) Derived : virtual Base {
|
||||
virtual void m();
|
||||
};
|
||||
void Derived::m() {}
|
||||
// CHECK: define dllexport void @_ZTv0_n24_N7Derived1mEv
|
||||
// CHECK: define dso_local dllexport void @_ZTv0_n24_N7Derived1mEv
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -39,11 +39,11 @@ extern "C" void testit() {
|
||||
|
||||
// The destructors are called in reverse order of construction. Only the third
|
||||
// needs the complete destructor (_D).
|
||||
// CHECK-LABEL: define void @testit()
|
||||
// CHECK-LABEL: define dso_local void @testit()
|
||||
// CHECK: call void @"\01??_DImportVBaseOverrideVDtor@@QEAAXXZ"(%struct.ImportVBaseOverrideVDtor* %{{.*}})
|
||||
// CHECK: call void @"\01??1ImportOverrideVDtor@@UEAA@XZ"(%struct.ImportOverrideVDtor* %{{.*}})
|
||||
// CHECK: call void @"\01??1ImportIntroVDtor@@UEAA@XZ"(%struct.ImportIntroVDtor* %{{.*}})
|
||||
|
||||
// CHECK-LABEL: define linkonce_odr void @"\01??_DImportVBaseOverrideVDtor@@QEAAXXZ"
|
||||
// CHECK-LABEL: define linkonce_odr dso_local void @"\01??_DImportVBaseOverrideVDtor@@QEAAXXZ"
|
||||
// CHECK-LABEL: declare dllimport void @"\01??1ImportOverrideVDtor@@UEAA@XZ"
|
||||
// CHECK-LABEL: declare dllimport void @"\01??1ImportIntroVDtor@@UEAA@XZ"
|
||||
|
||||
@ -63,86 +63,86 @@ struct __declspec(dllimport) ForceNonTrivial {
|
||||
struct ImportMembers {
|
||||
struct Nested;
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01?normalDef@ImportMembers@@QAEXXZ"(%struct.ImportMembers* %this)
|
||||
// M64-DAG: define dllexport void @"\01?normalDef@ImportMembers@@QEAAXXZ"(%struct.ImportMembers* %this)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalDecl@ImportMembers@@QAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalDecl@ImportMembers@@QEAAXXZ"(%struct.ImportMembers*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalInclass@ImportMembers@@QAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalInclass@ImportMembers@@QEAAXXZ"(%struct.ImportMembers*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalInlineDef@ImportMembers@@QAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalInlineDef@ImportMembers@@QEAAXXZ"(%struct.ImportMembers*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalInlineDecl@ImportMembers@@QAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalInlineDecl@ImportMembers@@QEAAXXZ"(%struct.ImportMembers*)
|
||||
// G32-DAG: define x86_thiscallcc void @_ZN13ImportMembers9normalDefEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define void @_ZN13ImportMembers9normalDefEv(%struct.ImportMembers* %this)
|
||||
// G32-DAG: declare dllimport x86_thiscallcc void @_ZN13ImportMembers10normalDeclEv(%struct.ImportMembers*)
|
||||
// G64-DAG: declare dllimport void @_ZN13ImportMembers10normalDeclEv(%struct.ImportMembers*)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers13normalInclassEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN13ImportMembers13normalInclassEv(%struct.ImportMembers* %this)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers15normalInlineDefEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN13ImportMembers15normalInlineDefEv(%struct.ImportMembers* %this)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers16normalInlineDeclEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN13ImportMembers16normalInlineDeclEv(%struct.ImportMembers* %this)
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01?normalDef@ImportMembers@@QAEXXZ"(%struct.ImportMembers* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01?normalDef@ImportMembers@@QEAAXXZ"(%struct.ImportMembers* %this)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalDecl@ImportMembers@@QAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalDecl@ImportMembers@@QEAAXXZ"(%struct.ImportMembers*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalInclass@ImportMembers@@QAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalInclass@ImportMembers@@QEAAXXZ"(%struct.ImportMembers*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalInlineDef@ImportMembers@@QAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalInlineDef@ImportMembers@@QEAAXXZ"(%struct.ImportMembers*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalInlineDecl@ImportMembers@@QAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalInlineDecl@ImportMembers@@QEAAXXZ"(%struct.ImportMembers*)
|
||||
// G32-DAG: define dso_local x86_thiscallcc void @_ZN13ImportMembers9normalDefEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define dso_local void @_ZN13ImportMembers9normalDefEv(%struct.ImportMembers* %this)
|
||||
// G32-DAG: declare dllimport x86_thiscallcc void @_ZN13ImportMembers10normalDeclEv(%struct.ImportMembers*)
|
||||
// G64-DAG: declare dllimport void @_ZN13ImportMembers10normalDeclEv(%struct.ImportMembers*)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers13normalInclassEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers13normalInclassEv(%struct.ImportMembers* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers15normalInlineDefEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers15normalInlineDefEv(%struct.ImportMembers* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers16normalInlineDeclEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers16normalInlineDeclEv(%struct.ImportMembers* %this)
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc void @"\01?normalInclass@ImportMembers@@QAEXXZ"(
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc void @"\01?normalInlineDef@ImportMembers@@QAEXXZ"(
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc void @"\01?normalInlineDecl@ImportMembers@@QAEXXZ"(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers13normalInclassEv(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers15normalInlineDefEv(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers16normalInlineDeclEv(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers13normalInclassEv(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers15normalInlineDefEv(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers16normalInlineDeclEv(
|
||||
__declspec(dllimport) void normalDef(); // dllimport ignored
|
||||
__declspec(dllimport) void normalDecl();
|
||||
__declspec(dllimport) void normalInclass() {}
|
||||
__declspec(dllimport) void normalInlineDef();
|
||||
__declspec(dllimport) inline void normalInlineDecl();
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01?virtualDef@ImportMembers@@UAEXXZ"(%struct.ImportMembers* %this)
|
||||
// M64-DAG: define dllexport void @"\01?virtualDef@ImportMembers@@UEAAXXZ"(%struct.ImportMembers* %this)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualDecl@ImportMembers@@UAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualDecl@ImportMembers@@UEAAXXZ"(%struct.ImportMembers*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualInclass@ImportMembers@@UAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualInclass@ImportMembers@@UEAAXXZ"(%struct.ImportMembers*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualInlineDef@ImportMembers@@UAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualInlineDef@ImportMembers@@UEAAXXZ"(%struct.ImportMembers*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualInlineDecl@ImportMembers@@UAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualInlineDecl@ImportMembers@@UEAAXXZ"(%struct.ImportMembers*)
|
||||
// G32-DAG: define x86_thiscallcc void @_ZN13ImportMembers10virtualDefEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define void @_ZN13ImportMembers10virtualDefEv(%struct.ImportMembers* %this)
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01?virtualDef@ImportMembers@@UAEXXZ"(%struct.ImportMembers* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01?virtualDef@ImportMembers@@UEAAXXZ"(%struct.ImportMembers* %this)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualDecl@ImportMembers@@UAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualDecl@ImportMembers@@UEAAXXZ"(%struct.ImportMembers*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualInclass@ImportMembers@@UAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualInclass@ImportMembers@@UEAAXXZ"(%struct.ImportMembers*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualInlineDef@ImportMembers@@UAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualInlineDef@ImportMembers@@UEAAXXZ"(%struct.ImportMembers*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualInlineDecl@ImportMembers@@UAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualInlineDecl@ImportMembers@@UEAAXXZ"(%struct.ImportMembers*)
|
||||
// G32-DAG: define dso_local x86_thiscallcc void @_ZN13ImportMembers10virtualDefEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define dso_local void @_ZN13ImportMembers10virtualDefEv(%struct.ImportMembers* %this)
|
||||
// G32-DAG: declare dllimport x86_thiscallcc void @_ZN13ImportMembers11virtualDeclEv(%struct.ImportMembers*)
|
||||
// G64-DAG: declare dllimport void @_ZN13ImportMembers11virtualDeclEv(%struct.ImportMembers*)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers14virtualInclassEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN13ImportMembers14virtualInclassEv(%struct.ImportMembers* %this)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers16virtualInlineDefEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN13ImportMembers16virtualInlineDefEv(%struct.ImportMembers* %this)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers17virtualInlineDeclEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN13ImportMembers17virtualInlineDeclEv(%struct.ImportMembers* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers14virtualInclassEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers14virtualInclassEv(%struct.ImportMembers* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers16virtualInlineDefEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers16virtualInlineDefEv(%struct.ImportMembers* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers17virtualInlineDeclEv(%struct.ImportMembers* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers17virtualInlineDeclEv(%struct.ImportMembers* %this)
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc void @"\01?virtualInclass@ImportMembers@@UAEXXZ"(
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc void @"\01?virtualInlineDef@ImportMembers@@UAEXXZ"(
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc void @"\01?virtualInlineDecl@ImportMembers@@UAEXXZ"(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers14virtualInclassEv(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers16virtualInlineDefEv(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers17virtualInlineDeclEv(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers14virtualInclassEv(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers16virtualInlineDefEv(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers17virtualInlineDeclEv(
|
||||
__declspec(dllimport) virtual void virtualDef(); // dllimport ignored
|
||||
__declspec(dllimport) virtual void virtualDecl();
|
||||
__declspec(dllimport) virtual void virtualInclass() {}
|
||||
__declspec(dllimport) virtual void virtualInlineDef();
|
||||
__declspec(dllimport) virtual inline void virtualInlineDecl();
|
||||
|
||||
// MSC-DAG: define dllexport void @"\01?staticDef@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticDecl@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticInclass@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticInlineDef@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticInlineDecl@ImportMembers@@SAXXZ"()
|
||||
// GNU-DAG: define void @_ZN13ImportMembers9staticDefEv()
|
||||
// GNU-DAG: declare dllimport void @_ZN13ImportMembers10staticDeclEv()
|
||||
// GNU-DAG: define linkonce_odr void @_ZN13ImportMembers13staticInclassEv()
|
||||
// GNU-DAG: define linkonce_odr void @_ZN13ImportMembers15staticInlineDefEv()
|
||||
// GNU-DAG: define linkonce_odr void @_ZN13ImportMembers16staticInlineDeclEv()
|
||||
// MSC-DAG: define dso_local dllexport void @"\01?staticDef@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticDecl@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticInclass@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticInlineDef@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticInlineDecl@ImportMembers@@SAXXZ"()
|
||||
// GNU-DAG: define dso_local void @_ZN13ImportMembers9staticDefEv()
|
||||
// GNU-DAG: declare dllimport void @_ZN13ImportMembers10staticDeclEv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers13staticInclassEv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers15staticInlineDefEv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers16staticInlineDeclEv()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01?staticInclass@ImportMembers@@SAXXZ"()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01?staticInlineDef@ImportMembers@@SAXXZ"()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01?staticInlineDecl@ImportMembers@@SAXXZ"()
|
||||
// GO1-DAG: define linkonce_odr void @_ZN13ImportMembers13staticInclassEv()
|
||||
// GO1-DAG: define linkonce_odr void @_ZN13ImportMembers15staticInlineDefEv()
|
||||
// GO1-DAG: define linkonce_odr void @_ZN13ImportMembers16staticInlineDeclEv()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers13staticInclassEv()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers15staticInlineDefEv()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers16staticInlineDeclEv()
|
||||
__declspec(dllimport) static void staticDef(); // dllimport ignored
|
||||
__declspec(dllimport) static void staticDecl();
|
||||
__declspec(dllimport) static void staticInclass() {}
|
||||
@ -169,10 +169,10 @@ private:
|
||||
__declspec(dllimport) void privateNormalDecl();
|
||||
__declspec(dllimport) static void privateStaticDecl();
|
||||
|
||||
// M32-DAG: declare x86_thiscallcc void @"\01?ignored@ImportMembers@@QAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare void @"\01?ignored@ImportMembers@@QEAAXXZ"(%struct.ImportMembers*)
|
||||
// G32-DAG: declare x86_thiscallcc void @_ZN13ImportMembers7ignoredEv(%struct.ImportMembers*)
|
||||
// G64-DAG: declare void @_ZN13ImportMembers7ignoredEv(%struct.ImportMembers*)
|
||||
// M32-DAG: declare dso_local x86_thiscallcc void @"\01?ignored@ImportMembers@@QAEXXZ"(%struct.ImportMembers*)
|
||||
// M64-DAG: declare dso_local void @"\01?ignored@ImportMembers@@QEAAXXZ"(%struct.ImportMembers*)
|
||||
// G32-DAG: declare dso_local x86_thiscallcc void @_ZN13ImportMembers7ignoredEv(%struct.ImportMembers*)
|
||||
// G64-DAG: declare dso_local void @_ZN13ImportMembers7ignoredEv(%struct.ImportMembers*)
|
||||
public:
|
||||
void ignored();
|
||||
|
||||
@ -235,87 +235,87 @@ USEMV(ImportMembers, ConstexprField)
|
||||
|
||||
// Import individual members of a nested class.
|
||||
struct ImportMembers::Nested {
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01?normalDef@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"* %this)
|
||||
// M64-DAG: define dllexport void @"\01?normalDef@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"* %this)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalDecl@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalDecl@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalInclass@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalInclass@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalInlineDef@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalInlineDef@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalInlineDecl@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalInlineDecl@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// G32-DAG: define x86_thiscallcc void @_ZN13ImportMembers6Nested9normalDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define void @_ZN13ImportMembers6Nested9normalDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01?normalDef@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01?normalDef@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"* %this)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalDecl@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalDecl@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalInclass@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalInclass@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalInlineDef@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalInlineDef@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?normalInlineDecl@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?normalInlineDecl@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// G32-DAG: define dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested9normalDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define dso_local void @_ZN13ImportMembers6Nested9normalDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G32-DAG: declare dllimport x86_thiscallcc void @_ZN13ImportMembers6Nested10normalDeclEv(%"struct.ImportMembers::Nested"*)
|
||||
// G64-DAG: declare dllimport void @_ZN13ImportMembers6Nested10normalDeclEv(%"struct.ImportMembers::Nested"*)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers6Nested13normalInclassEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN13ImportMembers6Nested13normalInclassEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers6Nested15normalInlineDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN13ImportMembers6Nested15normalInlineDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers6Nested16normalInlineDeclEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN13ImportMembers6Nested16normalInlineDeclEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested13normalInclassEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested13normalInclassEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested15normalInlineDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested15normalInlineDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested16normalInlineDeclEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested16normalInlineDeclEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc void @"\01?normalInclass@Nested@ImportMembers@@QAEXXZ"(
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc void @"\01?normalInlineDef@Nested@ImportMembers@@QAEXXZ"(
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc void @"\01?normalInlineDecl@Nested@ImportMembers@@QAEXXZ"(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers6Nested13normalInclassEv(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers6Nested15normalInlineDefEv(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers6Nested16normalInlineDeclEv(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested13normalInclassEv(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested15normalInlineDefEv(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested16normalInlineDeclEv(
|
||||
__declspec(dllimport) void normalDef(); // dllimport ignored
|
||||
__declspec(dllimport) void normalDecl();
|
||||
__declspec(dllimport) void normalInclass() {}
|
||||
__declspec(dllimport) void normalInlineDef();
|
||||
__declspec(dllimport) inline void normalInlineDecl();
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01?virtualDef@Nested@ImportMembers@@UAEXXZ"(%"struct.ImportMembers::Nested"* %this)
|
||||
// M64-DAG: define dllexport void @"\01?virtualDef@Nested@ImportMembers@@UEAAXXZ"(%"struct.ImportMembers::Nested"* %this)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualDecl@Nested@ImportMembers@@UAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualDecl@Nested@ImportMembers@@UEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualInclass@Nested@ImportMembers@@UAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualInclass@Nested@ImportMembers@@UEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualInlineDef@Nested@ImportMembers@@UAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualInlineDef@Nested@ImportMembers@@UEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualInlineDecl@Nested@ImportMembers@@UAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualInlineDecl@Nested@ImportMembers@@UEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// G32-DAG: define x86_thiscallcc void @_ZN13ImportMembers6Nested10virtualDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define void @_ZN13ImportMembers6Nested10virtualDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01?virtualDef@Nested@ImportMembers@@UAEXXZ"(%"struct.ImportMembers::Nested"* %this)
|
||||
// M64-DAG: define dso_local dllexport void @"\01?virtualDef@Nested@ImportMembers@@UEAAXXZ"(%"struct.ImportMembers::Nested"* %this)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualDecl@Nested@ImportMembers@@UAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualDecl@Nested@ImportMembers@@UEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualInclass@Nested@ImportMembers@@UAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualInclass@Nested@ImportMembers@@UEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualInlineDef@Nested@ImportMembers@@UAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualInlineDef@Nested@ImportMembers@@UEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?virtualInlineDecl@Nested@ImportMembers@@UAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dllimport void @"\01?virtualInlineDecl@Nested@ImportMembers@@UEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// G32-DAG: define dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested10virtualDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define dso_local void @_ZN13ImportMembers6Nested10virtualDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G32-DAG: declare dllimport x86_thiscallcc void @_ZN13ImportMembers6Nested11virtualDeclEv(%"struct.ImportMembers::Nested"*)
|
||||
// G64-DAG: declare dllimport void @_ZN13ImportMembers6Nested11virtualDeclEv(%"struct.ImportMembers::Nested"*)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers6Nested14virtualInclassEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN13ImportMembers6Nested14virtualInclassEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers6Nested16virtualInlineDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN13ImportMembers6Nested16virtualInlineDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers6Nested17virtualInlineDeclEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN13ImportMembers6Nested17virtualInlineDeclEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested14virtualInclassEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested14virtualInclassEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested16virtualInlineDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested16virtualInlineDefEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested17virtualInlineDeclEv(%"struct.ImportMembers::Nested"* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested17virtualInlineDeclEv(%"struct.ImportMembers::Nested"* %this)
|
||||
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc void @"\01?virtualInclass@Nested@ImportMembers@@UAEXXZ"(
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc void @"\01?virtualInlineDef@Nested@ImportMembers@@UAEXXZ"(
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc void @"\01?virtualInlineDecl@Nested@ImportMembers@@UAEXXZ"(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers6Nested14virtualInclassEv(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers6Nested16virtualInlineDefEv(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ImportMembers6Nested17virtualInlineDeclEv(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested14virtualInclassEv(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested16virtualInlineDefEv(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested17virtualInlineDeclEv(
|
||||
__declspec(dllimport) virtual void virtualDef(); // dllimport ignored
|
||||
__declspec(dllimport) virtual void virtualDecl();
|
||||
__declspec(dllimport) virtual void virtualInclass() {}
|
||||
__declspec(dllimport) virtual void virtualInlineDef();
|
||||
__declspec(dllimport) virtual inline void virtualInlineDecl();
|
||||
|
||||
// MSC-DAG: define dllexport void @"\01?staticDef@Nested@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticDecl@Nested@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticInclass@Nested@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticInlineDef@Nested@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticInlineDecl@Nested@ImportMembers@@SAXXZ"()
|
||||
// GNU-DAG: define void @_ZN13ImportMembers6Nested9staticDefEv()
|
||||
// GNU-DAG: declare dllimport void @_ZN13ImportMembers6Nested10staticDeclEv()
|
||||
// GNU-DAG: define linkonce_odr void @_ZN13ImportMembers6Nested13staticInclassEv()
|
||||
// GNU-DAG: define linkonce_odr void @_ZN13ImportMembers6Nested15staticInlineDefEv()
|
||||
// GNU-DAG: define linkonce_odr void @_ZN13ImportMembers6Nested16staticInlineDeclEv()
|
||||
// MSC-DAG: define dso_local dllexport void @"\01?staticDef@Nested@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticDecl@Nested@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticInclass@Nested@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticInlineDef@Nested@ImportMembers@@SAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01?staticInlineDecl@Nested@ImportMembers@@SAXXZ"()
|
||||
// GNU-DAG: define dso_local void @_ZN13ImportMembers6Nested9staticDefEv()
|
||||
// GNU-DAG: declare dllimport void @_ZN13ImportMembers6Nested10staticDeclEv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested13staticInclassEv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested15staticInlineDefEv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested16staticInlineDeclEv()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01?staticInclass@Nested@ImportMembers@@SAXXZ"()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01?staticInlineDef@Nested@ImportMembers@@SAXXZ"()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01?staticInlineDecl@Nested@ImportMembers@@SAXXZ"()
|
||||
// GO1-DAG: define linkonce_odr void @_ZN13ImportMembers6Nested13staticInclassEv()
|
||||
// GO1-DAG: define linkonce_odr void @_ZN13ImportMembers6Nested15staticInlineDefEv()
|
||||
// GO1-DAG: define linkonce_odr void @_ZN13ImportMembers6Nested16staticInlineDeclEv()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested13staticInclassEv()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested15staticInlineDefEv()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_ZN13ImportMembers6Nested16staticInlineDeclEv()
|
||||
__declspec(dllimport) static void staticDef(); // dllimport ignored
|
||||
__declspec(dllimport) static void staticDecl();
|
||||
__declspec(dllimport) static void staticInclass() {}
|
||||
@ -342,10 +342,10 @@ private:
|
||||
__declspec(dllimport) void privateNormalDecl();
|
||||
__declspec(dllimport) static void privateStaticDecl();
|
||||
|
||||
// M32-DAG: declare x86_thiscallcc void @"\01?ignored@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare void @"\01?ignored@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// G32-DAG: declare x86_thiscallcc void @_ZN13ImportMembers6Nested7ignoredEv(%"struct.ImportMembers::Nested"*)
|
||||
// G64-DAG: declare void @_ZN13ImportMembers6Nested7ignoredEv(%"struct.ImportMembers::Nested"*)
|
||||
// M32-DAG: declare dso_local x86_thiscallcc void @"\01?ignored@Nested@ImportMembers@@QAEXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// M64-DAG: declare dso_local void @"\01?ignored@Nested@ImportMembers@@QEAAXXZ"(%"struct.ImportMembers::Nested"*)
|
||||
// G32-DAG: declare dso_local x86_thiscallcc void @_ZN13ImportMembers6Nested7ignoredEv(%"struct.ImportMembers::Nested"*)
|
||||
// G64-DAG: declare dso_local void @_ZN13ImportMembers6Nested7ignoredEv(%"struct.ImportMembers::Nested"*)
|
||||
public:
|
||||
void ignored();
|
||||
|
||||
@ -451,50 +451,50 @@ USESPECIALS(ImportSpecials)
|
||||
struct ImportInlineSpecials {
|
||||
// M32-DAG: declare dllimport x86_thiscallcc %struct.ImportInlineSpecials* @"\01??0ImportInlineSpecials@@QAE@XZ"(%struct.ImportInlineSpecials* returned)
|
||||
// M64-DAG: declare dllimport %struct.ImportInlineSpecials* @"\01??0ImportInlineSpecials@@QEAA@XZ"(%struct.ImportInlineSpecials* returned)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN20ImportInlineSpecialsC1Ev(%struct.ImportInlineSpecials* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN20ImportInlineSpecialsC1Ev(%struct.ImportInlineSpecials* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsC1Ev(%struct.ImportInlineSpecials* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN20ImportInlineSpecialsC1Ev(%struct.ImportInlineSpecials* %this)
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc %struct.ImportInlineSpecials* @"\01??0ImportInlineSpecials@@QAE@XZ"(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN20ImportInlineSpecialsC1Ev(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsC1Ev(
|
||||
__declspec(dllimport) ImportInlineSpecials() {}
|
||||
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01??1ImportInlineSpecials@@QAE@XZ"(%struct.ImportInlineSpecials*)
|
||||
// M64-DAG: declare dllimport void @"\01??1ImportInlineSpecials@@QEAA@XZ"(%struct.ImportInlineSpecials*)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN20ImportInlineSpecialsD1Ev(%struct.ImportInlineSpecials* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN20ImportInlineSpecialsD1Ev(%struct.ImportInlineSpecials* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsD1Ev(%struct.ImportInlineSpecials* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN20ImportInlineSpecialsD1Ev(%struct.ImportInlineSpecials* %this)
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc void @"\01??1ImportInlineSpecials@@QAE@XZ"(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN20ImportInlineSpecialsD1Ev(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsD1Ev(
|
||||
__declspec(dllimport) ~ImportInlineSpecials() {}
|
||||
|
||||
// M32-DAG: declare dllimport x86_thiscallcc %struct.ImportInlineSpecials* @"\01??0ImportInlineSpecials@@QAE@ABU0@@Z"(%struct.ImportInlineSpecials* returned, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: declare dllimport %struct.ImportInlineSpecials* @"\01??0ImportInlineSpecials@@QEAA@AEBU0@@Z"(%struct.ImportInlineSpecials* returned, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN20ImportInlineSpecialsC1ERKS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr void @_ZN20ImportInlineSpecialsC1ERKS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsC1ERKS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN20ImportInlineSpecialsC1ERKS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc %struct.ImportInlineSpecials* @"\01??0ImportInlineSpecials@@QAE@ABU0@@Z"(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN20ImportInlineSpecialsC1ERKS_(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsC1ERKS_(
|
||||
__declspec(dllimport) inline ImportInlineSpecials(const ImportInlineSpecials&);
|
||||
|
||||
// M32-DAG: declare dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @"\01??4ImportInlineSpecials@@QAEAAU0@ABU0@@Z"(%struct.ImportInlineSpecials*, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: declare dllimport dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @"\01??4ImportInlineSpecials@@QEAAAEAU0@AEBU0@@Z"(%struct.ImportInlineSpecials*, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSERKS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSERKS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSERKS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr dso_local dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSERKS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @"\01??4ImportInlineSpecials@@QAEAAU0@ABU0@@Z"(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSERKS_(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSERKS_(
|
||||
__declspec(dllimport) ImportInlineSpecials& operator=(const ImportInlineSpecials&);
|
||||
|
||||
// M32-DAG: declare dllimport x86_thiscallcc %struct.ImportInlineSpecials* @"\01??0ImportInlineSpecials@@QAE@$$QAU0@@Z"(%struct.ImportInlineSpecials* returned, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: declare dllimport %struct.ImportInlineSpecials* @"\01??0ImportInlineSpecials@@QEAA@$$QEAU0@@Z"(%struct.ImportInlineSpecials* returned, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN20ImportInlineSpecialsC1EOS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr void @_ZN20ImportInlineSpecialsC1EOS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsC1EOS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN20ImportInlineSpecialsC1EOS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc %struct.ImportInlineSpecials* @"\01??0ImportInlineSpecials@@QAE@$$QAU0@@Z"(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN20ImportInlineSpecialsC1EOS_(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN20ImportInlineSpecialsC1EOS_(
|
||||
__declspec(dllimport) ImportInlineSpecials(ImportInlineSpecials&&) {}
|
||||
|
||||
// M32-DAG: declare dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @"\01??4ImportInlineSpecials@@QAEAAU0@$$QAU0@@Z"(%struct.ImportInlineSpecials*, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: declare dllimport dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @"\01??4ImportInlineSpecials@@QEAAAEAU0@$$QEAU0@@Z"(%struct.ImportInlineSpecials*, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSEOS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSEOS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSEOS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr dso_local dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSEOS_(%struct.ImportInlineSpecials* %this, %struct.ImportInlineSpecials* dereferenceable({{[0-9]+}}))
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @"\01??4ImportInlineSpecials@@QAEAAU0@$$QAU0@@Z"(
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSEOS_(
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportInlineSpecials* @_ZN20ImportInlineSpecialsaSEOS_(
|
||||
__declspec(dllimport) ImportInlineSpecials& operator=(ImportInlineSpecials&&) { return *this; }
|
||||
};
|
||||
ImportInlineSpecials::ImportInlineSpecials(const ImportInlineSpecials&) {}
|
||||
@ -506,50 +506,50 @@ USESPECIALS(ImportInlineSpecials)
|
||||
struct ImportDefaulted {
|
||||
// M32-DAG: declare dllimport x86_thiscallcc %struct.ImportDefaulted* @"\01??0ImportDefaulted@@QAE@XZ"(%struct.ImportDefaulted* returned)
|
||||
// M64-DAG: declare dllimport %struct.ImportDefaulted* @"\01??0ImportDefaulted@@QEAA@XZ"(%struct.ImportDefaulted* returned)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN15ImportDefaultedC1Ev(%struct.ImportDefaulted* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN15ImportDefaultedC1Ev(%struct.ImportDefaulted* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedC1Ev(%struct.ImportDefaulted* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN15ImportDefaultedC1Ev(%struct.ImportDefaulted* %this)
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc %struct.ImportDefaulted* @"\01??0ImportDefaulted@@QAE@XZ"(%struct.ImportDefaulted* returned %this)
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN15ImportDefaultedC1Ev(%struct.ImportDefaulted* %this)
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedC1Ev(%struct.ImportDefaulted* %this)
|
||||
__declspec(dllimport) ImportDefaulted() = default;
|
||||
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01??1ImportDefaulted@@QAE@XZ"(%struct.ImportDefaulted*)
|
||||
// M64-DAG: declare dllimport void @"\01??1ImportDefaulted@@QEAA@XZ"(%struct.ImportDefaulted*)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN15ImportDefaultedD1Ev(%struct.ImportDefaulted* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN15ImportDefaultedD1Ev(%struct.ImportDefaulted* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedD1Ev(%struct.ImportDefaulted* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN15ImportDefaultedD1Ev(%struct.ImportDefaulted* %this)
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc void @"\01??1ImportDefaulted@@QAE@XZ"(%struct.ImportDefaulted* %this)
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN15ImportDefaultedD1Ev(%struct.ImportDefaulted* %this)
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedD1Ev(%struct.ImportDefaulted* %this)
|
||||
__declspec(dllimport) ~ImportDefaulted() = default;
|
||||
|
||||
// M32-DAG: declare dllimport x86_thiscallcc %struct.ImportDefaulted* @"\01??0ImportDefaulted@@QAE@ABU0@@Z"(%struct.ImportDefaulted* returned, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: declare dllimport %struct.ImportDefaulted* @"\01??0ImportDefaulted@@QEAA@AEBU0@@Z"(%struct.ImportDefaulted* returned, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN15ImportDefaultedC1ERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr void @_ZN15ImportDefaultedC1ERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedC1ERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN15ImportDefaultedC1ERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc %struct.ImportDefaulted* @"\01??0ImportDefaulted@@QAE@ABU0@@Z"(%struct.ImportDefaulted* returned %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN15ImportDefaultedC1ERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedC1ERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
__declspec(dllimport) ImportDefaulted(const ImportDefaulted&) = default;
|
||||
|
||||
// M32-DAG: declare dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @"\01??4ImportDefaulted@@QAEAAU0@ABU0@@Z"(%struct.ImportDefaulted*, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: declare dllimport dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @"\01??4ImportDefaulted@@QEAAAEAU0@AEBU0@@Z"(%struct.ImportDefaulted*, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr dso_local dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @"\01??4ImportDefaulted@@QAEAAU0@ABU0@@Z"(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSERKS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
__declspec(dllimport) ImportDefaulted& operator=(const ImportDefaulted&) = default;
|
||||
|
||||
// M32-DAG: declare dllimport x86_thiscallcc %struct.ImportDefaulted* @"\01??0ImportDefaulted@@QAE@$$QAU0@@Z"(%struct.ImportDefaulted* returned, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: declare dllimport %struct.ImportDefaulted* @"\01??0ImportDefaulted@@QEAA@$$QEAU0@@Z"(%struct.ImportDefaulted* returned, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN15ImportDefaultedC1EOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr void @_ZN15ImportDefaultedC1EOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedC1EOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN15ImportDefaultedC1EOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc %struct.ImportDefaulted* @"\01??0ImportDefaulted@@QAE@$$QAU0@@Z"(%struct.ImportDefaulted* returned %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc void @_ZN15ImportDefaultedC1EOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN15ImportDefaultedC1EOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
__declspec(dllimport) ImportDefaulted(ImportDefaulted&&) = default;
|
||||
|
||||
// M32-DAG: declare dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @"\01??4ImportDefaulted@@QAEAAU0@$$QAU0@@Z"(%struct.ImportDefaulted*, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: declare dllimport dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @"\01??4ImportDefaulted@@QEAAAEAU0@$$QEAU0@@Z"(%struct.ImportDefaulted*, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSEOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSEOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSEOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr dso_local dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSEOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// MO1-DAG: define available_externally dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @"\01??4ImportDefaulted@@QAEAAU0@$$QAU0@@Z"(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// GO1-DAG: define linkonce_odr x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSEOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
// GO1-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaulted* @_ZN15ImportDefaultedaSEOS_(%struct.ImportDefaulted* %this, %struct.ImportDefaulted* dereferenceable({{[0-9]+}}))
|
||||
__declspec(dllimport) ImportDefaulted& operator=(ImportDefaulted&&) = default;
|
||||
|
||||
ForceNonTrivial v; // ensure special members are non-trivial
|
||||
@ -585,28 +585,28 @@ __declspec(dllimport) ImportDefaultedDefs::~ImportDefaultedDefs() = default;
|
||||
|
||||
// M32-DAG: declare dllimport x86_thiscallcc %struct.ImportDefaultedDefs* @"\01??0ImportDefaultedDefs@@QAE@ABU0@@Z"(%struct.ImportDefaultedDefs* returned, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: declare dllimport %struct.ImportDefaultedDefs* @"\01??0ImportDefaultedDefs@@QEAA@AEBU0@@Z"(%struct.ImportDefaultedDefs* returned, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN19ImportDefaultedDefsC1ERKS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr void @_ZN19ImportDefaultedDefsC1ERKS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN19ImportDefaultedDefsC1ERKS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN19ImportDefaultedDefsC1ERKS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
inline ImportDefaultedDefs::ImportDefaultedDefs(const ImportDefaultedDefs&) = default;
|
||||
|
||||
// M32-DAG: declare dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @"\01??4ImportDefaultedDefs@@QAEAAU0@ABU0@@Z"(%struct.ImportDefaultedDefs*, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: declare dllimport dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @"\01??4ImportDefaultedDefs@@QEAAAEAU0@AEBU0@@Z"(%struct.ImportDefaultedDefs*, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @_ZN19ImportDefaultedDefsaSERKS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @_ZN19ImportDefaultedDefsaSERKS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @_ZN19ImportDefaultedDefsaSERKS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define linkonce_odr dso_local dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @_ZN19ImportDefaultedDefsaSERKS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
inline ImportDefaultedDefs& ImportDefaultedDefs::operator=(const ImportDefaultedDefs&) = default;
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc %struct.ImportDefaultedDefs* @"\01??0ImportDefaultedDefs@@QAE@$$QAU0@@Z"(%struct.ImportDefaultedDefs* returned %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dllexport %struct.ImportDefaultedDefs* @"\01??0ImportDefaultedDefs@@QEAA@$$QEAU0@@Z"(%struct.ImportDefaultedDefs* returned %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define x86_thiscallcc void @_ZN19ImportDefaultedDefsC1EOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define void @_ZN19ImportDefaultedDefsC1EOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define x86_thiscallcc void @_ZN19ImportDefaultedDefsC2EOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define void @_ZN19ImportDefaultedDefsC2EOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc %struct.ImportDefaultedDefs* @"\01??0ImportDefaultedDefs@@QAE@$$QAU0@@Z"(%struct.ImportDefaultedDefs* returned %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dso_local dllexport %struct.ImportDefaultedDefs* @"\01??0ImportDefaultedDefs@@QEAA@$$QEAU0@@Z"(%struct.ImportDefaultedDefs* returned %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dso_local x86_thiscallcc void @_ZN19ImportDefaultedDefsC1EOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dso_local void @_ZN19ImportDefaultedDefsC1EOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dso_local x86_thiscallcc void @_ZN19ImportDefaultedDefsC2EOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dso_local void @_ZN19ImportDefaultedDefsC2EOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
ImportDefaultedDefs::ImportDefaultedDefs(ImportDefaultedDefs&&) = default; // dllimport ignored
|
||||
|
||||
// M32-DAG: define dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @"\01??4ImportDefaultedDefs@@QAEAAU0@$$QAU0@@Z"(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dllexport dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @"\01??4ImportDefaultedDefs@@QEAAAEAU0@$$QEAU0@@Z"(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @_ZN19ImportDefaultedDefsaSEOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @_ZN19ImportDefaultedDefsaSEOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @"\01??4ImportDefaultedDefs@@QAEAAU0@$$QAU0@@Z"(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// M64-DAG: define dso_local dllexport dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @"\01??4ImportDefaultedDefs@@QEAAAEAU0@$$QEAU0@@Z"(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G32-DAG: define dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @_ZN19ImportDefaultedDefsaSEOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
// G64-DAG: define dso_local dereferenceable({{[0-9]+}}) %struct.ImportDefaultedDefs* @_ZN19ImportDefaultedDefsaSEOS_(%struct.ImportDefaultedDefs* %this, %struct.ImportDefaultedDefs* dereferenceable({{[0-9]+}}))
|
||||
ImportDefaultedDefs& ImportDefaultedDefs::operator=(ImportDefaultedDefs&&) = default; // dllimport ignored
|
||||
|
||||
USESPECIALS(ImportDefaultedDefs)
|
||||
@ -659,12 +659,12 @@ struct MemFunTmpl {
|
||||
// Import implicit instantiation of an imported member function template.
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01??$importedNormal@UImplicitInst_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*)
|
||||
// M64-DAG: declare dllimport void @"\01??$importedNormal@UImplicitInst_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI21ImplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN10MemFunTmpl14importedNormalI21ImplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI21ImplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN10MemFunTmpl14importedNormalI21ImplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
USEMF(MemFunTmpl, importedNormal<ImplicitInst_Imported>)
|
||||
|
||||
// MSC-DAG: declare dllimport void @"\01??$importedStatic@UImplicitInst_Imported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_ZN10MemFunTmpl14importedStaticI21ImplicitInst_ImportedEEvv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_ZN10MemFunTmpl14importedStaticI21ImplicitInst_ImportedEEvv()
|
||||
USE(MemFunTmpl::importedStatic<ImplicitInst_Imported>)
|
||||
|
||||
|
||||
@ -672,13 +672,13 @@ USE(MemFunTmpl::importedStatic<ImplicitInst_Imported>)
|
||||
// template.
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01??$importedNormal@UExplicitDecl_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*)
|
||||
// M64-DAG: declare dllimport void @"\01??$importedNormal@UExplicitDecl_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*)
|
||||
// G32-DAG: declare x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI21ExplicitDecl_ImportedEEvv(%struct.MemFunTmpl*)
|
||||
// G64-DAG: declare void @_ZN10MemFunTmpl14importedNormalI21ExplicitDecl_ImportedEEvv(%struct.MemFunTmpl*)
|
||||
// G32-DAG: declare dso_local x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI21ExplicitDecl_ImportedEEvv(%struct.MemFunTmpl*)
|
||||
// G64-DAG: declare dso_local void @_ZN10MemFunTmpl14importedNormalI21ExplicitDecl_ImportedEEvv(%struct.MemFunTmpl*)
|
||||
extern template void MemFunTmpl::importedNormal<ExplicitDecl_Imported>();
|
||||
USEMF(MemFunTmpl, importedNormal<ExplicitDecl_Imported>)
|
||||
|
||||
// MSC-DAG: declare dllimport void @"\01??$importedStatic@UExplicitDecl_Imported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: declare void @_ZN10MemFunTmpl14importedStaticI21ExplicitDecl_ImportedEEvv()
|
||||
// GNU-DAG: declare dso_local void @_ZN10MemFunTmpl14importedStaticI21ExplicitDecl_ImportedEEvv()
|
||||
extern template void MemFunTmpl::importedStatic<ExplicitDecl_Imported>();
|
||||
USE(MemFunTmpl::importedStatic<ExplicitDecl_Imported>)
|
||||
|
||||
@ -687,13 +687,13 @@ USE(MemFunTmpl::importedStatic<ExplicitDecl_Imported>)
|
||||
// template.
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01??$importedNormal@UExplicitInst_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*)
|
||||
// M64-DAG: declare dllimport void @"\01??$importedNormal@UExplicitInst_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*)
|
||||
// G32-DAG: define weak_odr x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI21ExplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr void @_ZN10MemFunTmpl14importedNormalI21ExplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dso_local x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI21ExplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dso_local void @_ZN10MemFunTmpl14importedNormalI21ExplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
template void MemFunTmpl::importedNormal<ExplicitInst_Imported>();
|
||||
USEMF(MemFunTmpl, importedNormal<ExplicitInst_Imported>)
|
||||
|
||||
// MSC-DAG: declare dllimport void @"\01??$importedStatic@UExplicitInst_Imported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define weak_odr void @_ZN10MemFunTmpl14importedStaticI21ExplicitInst_ImportedEEvv()
|
||||
// GNU-DAG: define weak_odr dso_local void @_ZN10MemFunTmpl14importedStaticI21ExplicitInst_ImportedEEvv()
|
||||
template void MemFunTmpl::importedStatic<ExplicitInst_Imported>();
|
||||
USE(MemFunTmpl::importedStatic<ExplicitInst_Imported>)
|
||||
|
||||
@ -715,8 +715,8 @@ USEMF(MemFunTmpl, importedNormal<ExplicitSpec_Imported>)
|
||||
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01??$importedNormal@UExplicitSpec_InlineDef_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*)
|
||||
// M64-DAG: declare dllimport void @"\01??$importedNormal@UExplicitSpec_InlineDef_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI31ExplicitSpec_InlineDef_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN10MemFunTmpl14importedNormalI31ExplicitSpec_InlineDef_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI31ExplicitSpec_InlineDef_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN10MemFunTmpl14importedNormalI31ExplicitSpec_InlineDef_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
template<> __declspec(dllimport) inline void MemFunTmpl::importedNormal<ExplicitSpec_InlineDef_Imported>() {}
|
||||
USEMF(MemFunTmpl, importedNormal<ExplicitSpec_InlineDef_Imported>)
|
||||
|
||||
@ -733,22 +733,22 @@ USE(MemFunTmpl::importedStatic<ExplicitSpec_Imported>)
|
||||
#endif
|
||||
|
||||
// MSC-DAG: declare dllimport void @"\01??$importedStatic@UExplicitSpec_InlineDef_Imported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_ZN10MemFunTmpl14importedStaticI31ExplicitSpec_InlineDef_ImportedEEvv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_ZN10MemFunTmpl14importedStaticI31ExplicitSpec_InlineDef_ImportedEEvv()
|
||||
template<> __declspec(dllimport) inline void MemFunTmpl::importedStatic<ExplicitSpec_InlineDef_Imported>() {}
|
||||
USE(MemFunTmpl::importedStatic<ExplicitSpec_InlineDef_Imported>)
|
||||
|
||||
|
||||
// Not importing specialization of an imported member function template without
|
||||
// explicit dllimport.
|
||||
// M32-DAG: define x86_thiscallcc void @"\01??$importedNormal@UExplicitSpec_NotImported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define void @"\01??$importedNormal@UExplicitSpec_NotImported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI24ExplicitSpec_NotImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define void @_ZN10MemFunTmpl14importedNormalI24ExplicitSpec_NotImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// M32-DAG: define dso_local x86_thiscallcc void @"\01??$importedNormal@UExplicitSpec_NotImported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl* %this)
|
||||
// M64-DAG: define dso_local void @"\01??$importedNormal@UExplicitSpec_NotImported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define dso_local x86_thiscallcc void @_ZN10MemFunTmpl14importedNormalI24ExplicitSpec_NotImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define dso_local void @_ZN10MemFunTmpl14importedNormalI24ExplicitSpec_NotImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
template<> void MemFunTmpl::importedNormal<ExplicitSpec_NotImported>() {}
|
||||
USEMF(MemFunTmpl, importedNormal<ExplicitSpec_NotImported>)
|
||||
|
||||
// MSC-DAG: define void @"\01??$importedStatic@UExplicitSpec_NotImported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define void @_ZN10MemFunTmpl14importedStaticI24ExplicitSpec_NotImportedEEvv()
|
||||
// MSC-DAG: define dso_local void @"\01??$importedStatic@UExplicitSpec_NotImported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define dso_local void @_ZN10MemFunTmpl14importedStaticI24ExplicitSpec_NotImportedEEvv()
|
||||
template<> void MemFunTmpl::importedStatic<ExplicitSpec_NotImported>() {}
|
||||
USE(MemFunTmpl::importedStatic<ExplicitSpec_NotImported>)
|
||||
|
||||
@ -757,13 +757,13 @@ USE(MemFunTmpl::importedStatic<ExplicitSpec_NotImported>)
|
||||
// template.
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01??$normalDef@UExplicitDecl_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*)
|
||||
// M64-DAG: declare dllimport void @"\01??$normalDef@UExplicitDecl_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*)
|
||||
// G32-DAG: declare x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI21ExplicitDecl_ImportedEEvv(%struct.MemFunTmpl*)
|
||||
// G64-DAG: declare void @_ZN10MemFunTmpl9normalDefI21ExplicitDecl_ImportedEEvv(%struct.MemFunTmpl*)
|
||||
// G32-DAG: declare dso_local x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI21ExplicitDecl_ImportedEEvv(%struct.MemFunTmpl*)
|
||||
// G64-DAG: declare dso_local void @_ZN10MemFunTmpl9normalDefI21ExplicitDecl_ImportedEEvv(%struct.MemFunTmpl*)
|
||||
extern template __declspec(dllimport) void MemFunTmpl::normalDef<ExplicitDecl_Imported>();
|
||||
USEMF(MemFunTmpl, normalDef<ExplicitDecl_Imported>)
|
||||
|
||||
// MSC-DAG: declare dllimport void @"\01??$staticDef@UExplicitDecl_Imported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: declare void @_ZN10MemFunTmpl9staticDefI21ExplicitDecl_ImportedEEvv()
|
||||
// GNU-DAG: declare dso_local void @_ZN10MemFunTmpl9staticDefI21ExplicitDecl_ImportedEEvv()
|
||||
extern template __declspec(dllimport) void MemFunTmpl::staticDef<ExplicitDecl_Imported>();
|
||||
USE(MemFunTmpl::staticDef<ExplicitDecl_Imported>)
|
||||
|
||||
@ -772,13 +772,13 @@ USE(MemFunTmpl::staticDef<ExplicitDecl_Imported>)
|
||||
// template.
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01??$normalDef@UExplicitInst_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*)
|
||||
// M64-DAG: declare dllimport void @"\01??$normalDef@UExplicitInst_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*)
|
||||
// G32-DAG: define weak_odr x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI21ExplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr void @_ZN10MemFunTmpl9normalDefI21ExplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define weak_odr dso_local x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI21ExplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define weak_odr dso_local void @_ZN10MemFunTmpl9normalDefI21ExplicitInst_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
template __declspec(dllimport) void MemFunTmpl::normalDef<ExplicitInst_Imported>();
|
||||
USEMF(MemFunTmpl, normalDef<ExplicitInst_Imported>)
|
||||
|
||||
// MSC-DAG: declare dllimport void @"\01??$staticDef@UExplicitInst_Imported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define weak_odr void @_ZN10MemFunTmpl9staticDefI21ExplicitInst_ImportedEEvv()
|
||||
// GNU-DAG: define weak_odr dso_local void @_ZN10MemFunTmpl9staticDefI21ExplicitInst_ImportedEEvv()
|
||||
template __declspec(dllimport) void MemFunTmpl::staticDef<ExplicitInst_Imported>();
|
||||
USE(MemFunTmpl::staticDef<ExplicitInst_Imported>)
|
||||
|
||||
@ -800,8 +800,8 @@ USEMF(MemFunTmpl, normalDef<ExplicitSpec_Imported>)
|
||||
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01??$normalDef@UExplicitSpec_InlineDef_Imported@@@MemFunTmpl@@QAEXXZ"(%struct.MemFunTmpl*)
|
||||
// M64-DAG: declare dllimport void @"\01??$normalDef@UExplicitSpec_InlineDef_Imported@@@MemFunTmpl@@QEAAXXZ"(%struct.MemFunTmpl*)
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI31ExplicitSpec_InlineDef_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define linkonce_odr void @_ZN10MemFunTmpl9normalDefI31ExplicitSpec_InlineDef_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN10MemFunTmpl9normalDefI31ExplicitSpec_InlineDef_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
// G64-DAG: define linkonce_odr dso_local void @_ZN10MemFunTmpl9normalDefI31ExplicitSpec_InlineDef_ImportedEEvv(%struct.MemFunTmpl* %this)
|
||||
template<> __declspec(dllimport) inline void MemFunTmpl::normalDef<ExplicitSpec_InlineDef_Imported>() {}
|
||||
USEMF(MemFunTmpl, normalDef<ExplicitSpec_InlineDef_Imported>)
|
||||
|
||||
@ -818,7 +818,7 @@ USE(MemFunTmpl::staticDef<ExplicitSpec_Imported>)
|
||||
#endif
|
||||
|
||||
// MSC-DAG: declare dllimport void @"\01??$staticDef@UExplicitSpec_InlineDef_Imported@@@MemFunTmpl@@SAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_ZN10MemFunTmpl9staticDefI31ExplicitSpec_InlineDef_ImportedEEvv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_ZN10MemFunTmpl9staticDefI31ExplicitSpec_InlineDef_ImportedEEvv()
|
||||
template<> __declspec(dllimport) inline void MemFunTmpl::staticDef<ExplicitSpec_InlineDef_Imported>() {}
|
||||
USE(MemFunTmpl::staticDef<ExplicitSpec_InlineDef_Imported>)
|
||||
|
||||
@ -853,8 +853,8 @@ USEMV(MemVarTmpl, ImportedStaticVar<ExplicitSpec_Imported>)
|
||||
|
||||
// Not importing specialization of a member variable template without explicit
|
||||
// dllimport.
|
||||
// MSC-DAG: @"\01??$ImportedStaticVar@UExplicitSpec_NotImported@@@MemVarTmpl@@2HB" = external constant i32
|
||||
// GNU-DAG: @_ZN10MemVarTmpl17ImportedStaticVarI24ExplicitSpec_NotImportedEE = external constant i32
|
||||
// MSC-DAG: @"\01??$ImportedStaticVar@UExplicitSpec_NotImported@@@MemVarTmpl@@2HB" = external dso_local constant i32
|
||||
// GNU-DAG: @_ZN10MemVarTmpl17ImportedStaticVarI24ExplicitSpec_NotImportedEE = external dso_local constant i32
|
||||
template<> const int MemVarTmpl::ImportedStaticVar<ExplicitSpec_NotImported>;
|
||||
USEMV(MemVarTmpl, ImportedStaticVar<ExplicitSpec_NotImported>)
|
||||
|
||||
|
||||
@ -40,15 +40,15 @@ auto mp_general_v = &General::virt;
|
||||
|
||||
// All of the non-virtual globals need dynamic initializers.
|
||||
|
||||
// CHECK: @"\01?mp_single_nv@@3P8Single@@AEXXZQ1@" = global i8* null, align 4
|
||||
// CHECK: @"\01?mp_multi_nv@@3P8Multi@@AEXXZQ1@" = global { i8*, i32 } zeroinitializer, align 4
|
||||
// CHECK: @"\01?mp_virtual_nv@@3P8Virtual@@AEXXZQ1@" = global { i8*, i32, i32 } zeroinitializer, align 4
|
||||
// CHECK: @"\01?mp_general_nv@@3P8General@@AEXXZQ1@" = global { i8*, i32, i32, i32 } zeroinitializer, align 4
|
||||
// CHECK: @"\01?mp_single_nv@@3P8Single@@AEXXZQ1@" = dso_local global i8* null, align 4
|
||||
// CHECK: @"\01?mp_multi_nv@@3P8Multi@@AEXXZQ1@" = dso_local global { i8*, i32 } zeroinitializer, align 4
|
||||
// CHECK: @"\01?mp_virtual_nv@@3P8Virtual@@AEXXZQ1@" = dso_local global { i8*, i32, i32 } zeroinitializer, align 4
|
||||
// CHECK: @"\01?mp_general_nv@@3P8General@@AEXXZQ1@" = dso_local global { i8*, i32, i32, i32 } zeroinitializer, align 4
|
||||
|
||||
// CHECK: @"\01?mp_single_v@@3P8Single@@AEXXZQ1@" = global i8* bitcast (void (%struct.Single*, ...)* @"\01??_9Single@@$BA@AE" to i8*), align 4
|
||||
// CHECK: @"\01?mp_multi_v@@3P8Multi@@AEXXZQ1@" = global { i8*, i32 } { i8* bitcast (void (%struct.Multi*, ...)* @"\01??_9Multi@@$BA@AE" to i8*), i32 0 }, align 4
|
||||
// CHECK: @"\01?mp_virtual_v@@3P8Virtual@@AEXXZQ1@" = global { i8*, i32, i32 } { i8* bitcast (void (%struct.Virtual*, ...)* @"\01??_9Virtual@@$BA@AE" to i8*), i32 0, i32 0 }, align 4
|
||||
// CHECK: @"\01?mp_general_v@@3P8General@@AEXXZQ1@" = global { i8*, i32, i32, i32 } { i8* bitcast (void (%struct.General*, ...)* @"\01??_9General@@$BA@AE" to i8*), i32 0, i32 0, i32 0 }, align 4
|
||||
// CHECK: @"\01?mp_single_v@@3P8Single@@AEXXZQ1@" = dso_local global i8* bitcast (void (%struct.Single*, ...)* @"\01??_9Single@@$BA@AE" to i8*), align 4
|
||||
// CHECK: @"\01?mp_multi_v@@3P8Multi@@AEXXZQ1@" = dso_local global { i8*, i32 } { i8* bitcast (void (%struct.Multi*, ...)* @"\01??_9Multi@@$BA@AE" to i8*), i32 0 }, align 4
|
||||
// CHECK: @"\01?mp_virtual_v@@3P8Virtual@@AEXXZQ1@" = dso_local global { i8*, i32, i32 } { i8* bitcast (void (%struct.Virtual*, ...)* @"\01??_9Virtual@@$BA@AE" to i8*), i32 0, i32 0 }, align 4
|
||||
// CHECK: @"\01?mp_general_v@@3P8General@@AEXXZQ1@" = dso_local global { i8*, i32, i32, i32 } { i8* bitcast (void (%struct.General*, ...)* @"\01??_9General@@$BA@AE" to i8*), i32 0, i32 0, i32 0 }, align 4
|
||||
|
||||
// CHECK: define internal void @_GLOBAL__sub_I{{.*}}() {{.*}} {
|
||||
// CHECK: call void @"\01??__Emp_single_nv@@YAXXZ"()
|
||||
|
||||
@ -12,7 +12,7 @@ struct __declspec(dllimport) S {
|
||||
// MSVC-DAG: @"\01??_R3S@@8" = linkonce_odr
|
||||
|
||||
// GNU-DAG: @_ZTV1S = available_externally dllimport
|
||||
// GNU-DAG: @_ZTI1S = linkonce_odr
|
||||
// GNU-DAG: @_ZTI1S = linkonce_odr dso_local
|
||||
|
||||
struct U : S {
|
||||
} u;
|
||||
@ -21,13 +21,13 @@ struct __declspec(dllimport) V {
|
||||
virtual void f();
|
||||
} v;
|
||||
// GNU-DAG: @_ZTV1V = available_externally dllimport
|
||||
// GNU-DAG: @_ZTS1V = linkonce_odr
|
||||
// GNU-DAG: @_ZTI1V = linkonce_odr
|
||||
// GNU-DAG: @_ZTS1V = linkonce_odr dso_local
|
||||
// GNU-DAG: @_ZTI1V = linkonce_odr dso_local
|
||||
|
||||
struct W {
|
||||
__declspec(dllimport) virtual void f();
|
||||
virtual void g();
|
||||
} w;
|
||||
// GNU-DAG: @_ZTV1W = linkonce_odr
|
||||
// GNU-DAG: @_ZTS1W = linkonce_odr
|
||||
// GNU-DAG: @_ZTI1W = linkonce_odr
|
||||
// GNU-DAG: @_ZTV1W = linkonce_odr dso_local
|
||||
// GNU-DAG: @_ZTS1W = linkonce_odr dso_local
|
||||
// GNU-DAG: @_ZTI1W = linkonce_odr dso_local
|
||||
|
||||
@ -77,8 +77,8 @@ USEVAR(GlobalRedecl2c)
|
||||
|
||||
// NB: MSC issues a warning and makes GlobalRedecl3 dllexport. We follow GCC
|
||||
// and drop the dllimport with a warning.
|
||||
// MSC-DAG: @"\01?GlobalRedecl3@@3HA" = external global i32
|
||||
// GNU-DAG: @GlobalRedecl3 = external global i32
|
||||
// MSC-DAG: @"\01?GlobalRedecl3@@3HA" = external dso_local global i32
|
||||
// GNU-DAG: @GlobalRedecl3 = external dso_local global i32
|
||||
__declspec(dllimport) extern int GlobalRedecl3;
|
||||
extern int GlobalRedecl3; // dllimport ignored
|
||||
USEVAR(GlobalRedecl3)
|
||||
@ -136,8 +136,8 @@ template<typename T> __declspec(dllimport) int VarTmplRedecl2;
|
||||
template<typename T> __declspec(dllimport) int VarTmplRedecl2;
|
||||
USEVAR(VarTmplRedecl2<ImplicitInst_Imported>)
|
||||
|
||||
// MSC-DAG: @"\01??$VarTmplRedecl3@UImplicitInst_Imported@@@@3HA" = external global i32
|
||||
// GNU-DAG: @_Z14VarTmplRedecl3I21ImplicitInst_ImportedE = external global i32
|
||||
// MSC-DAG: @"\01??$VarTmplRedecl3@UImplicitInst_Imported@@@@3HA" = external dso_local global i32
|
||||
// GNU-DAG: @_Z14VarTmplRedecl3I21ImplicitInst_ImportedE = external dso_local global i32
|
||||
template<typename T> __declspec(dllimport) extern int VarTmplRedecl3;
|
||||
template<typename T> extern int VarTmplRedecl3; // dllimport ignored
|
||||
USEVAR(VarTmplRedecl3<ImplicitInst_Imported>)
|
||||
@ -174,8 +174,8 @@ USEVAR(ImportedVarTmpl<ExplicitSpec_Imported>)
|
||||
|
||||
// Not importing specialization of an imported variable template without
|
||||
// explicit dllimport.
|
||||
// MSC-DAG: @"\01??$ImportedVarTmpl@UExplicitSpec_NotImported@@@@3HA" = global i32 0, align 4
|
||||
// GNU-DAG: @_Z15ImportedVarTmplI24ExplicitSpec_NotImportedE = global i32 0, align 4
|
||||
// MSC-DAG: @"\01??$ImportedVarTmpl@UExplicitSpec_NotImported@@@@3HA" = dso_local global i32 0, align 4
|
||||
// GNU-DAG: @_Z15ImportedVarTmplI24ExplicitSpec_NotImportedE = dso_local global i32 0, align 4
|
||||
template<> int ImportedVarTmpl<ExplicitSpec_NotImported>;
|
||||
USEVAR(ImportedVarTmpl<ExplicitSpec_NotImported>)
|
||||
|
||||
@ -217,31 +217,31 @@ USE(externC)
|
||||
|
||||
// Import inline function.
|
||||
// MSC-DAG: declare dllimport void @"\01?inlineFunc@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_Z10inlineFuncv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_Z10inlineFuncv()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01?inlineFunc@@YAXXZ"()
|
||||
// GO1-DAG: define linkonce_odr void @_Z10inlineFuncv()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_Z10inlineFuncv()
|
||||
__declspec(dllimport) inline void inlineFunc() {}
|
||||
USE(inlineFunc)
|
||||
|
||||
// MSC-DAG: declare dllimport void @"\01?inlineDecl@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_Z10inlineDeclv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_Z10inlineDeclv()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01?inlineDecl@@YAXXZ"()
|
||||
// GO1-DAG: define linkonce_odr void @_Z10inlineDeclv()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_Z10inlineDeclv()
|
||||
__declspec(dllimport) inline void inlineDecl();
|
||||
void inlineDecl() {}
|
||||
USE(inlineDecl)
|
||||
|
||||
// MSC-DAG: declare dllimport void @"\01?inlineDef@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_Z9inlineDefv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_Z9inlineDefv()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01?inlineDef@@YAXXZ"()
|
||||
// GO1-DAG: define linkonce_odr void @_Z9inlineDefv()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_Z9inlineDefv()
|
||||
__declspec(dllimport) void inlineDef();
|
||||
inline void inlineDef() {}
|
||||
USE(inlineDef)
|
||||
|
||||
// inline attributes
|
||||
// MSC-DAG: declare dllimport void @"\01?noinline@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_Z8noinlinev()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_Z8noinlinev()
|
||||
__declspec(dllimport) __attribute__((noinline)) inline void noinline() {}
|
||||
USE(noinline)
|
||||
|
||||
@ -259,30 +259,30 @@ USE(redecl1)
|
||||
|
||||
// NB: MSC issues a warning and makes redecl2/redecl3 dllexport. We follow GCC
|
||||
// and drop the dllimport with a warning.
|
||||
// MSC-DAG: declare void @"\01?redecl2@@YAXXZ"()
|
||||
// GNU-DAG: declare void @_Z7redecl2v()
|
||||
// MSC-DAG: declare dso_local void @"\01?redecl2@@YAXXZ"()
|
||||
// GNU-DAG: declare dso_local void @_Z7redecl2v()
|
||||
__declspec(dllimport) void redecl2();
|
||||
void redecl2();
|
||||
USE(redecl2)
|
||||
|
||||
// MSC-DAG: define dllexport void @"\01?redecl3@@YAXXZ"()
|
||||
// GNU-DAG: define void @_Z7redecl3v()
|
||||
// MSC-DAG: define dso_local dllexport void @"\01?redecl3@@YAXXZ"()
|
||||
// GNU-DAG: define dso_local void @_Z7redecl3v()
|
||||
__declspec(dllimport) void redecl3();
|
||||
void redecl3() {} // dllimport ignored
|
||||
USE(redecl3)
|
||||
|
||||
|
||||
// Friend functions
|
||||
// MSC-DAG: declare dllimport void @"\01?friend1@@YAXXZ"()
|
||||
// GNU-DAG: declare dllimport void @_Z7friend1v()
|
||||
// MSC-DAG: declare void @"\01?friend2@@YAXXZ"()
|
||||
// GNU-DAG: declare void @_Z7friend2v()
|
||||
// MSC-DAG: define dllexport void @"\01?friend3@@YAXXZ"()
|
||||
// GNU-DAG: define void @_Z7friend3v()
|
||||
// MSC-DAG: declare void @"\01?friend4@@YAXXZ"()
|
||||
// GNU-DAG: declare void @_Z7friend4v()
|
||||
// MSC-DAG: declare dllimport void @"\01?friend5@@YAXXZ"()
|
||||
// GNU-DAG: declare dllimport void @_Z7friend5v()
|
||||
// MSC-DAG: declare dllimport void @"\01?friend1@@YAXXZ"()
|
||||
// GNU-DAG: declare dllimport void @_Z7friend1v()
|
||||
// MSC-DAG: declare dso_local void @"\01?friend2@@YAXXZ"()
|
||||
// GNU-DAG: declare dso_local void @_Z7friend2v()
|
||||
// MSC-DAG: define dso_local dllexport void @"\01?friend3@@YAXXZ"()
|
||||
// GNU-DAG: define dso_local void @_Z7friend3v()
|
||||
// MSC-DAG: declare dso_local void @"\01?friend4@@YAXXZ"()
|
||||
// GNU-DAG: declare dso_local void @_Z7friend4v()
|
||||
// MSC-DAG: declare dllimport void @"\01?friend5@@YAXXZ"()
|
||||
// GNU-DAG: declare dllimport void @_Z7friend5v()
|
||||
|
||||
struct FuncFriend {
|
||||
friend __declspec(dllimport) void friend1();
|
||||
@ -399,31 +399,31 @@ USE(funcTmplDecl<ImplicitInst_Imported>)
|
||||
|
||||
// Import inline function template.
|
||||
// MSC-DAG: declare dllimport void @"\01??$inlineFuncTmpl1@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_Z15inlineFuncTmpl1I21ImplicitInst_ImportedEvv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_Z15inlineFuncTmpl1I21ImplicitInst_ImportedEvv()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01??$inlineFuncTmpl1@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GO1-DAG: define linkonce_odr void @_Z15inlineFuncTmpl1I21ImplicitInst_ImportedEvv()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_Z15inlineFuncTmpl1I21ImplicitInst_ImportedEvv()
|
||||
template<typename T> __declspec(dllimport) inline void inlineFuncTmpl1() {}
|
||||
USE(inlineFuncTmpl1<ImplicitInst_Imported>)
|
||||
|
||||
// MSC-DAG: declare dllimport void @"\01??$inlineFuncTmpl2@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_Z15inlineFuncTmpl2I21ImplicitInst_ImportedEvv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_Z15inlineFuncTmpl2I21ImplicitInst_ImportedEvv()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01??$inlineFuncTmpl2@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GO1-DAG: define linkonce_odr void @_Z15inlineFuncTmpl2I21ImplicitInst_ImportedEvv()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_Z15inlineFuncTmpl2I21ImplicitInst_ImportedEvv()
|
||||
template<typename T> inline void __attribute__((dllimport)) inlineFuncTmpl2() {}
|
||||
USE(inlineFuncTmpl2<ImplicitInst_Imported>)
|
||||
|
||||
// MSC-DAG: define linkonce_odr void @"\01??$inlineFuncTmplDecl@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_Z18inlineFuncTmplDeclI21ImplicitInst_ImportedEvv()
|
||||
// MO1-DAG: define linkonce_odr void @"\01??$inlineFuncTmplDecl@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GO1-DAG: define linkonce_odr void @_Z18inlineFuncTmplDeclI21ImplicitInst_ImportedEvv()
|
||||
// MSC-DAG: define linkonce_odr dso_local void @"\01??$inlineFuncTmplDecl@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_Z18inlineFuncTmplDeclI21ImplicitInst_ImportedEvv()
|
||||
// MO1-DAG: define linkonce_odr dso_local void @"\01??$inlineFuncTmplDecl@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_Z18inlineFuncTmplDeclI21ImplicitInst_ImportedEvv()
|
||||
template<typename T> __declspec(dllimport) inline void inlineFuncTmplDecl();
|
||||
template<typename T> void inlineFuncTmplDecl() {}
|
||||
USE(inlineFuncTmplDecl<ImplicitInst_Imported>)
|
||||
|
||||
// MSC-DAG: define linkonce_odr void @"\01??$inlineFuncTmplDef@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_Z17inlineFuncTmplDefI21ImplicitInst_ImportedEvv()
|
||||
// MO1-DAG: define linkonce_odr void @"\01??$inlineFuncTmplDef@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GO1-DAG: define linkonce_odr void @_Z17inlineFuncTmplDefI21ImplicitInst_ImportedEvv()
|
||||
// MSC-DAG: define linkonce_odr dso_local void @"\01??$inlineFuncTmplDef@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_Z17inlineFuncTmplDefI21ImplicitInst_ImportedEvv()
|
||||
// MO1-DAG: define linkonce_odr dso_local void @"\01??$inlineFuncTmplDef@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_Z17inlineFuncTmplDefI21ImplicitInst_ImportedEvv()
|
||||
template<typename T> __declspec(dllimport) void inlineFuncTmplDef();
|
||||
template<typename T> inline void inlineFuncTmplDef() {}
|
||||
USE(inlineFuncTmplDef<ImplicitInst_Imported>)
|
||||
@ -436,14 +436,14 @@ template<typename T> __declspec(dllimport) void funcTmplRedecl1();
|
||||
template<typename T> __declspec(dllimport) void funcTmplRedecl1();
|
||||
USE(funcTmplRedecl1<ImplicitInst_Imported>)
|
||||
|
||||
// MSC-DAG: declare void @"\01??$funcTmplRedecl2@UImplicitInst_NotImported@@@@YAXXZ"()
|
||||
// GNU-DAG: declare void @_Z15funcTmplRedecl2I24ImplicitInst_NotImportedEvv()
|
||||
// MSC-DAG: declare dso_local void @"\01??$funcTmplRedecl2@UImplicitInst_NotImported@@@@YAXXZ"()
|
||||
// GNU-DAG: declare dso_local void @_Z15funcTmplRedecl2I24ImplicitInst_NotImportedEvv()
|
||||
template<typename T> __declspec(dllimport) void funcTmplRedecl2();
|
||||
template<typename T> void funcTmplRedecl2(); // dllimport ignored
|
||||
USE(funcTmplRedecl2<ImplicitInst_NotImported>)
|
||||
|
||||
// MSC-DAG: define linkonce_odr void @"\01??$funcTmplRedecl3@UImplicitInst_NotImported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_Z15funcTmplRedecl3I24ImplicitInst_NotImportedEvv()
|
||||
// MSC-DAG: define linkonce_odr dso_local void @"\01??$funcTmplRedecl3@UImplicitInst_NotImported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_Z15funcTmplRedecl3I24ImplicitInst_NotImportedEvv()
|
||||
template<typename T> __declspec(dllimport) void funcTmplRedecl3();
|
||||
template<typename T> void funcTmplRedecl3() {} // dllimport ignored
|
||||
USE(funcTmplRedecl3<ImplicitInst_NotImported>)
|
||||
@ -452,12 +452,12 @@ USE(funcTmplRedecl3<ImplicitInst_NotImported>)
|
||||
// Function template friends
|
||||
// MSC-DAG: declare dllimport void @"\01??$funcTmplFriend1@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: declare dllimport void @_Z15funcTmplFriend1I21ImplicitInst_ImportedEvv()
|
||||
// MSC-DAG: declare void @"\01??$funcTmplFriend2@UImplicitInst_NotImported@@@@YAXXZ"()
|
||||
// GNU-DAG: declare void @_Z15funcTmplFriend2I24ImplicitInst_NotImportedEvv()
|
||||
// MSC-DAG: define linkonce_odr void @"\01??$funcTmplFriend3@UImplicitInst_NotImported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_Z15funcTmplFriend3I24ImplicitInst_NotImportedEvv()
|
||||
// MSC-DAG: define linkonce_odr void @"\01??$funcTmplFriend4@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_Z15funcTmplFriend4I21ImplicitInst_ImportedEvv()
|
||||
// MSC-DAG: declare dso_local void @"\01??$funcTmplFriend2@UImplicitInst_NotImported@@@@YAXXZ"()
|
||||
// GNU-DAG: declare dso_local void @_Z15funcTmplFriend2I24ImplicitInst_NotImportedEvv()
|
||||
// MSC-DAG: define linkonce_odr dso_local void @"\01??$funcTmplFriend3@UImplicitInst_NotImported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_Z15funcTmplFriend3I24ImplicitInst_NotImportedEvv()
|
||||
// MSC-DAG: define linkonce_odr dso_local void @"\01??$funcTmplFriend4@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_Z15funcTmplFriend4I21ImplicitInst_ImportedEvv()
|
||||
struct FuncTmplFriend {
|
||||
template<typename T> friend __declspec(dllimport) void funcTmplFriend1();
|
||||
template<typename T> friend __declspec(dllimport) void funcTmplFriend2();
|
||||
@ -490,24 +490,24 @@ template<typename T> __declspec(dllimport) inline void importedFuncTmpl() {}
|
||||
USE(importedFuncTmplDecl<ImplicitInst_Imported>)
|
||||
|
||||
// MSC-DAG: declare dllimport void @"\01??$importedFuncTmpl@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_Z16importedFuncTmplI21ImplicitInst_ImportedEvv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_Z16importedFuncTmplI21ImplicitInst_ImportedEvv()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01??$importedFuncTmpl@UImplicitInst_Imported@@@@YAXXZ"()
|
||||
// GO1-DAG: define linkonce_odr void @_Z16importedFuncTmplI21ImplicitInst_ImportedEvv()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_Z16importedFuncTmplI21ImplicitInst_ImportedEvv()
|
||||
USE(importedFuncTmpl<ImplicitInst_Imported>)
|
||||
|
||||
// Import explicit instantiation declaration of an imported function template.
|
||||
// MSC-DAG: declare dllimport void @"\01??$importedFuncTmpl@UExplicitDecl_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: declare void @_Z16importedFuncTmplI21ExplicitDecl_ImportedEvv()
|
||||
// GNU-DAG: declare dso_local void @_Z16importedFuncTmplI21ExplicitDecl_ImportedEvv()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01??$importedFuncTmpl@UExplicitDecl_Imported@@@@YAXXZ"()
|
||||
// GO1-DAG: define available_externally void @_Z16importedFuncTmplI21ExplicitDecl_ImportedEvv()
|
||||
// GO1-DAG: define available_externally dso_local void @_Z16importedFuncTmplI21ExplicitDecl_ImportedEvv()
|
||||
extern template void importedFuncTmpl<ExplicitDecl_Imported>();
|
||||
USE(importedFuncTmpl<ExplicitDecl_Imported>)
|
||||
|
||||
// Import explicit instantiation definition of an imported function template.
|
||||
// MSC-DAG: declare dllimport void @"\01??$importedFuncTmpl@UExplicitInst_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: define weak_odr void @_Z16importedFuncTmplI21ExplicitInst_ImportedEvv()
|
||||
// GNU-DAG: define weak_odr dso_local void @_Z16importedFuncTmplI21ExplicitInst_ImportedEvv()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01??$importedFuncTmpl@UExplicitInst_Imported@@@@YAXXZ"()
|
||||
// GO1-DAG: define weak_odr void @_Z16importedFuncTmplI21ExplicitInst_ImportedEvv()
|
||||
// GO1-DAG: define weak_odr dso_local void @_Z16importedFuncTmplI21ExplicitInst_ImportedEvv()
|
||||
template void importedFuncTmpl<ExplicitInst_Imported>();
|
||||
USE(importedFuncTmpl<ExplicitInst_Imported>)
|
||||
|
||||
@ -526,9 +526,9 @@ USE(importedFuncTmplDecl<ExplicitSpec_Imported>)
|
||||
#endif
|
||||
|
||||
// MSC-DAG: declare dllimport void @"\01??$importedFuncTmplDecl@UExplicitSpec_InlineDef_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_Z20importedFuncTmplDeclI31ExplicitSpec_InlineDef_ImportedEvv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_Z20importedFuncTmplDeclI31ExplicitSpec_InlineDef_ImportedEvv()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01??$importedFuncTmplDecl@UExplicitSpec_InlineDef_Imported@@@@YAXXZ"()
|
||||
// GO1-DAG: define linkonce_odr void @_Z20importedFuncTmplDeclI31ExplicitSpec_InlineDef_ImportedEvv()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_Z20importedFuncTmplDeclI31ExplicitSpec_InlineDef_ImportedEvv()
|
||||
template<> __declspec(dllimport) inline void importedFuncTmplDecl<ExplicitSpec_InlineDef_Imported>() {}
|
||||
USE(importedFuncTmplDecl<ExplicitSpec_InlineDef_Imported>)
|
||||
|
||||
@ -546,17 +546,17 @@ USE(importedFuncTmpl<ExplicitSpec_Imported>)
|
||||
#endif
|
||||
|
||||
// MSC-DAG: declare dllimport void @"\01??$importedFuncTmpl@UExplicitSpec_InlineDef_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_Z16importedFuncTmplI31ExplicitSpec_InlineDef_ImportedEvv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_Z16importedFuncTmplI31ExplicitSpec_InlineDef_ImportedEvv()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01??$importedFuncTmpl@UExplicitSpec_InlineDef_Imported@@@@YAXXZ"()
|
||||
// GO1-DAG: define linkonce_odr void @_Z16importedFuncTmplI31ExplicitSpec_InlineDef_ImportedEvv()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_Z16importedFuncTmplI31ExplicitSpec_InlineDef_ImportedEvv()
|
||||
template<> __declspec(dllimport) inline void importedFuncTmpl<ExplicitSpec_InlineDef_Imported>() {}
|
||||
USE(importedFuncTmpl<ExplicitSpec_InlineDef_Imported>)
|
||||
|
||||
|
||||
// Not importing specialization of an imported function template without
|
||||
// explicit dllimport.
|
||||
// MSC-DAG: define void @"\01??$importedFuncTmpl@UExplicitSpec_NotImported@@@@YAXXZ"()
|
||||
// GNU-DAG: define void @_Z16importedFuncTmplI24ExplicitSpec_NotImportedEvv()
|
||||
// MSC-DAG: define dso_local void @"\01??$importedFuncTmpl@UExplicitSpec_NotImported@@@@YAXXZ"()
|
||||
// GNU-DAG: define dso_local void @_Z16importedFuncTmplI24ExplicitSpec_NotImportedEvv()
|
||||
template<> void importedFuncTmpl<ExplicitSpec_NotImported>() {}
|
||||
USE(importedFuncTmpl<ExplicitSpec_NotImported>)
|
||||
|
||||
@ -565,9 +565,9 @@ USE(importedFuncTmpl<ExplicitSpec_NotImported>)
|
||||
// MSC-DAG: declare dllimport void @"\01??$funcTmpl@UExplicitDecl_Imported@@@@YAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01??$inlineFuncTmpl@UExplicitDecl_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: declare dllimport void @_Z8funcTmplI21ExplicitDecl_ImportedEvv()
|
||||
// GNU-DAG: declare void @_Z14inlineFuncTmplI21ExplicitDecl_ImportedEvv()
|
||||
// GNU-DAG: declare dso_local void @_Z14inlineFuncTmplI21ExplicitDecl_ImportedEvv()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01??$inlineFuncTmpl@UExplicitDecl_Imported@@@@YAXXZ"()
|
||||
// GO1-DAG: define available_externally void @_Z14inlineFuncTmplI21ExplicitDecl_ImportedEvv()
|
||||
// GO1-DAG: define available_externally dso_local void @_Z14inlineFuncTmplI21ExplicitDecl_ImportedEvv()
|
||||
extern template __declspec(dllimport) void funcTmpl<ExplicitDecl_Imported>();
|
||||
extern template __declspec(dllimport) void inlineFuncTmpl<ExplicitDecl_Imported>();
|
||||
USE(funcTmpl<ExplicitDecl_Imported>)
|
||||
@ -578,11 +578,11 @@ USE(inlineFuncTmpl<ExplicitDecl_Imported>)
|
||||
// MSC-DAG: declare dllimport void @"\01??$funcTmpl@UExplicitInst_Imported@@@@YAXXZ"()
|
||||
// MSC-DAG: declare dllimport void @"\01??$inlineFuncTmpl@UExplicitInst_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: declare dllimport void @_Z8funcTmplI21ExplicitInst_ImportedEvv()
|
||||
// GNU-DAG: define weak_odr void @_Z14inlineFuncTmplI21ExplicitInst_ImportedEvv()
|
||||
// GNU-DAG: define weak_odr dso_local void @_Z14inlineFuncTmplI21ExplicitInst_ImportedEvv()
|
||||
// MO1-DAG: declare dllimport void @"\01??$funcTmpl@UExplicitInst_Imported@@@@YAXXZ"()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01??$inlineFuncTmpl@UExplicitInst_Imported@@@@YAXXZ"()
|
||||
// GO1-DAG: define available_externally dllimport void @_Z8funcTmplI21ExplicitInst_ImportedEvv()
|
||||
// GO1-DAG: define weak_odr void @_Z14inlineFuncTmplI21ExplicitInst_ImportedEvv()
|
||||
// GO1-DAG: define weak_odr dso_local void @_Z14inlineFuncTmplI21ExplicitInst_ImportedEvv()
|
||||
template __declspec(dllimport) void funcTmpl<ExplicitInst_Imported>();
|
||||
template __declspec(dllimport) void inlineFuncTmpl<ExplicitInst_Imported>();
|
||||
USE(funcTmpl<ExplicitInst_Imported>)
|
||||
@ -603,9 +603,9 @@ USE(funcTmpl<ExplicitSpec_Imported>)
|
||||
#endif
|
||||
|
||||
// MSC-DAG: declare dllimport void @"\01??$funcTmpl@UExplicitSpec_InlineDef_Imported@@@@YAXXZ"()
|
||||
// GNU-DAG: define linkonce_odr void @_Z8funcTmplI31ExplicitSpec_InlineDef_ImportedEvv()
|
||||
// GNU-DAG: define linkonce_odr dso_local void @_Z8funcTmplI31ExplicitSpec_InlineDef_ImportedEvv()
|
||||
// MO1-DAG: define available_externally dllimport void @"\01??$funcTmpl@UExplicitSpec_InlineDef_Imported@@@@YAXXZ"()
|
||||
// GO1-DAG: define linkonce_odr void @_Z8funcTmplI31ExplicitSpec_InlineDef_ImportedEvv()
|
||||
// GO1-DAG: define linkonce_odr dso_local void @_Z8funcTmplI31ExplicitSpec_InlineDef_ImportedEvv()
|
||||
template<> __declspec(dllimport) inline void funcTmpl<ExplicitSpec_InlineDef_Imported>() {}
|
||||
USE(funcTmpl<ExplicitSpec_InlineDef_Imported>)
|
||||
|
||||
@ -640,7 +640,7 @@ struct __declspec(dllimport) T {
|
||||
|
||||
T& operator=(T&&) = default;
|
||||
// Note: Don't mark inline move operators dllimport because current MSVC versions don't export them.
|
||||
// M18-DAG: define linkonce_odr x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.T* @"\01??4T@@QAEAAU0@$$QAU0@@Z"
|
||||
// M18-DAG: define linkonce_odr dso_local x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.T* @"\01??4T@@QAEAAU0@$$QAU0@@Z"
|
||||
// M19-DAG: define available_externally dllimport x86_thiscallcc dereferenceable({{[0-9]+}}) %struct.T* @"\01??4T@@QAEAAU0@$$QAU0@@Z"
|
||||
};
|
||||
USEMEMFUNC(T, a)
|
||||
@ -693,7 +693,7 @@ namespace DontUseDtorAlias {
|
||||
|
||||
namespace Vtordisp {
|
||||
// Don't dllimport the vtordisp.
|
||||
// MO1-DAG: define linkonce_odr x86_thiscallcc void @"\01?f@?$C@H@Vtordisp@@$4PPPPPPPM@A@AEXXZ"
|
||||
// MO1-DAG: define linkonce_odr dso_local x86_thiscallcc void @"\01?f@?$C@H@Vtordisp@@$4PPPPPPPM@A@AEXXZ"
|
||||
|
||||
class __declspec(dllimport) Base {
|
||||
virtual void f() {}
|
||||
@ -800,7 +800,7 @@ namespace PR27319 {
|
||||
template <typename T> struct PartiallySpecializedClassTemplate {};
|
||||
template <typename T> struct __declspec(dllimport) PartiallySpecializedClassTemplate<T*> { void f(); };
|
||||
USEMEMFUNC(PartiallySpecializedClassTemplate<void*>, f);
|
||||
// M32-DAG: declare x86_thiscallcc void @"\01?f@?$PartiallySpecializedClassTemplate@PAX@@QAEXXZ"
|
||||
// M32-DAG: declare dso_local x86_thiscallcc void @"\01?f@?$PartiallySpecializedClassTemplate@PAX@@QAEXXZ"
|
||||
// G32-DAG: declare dllimport x86_thiscallcc void @_ZN33PartiallySpecializedClassTemplateIPvE1fEv
|
||||
|
||||
// Attributes on explicit specializations are honored.
|
||||
@ -815,7 +815,7 @@ template <typename T> struct __declspec(dllimport) PartiallySpecializedImportedC
|
||||
template <typename T> struct PartiallySpecializedImportedClassTemplate<T*> { void f() {} };
|
||||
USEMEMFUNC(PartiallySpecializedImportedClassTemplate<void*>, f);
|
||||
// M32-DAG: {{declare|define available_externally}} dllimport x86_thiscallcc void @"\01?f@?$PartiallySpecializedImportedClassTemplate@PAX@@QAEXXZ"
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN41PartiallySpecializedImportedClassTemplateIPvE1fEv
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN41PartiallySpecializedImportedClassTemplateIPvE1fEv
|
||||
|
||||
// Attributes on the instantiation take precedence over attributes on the template.
|
||||
template <typename T> struct __declspec(dllexport) ExplicitlyInstantiatedWithDifferentAttr { void f() {} };
|
||||
@ -830,7 +830,7 @@ USECLASS(ExplicitInstantiationDeclImportedDefTemplate<int>);
|
||||
USEMEMFUNC(ExplicitInstantiationDeclImportedDefTemplate<int>, f);
|
||||
// M32-DAG: {{declare|define available_externally}} dllimport x86_thiscallcc void @"\01?f@?$ExplicitInstantiationDeclImportedDefTemplate@H@@QAEXXZ"
|
||||
// M32-DAG: {{declare|define available_externally}} dllimport x86_thiscallcc %struct.ExplicitInstantiationDeclImportedDefTemplate* @"\01??0?$ExplicitInstantiationDeclImportedDefTemplate@H@@QAE@XZ"
|
||||
// G32-DAG: define weak_odr x86_thiscallcc void @_ZN44ExplicitInstantiationDeclImportedDefTemplateIiE1fEv
|
||||
// G32-DAG: define weak_odr dso_local x86_thiscallcc void @_ZN44ExplicitInstantiationDeclImportedDefTemplateIiE1fEv
|
||||
|
||||
template <typename T> struct __declspec(dllimport) ExplicitInstantiationDeclExportedDefImportedTemplate { void f() {} ExplicitInstantiationDeclExportedDefImportedTemplate() {} };
|
||||
extern template struct __declspec(dllimport) ExplicitInstantiationDeclExportedDefImportedTemplate <int>;
|
||||
@ -861,7 +861,7 @@ namespace PR27810 {
|
||||
// functions are emitted unless they are used.
|
||||
|
||||
USEMEMFUNC(basic_ostream<char>::sentry, foo);
|
||||
// M32-DAG: define linkonce_odr x86_thiscallcc void @"\01?foo@sentry@?$basic_ostream@D@PR27810@@QAEXXZ"
|
||||
// M32-DAG: define linkonce_odr dso_local x86_thiscallcc void @"\01?foo@sentry@?$basic_ostream@D@PR27810@@QAEXXZ"
|
||||
// M32-NOT: ??0sentry@?$basic_ostream@D@PR27810@@QAE@XZ
|
||||
}
|
||||
|
||||
@ -907,7 +907,7 @@ template struct __declspec(dllimport) ExplicitlyImportInstantiatedTemplate<int>;
|
||||
struct __declspec(dllimport) DerivedFromTemplate : public ClassTemplate<int> {};
|
||||
USEMEMFUNC(ClassTemplate<int>, func)
|
||||
// M32-DAG: {{declare|define available_externally}} dllimport x86_thiscallcc void @"\01?func@?$ClassTemplate@H@@QAEXXZ"
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ClassTemplateIiE4funcEv
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ClassTemplateIiE4funcEv
|
||||
|
||||
// ImportedTemplate is explicitly imported.
|
||||
struct __declspec(dllimport) DerivedFromImportedTemplate : public ImportedClassTemplate<int> {};
|
||||
@ -918,34 +918,34 @@ USEMEMFUNC(ImportedClassTemplate<int>, func)
|
||||
// ExportedTemplate is explicitly exported.
|
||||
struct __declspec(dllimport) DerivedFromExportedTemplate : public ExportedClassTemplate<int> {};
|
||||
USEMEMFUNC(ExportedClassTemplate<int>, func)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?func@?$ExportedClassTemplate@H@@QAEXXZ"
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN21ExportedClassTemplateIiE4funcEv
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01?func@?$ExportedClassTemplate@H@@QAEXXZ"
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN21ExportedClassTemplateIiE4funcEv
|
||||
|
||||
// Base class already implicitly instantiated without attribute.
|
||||
struct DerivedFromTemplateD : public ClassTemplate<double> {};
|
||||
struct __declspec(dllimport) DerivedFromTemplateD2 : public ClassTemplate<double> {};
|
||||
USEMEMFUNC(ClassTemplate<double>, func)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?func@?$ClassTemplate@N@@QAEXXZ"
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ClassTemplateIdE4funcEv
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ClassTemplateIdE4funcEv
|
||||
|
||||
// MS: Base class already instantiated with dfferent attribute.
|
||||
struct __declspec(dllexport) DerivedFromTemplateB : public ClassTemplate<bool> {};
|
||||
struct __declspec(dllimport) DerivedFromTemplateB2 : public ClassTemplate<bool> {};
|
||||
USEMEMFUNC(ClassTemplate<bool>, func)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?func@?$ClassTemplate@_N@@QAEXXZ"
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN13ClassTemplateIbE4funcEv
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01?func@?$ClassTemplate@_N@@QAEXXZ"
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN13ClassTemplateIbE4funcEv
|
||||
|
||||
// Base class already specialized without dll attribute.
|
||||
struct __declspec(dllimport) DerivedFromExplicitlySpecializedTemplate : public ExplicitlySpecializedTemplate<int> {};
|
||||
USEMEMFUNC(ExplicitlySpecializedTemplate<int>, func)
|
||||
// M32-DAG: define linkonce_odr x86_thiscallcc void @"\01?func@?$ExplicitlySpecializedTemplate@H@@QAEXXZ"
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN29ExplicitlySpecializedTemplateIiE4funcEv
|
||||
// M32-DAG: define linkonce_odr dso_local x86_thiscallcc void @"\01?func@?$ExplicitlySpecializedTemplate@H@@QAEXXZ"
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN29ExplicitlySpecializedTemplateIiE4funcEv
|
||||
|
||||
// Base class alredy specialized with export attribute.
|
||||
struct __declspec(dllimport) DerivedFromExplicitlyExportSpecializedTemplate : public ExplicitlyExportSpecializedTemplate<int> {};
|
||||
USEMEMFUNC(ExplicitlyExportSpecializedTemplate<int>, func)
|
||||
// M32-DAG: define dllexport x86_thiscallcc void @"\01?func@?$ExplicitlyExportSpecializedTemplate@H@@QAEXXZ"
|
||||
// G32-DAG: define dllexport x86_thiscallcc void @_ZN35ExplicitlyExportSpecializedTemplateIiE4funcEv
|
||||
// M32-DAG: define dso_local dllexport x86_thiscallcc void @"\01?func@?$ExplicitlyExportSpecializedTemplate@H@@QAEXXZ"
|
||||
// G32-DAG: define dso_local dllexport x86_thiscallcc void @_ZN35ExplicitlyExportSpecializedTemplateIiE4funcEv
|
||||
|
||||
// Base class already specialized with import attribute.
|
||||
struct __declspec(dllimport) DerivedFromExplicitlyImportSpecializedTemplate : public ExplicitlyImportSpecializedTemplate<int> {};
|
||||
@ -956,14 +956,14 @@ USEMEMFUNC(ExplicitlyImportSpecializedTemplate<int>, func)
|
||||
// Base class already instantiated without dll attribute.
|
||||
struct __declspec(dllimport) DerivedFromExplicitlyInstantiatedTemplate : public ExplicitlyInstantiatedTemplate<int> {};
|
||||
USEMEMFUNC(ExplicitlyInstantiatedTemplate<int>, func)
|
||||
// M32-DAG: define weak_odr x86_thiscallcc void @"\01?func@?$ExplicitlyInstantiatedTemplate@H@@QAEXXZ"
|
||||
// G32-DAG: define weak_odr x86_thiscallcc void @_ZN30ExplicitlyInstantiatedTemplateIiE4funcEv
|
||||
// M32-DAG: define weak_odr dso_local x86_thiscallcc void @"\01?func@?$ExplicitlyInstantiatedTemplate@H@@QAEXXZ"
|
||||
// G32-DAG: define weak_odr dso_local x86_thiscallcc void @_ZN30ExplicitlyInstantiatedTemplateIiE4funcEv
|
||||
|
||||
// Base class already instantiated with export attribute.
|
||||
struct __declspec(dllimport) DerivedFromExplicitlyExportInstantiatedTemplate : public ExplicitlyExportInstantiatedTemplate<int> {};
|
||||
USEMEMFUNC(ExplicitlyExportInstantiatedTemplate<int>, func)
|
||||
// M32-DAG: define weak_odr dllexport x86_thiscallcc void @"\01?func@?$ExplicitlyExportInstantiatedTemplate@H@@QAEXXZ"
|
||||
// G32-DAG: define weak_odr dllexport x86_thiscallcc void @_ZN36ExplicitlyExportInstantiatedTemplateIiE4funcEv
|
||||
// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"\01?func@?$ExplicitlyExportInstantiatedTemplate@H@@QAEXXZ"
|
||||
// G32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @_ZN36ExplicitlyExportInstantiatedTemplateIiE4funcEv
|
||||
|
||||
// Base class already instantiated with import attribute.
|
||||
struct __declspec(dllimport) DerivedFromExplicitlyImportInstantiatedTemplate : public ExplicitlyImportInstantiatedTemplate<int> {};
|
||||
@ -977,7 +977,7 @@ template <typename T> struct MiddleClass : public TopClass<T> { };
|
||||
struct __declspec(dllimport) BottomClass : public MiddleClass<int> { };
|
||||
USEMEMFUNC(TopClass<int>, func)
|
||||
// M32-DAG: {{declare|define available_externally}} dllimport x86_thiscallcc void @"\01?func@?$TopClass@H@@QAEXXZ"
|
||||
// G32-DAG: define linkonce_odr x86_thiscallcc void @_ZN8TopClassIiE4funcEv
|
||||
// G32-DAG: define linkonce_odr dso_local x86_thiscallcc void @_ZN8TopClassIiE4funcEv
|
||||
|
||||
template <typename T> struct ExplicitInstantiationDeclTemplateBase { void func() {} };
|
||||
extern template struct ExplicitInstantiationDeclTemplateBase<int>;
|
||||
@ -985,7 +985,7 @@ struct __declspec(dllimport) DerivedFromExplicitInstantiationDeclTemplateBase :
|
||||
template struct ExplicitInstantiationDeclTemplateBase<int>;
|
||||
USEMEMFUNC(ExplicitInstantiationDeclTemplateBase<int>, func)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?func@?$ExplicitInstantiationDeclTemplateBase@H@@QAEXXZ"
|
||||
// G32-DAG: define weak_odr x86_thiscallcc void @_ZN37ExplicitInstantiationDeclTemplateBaseIiE4funcEv
|
||||
// G32-DAG: define weak_odr dso_local x86_thiscallcc void @_ZN37ExplicitInstantiationDeclTemplateBaseIiE4funcEv
|
||||
|
||||
template <typename T> struct ExplicitInstantiationDeclTemplateBase2 { void func() {} };
|
||||
extern template struct ExplicitInstantiationDeclTemplateBase2<int>;
|
||||
@ -993,4 +993,4 @@ struct __declspec(dllimport) DerivedFromExplicitInstantiationDeclTemplateBase2 :
|
||||
template struct __declspec(dllexport) ExplicitInstantiationDeclTemplateBase2<int>;
|
||||
USEMEMFUNC(ExplicitInstantiationDeclTemplateBase2<int>, func)
|
||||
// M32-DAG: declare dllimport x86_thiscallcc void @"\01?func@?$ExplicitInstantiationDeclTemplateBase2@H@@QAEXXZ"
|
||||
// G32-DAG: define weak_odr x86_thiscallcc void @_ZN38ExplicitInstantiationDeclTemplateBase2IiE4funcEv
|
||||
// G32-DAG: define weak_odr dso_local x86_thiscallcc void @_ZN38ExplicitInstantiationDeclTemplateBase2IiE4funcEv
|
||||
|
||||
@ -34,7 +34,7 @@ extern "C" {
|
||||
namespace nm {
|
||||
float abc = 2;
|
||||
}
|
||||
// CHECK: @_ZN2nm3abcE = global float
|
||||
// CHECK: @_ZN2nm3abcE = {{(dso_local )?}}global float
|
||||
|
||||
float foo() {
|
||||
_ZN1TD1Ev();
|
||||
|
||||
@ -11,7 +11,7 @@ void caller() {
|
||||
may_throw();
|
||||
}
|
||||
}
|
||||
// CHECK-LABEL: define void @"\01?caller@test1@@YAXXZ"(
|
||||
// CHECK-LABEL: define dso_local void @"\01?caller@test1@@YAXXZ"(
|
||||
// CHECK: call void @never_throws(
|
||||
// CHECK: invoke void @"\01?may_throw@test1@@YAXXZ"(
|
||||
|
||||
@ -26,6 +26,6 @@ void caller() {
|
||||
may_throw();
|
||||
}
|
||||
}
|
||||
// CHECK-LABEL: define void @"\01?caller@test2@@YAXXZ"(
|
||||
// CHECK-LABEL: define dso_local void @"\01?caller@test2@@YAXXZ"(
|
||||
// CHECK: invoke void @throws_int(
|
||||
// CHECK: invoke void @"\01?may_throw@test2@@YAXXZ"(
|
||||
|
||||
@ -12,7 +12,7 @@ void test_catch() {
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define void @"\01?test_catch@@YAXXZ"(
|
||||
// CHECK-LABEL: define dso_local void @"\01?test_catch@@YAXXZ"(
|
||||
// CHECK: invoke i32 @"\01?f@@YAHH@Z"(i32 1)
|
||||
// CHECK: to label %[[NORMAL:.*]] unwind label %[[CATCHSWITCH:.*]]
|
||||
|
||||
@ -50,7 +50,7 @@ void test_cleanup() {
|
||||
f(1);
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define {{.*}} @"\01?test_cleanup@@YAXXZ"(
|
||||
// CHECK-LABEL: define dso_local {{.*}} @"\01?test_cleanup@@YAXXZ"(
|
||||
// CHECK: invoke i32 @"\01?f@@YAHH@Z"(i32 1)
|
||||
// CHECK: to label %[[LEAVE_FUNC:.*]] unwind label %[[CLEANUP:.*]]
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@ extern "C" void test_freefunc(int p1) {
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define void @test_freefunc(i32 %p1)
|
||||
// CHECK-LABEL: define dso_local void @test_freefunc(i32 %p1)
|
||||
// CHECK: @llvm.localescape(i32* %[[p1_ptr:[^, ]*]], i32* %[[l1_ptr:[^, ]*]])
|
||||
// CHECK: store i32 %p1, i32* %[[p1_ptr]], align 4
|
||||
// CHECK: store i32 13, i32* %[[l1_ptr]], align 4
|
||||
@ -45,7 +45,7 @@ void S::test_method() {
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define void @"\01?test_method@S@@QEAAXXZ"(%struct.S* %this)
|
||||
// CHECK-LABEL: define dso_local void @"\01?test_method@S@@QEAAXXZ"(%struct.S* %this)
|
||||
// CHECK: @llvm.localescape(i32* %[[l1_addr:[^, ]*]])
|
||||
// CHECK: store i32 13, i32* %[[l1_addr]], align 4
|
||||
// CHECK: invoke void @might_crash()
|
||||
|
||||
@ -21,7 +21,7 @@ extern "C" void use_cxx() {
|
||||
|
||||
// Make sure we use __CxxFrameHandler3 for C++ EH.
|
||||
|
||||
// CXXEH-LABEL: define void @use_cxx()
|
||||
// CXXEH-LABEL: define dso_local void @use_cxx()
|
||||
// CXXEH-SAME: personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*)
|
||||
// CXXEH: call %struct.HasCleanup* @"\01??0HasCleanup@@QEAA@XZ"(%struct.HasCleanup* %{{.*}})
|
||||
// CXXEH: invoke void @might_throw()
|
||||
@ -36,7 +36,7 @@ extern "C" void use_cxx() {
|
||||
// CXXEH: call void @"\01??1HasCleanup@@QEAA@XZ"(%struct.HasCleanup* %{{.*}})
|
||||
// CXXEH: cleanupret
|
||||
|
||||
// NOCXX-LABEL: define void @use_cxx()
|
||||
// NOCXX-LABEL: define dso_local void @use_cxx()
|
||||
// NOCXX-NOT: invoke
|
||||
// NOCXX: call %struct.HasCleanup* @"\01??0HasCleanup@@QEAA@XZ"(%struct.HasCleanup* %{{.*}})
|
||||
// NOCXX-NOT: invoke
|
||||
@ -55,7 +55,7 @@ extern "C" void use_seh() {
|
||||
|
||||
// Make sure we use __C_specific_handler for SEH.
|
||||
|
||||
// CHECK-LABEL: define void @use_seh()
|
||||
// CHECK-LABEL: define dso_local void @use_seh()
|
||||
// CHECK-SAME: personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*)
|
||||
// CHECK: invoke void @might_throw() #[[NOINLINE:[0-9]+]]
|
||||
// CHECK: to label %[[cont:[^ ]*]] unwind label %[[lpad:[^ ]*]]
|
||||
@ -87,7 +87,7 @@ extern "C" void nested_finally() {
|
||||
}
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define void @nested_finally() #{{[0-9]+}}
|
||||
// CHECK-LABEL: define dso_local void @nested_finally() #{{[0-9]+}}
|
||||
// CHECK-SAME: personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*)
|
||||
// CHECK: invoke void @might_throw()
|
||||
// CHECK: call void @"\01?fin$0@0@nested_finally@@"(i8 1, i8* {{.*}})
|
||||
@ -108,11 +108,11 @@ void use_seh_in_lambda() {
|
||||
might_throw();
|
||||
}
|
||||
|
||||
// CXXEH-LABEL: define void @"\01?use_seh_in_lambda@@YAXXZ"()
|
||||
// CXXEH-LABEL: define dso_local void @"\01?use_seh_in_lambda@@YAXXZ"()
|
||||
// CXXEH-SAME: personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*)
|
||||
// CXXEH: cleanuppad
|
||||
|
||||
// NOCXX-LABEL: define void @"\01?use_seh_in_lambda@@YAXXZ"()
|
||||
// NOCXX-LABEL: define dso_local void @"\01?use_seh_in_lambda@@YAXXZ"()
|
||||
// NOCXX-NOT: invoke
|
||||
// NOCXX: ret void
|
||||
|
||||
@ -139,7 +139,7 @@ void use_inline() {
|
||||
use_seh_in_inline_func();
|
||||
}
|
||||
|
||||
// CHECK-LABEL: define linkonce_odr void @use_seh_in_inline_func() #{{[0-9]+}}
|
||||
// CHECK-LABEL: define linkonce_odr dso_local void @use_seh_in_inline_func() #{{[0-9]+}}
|
||||
// CHECK-SAME: personality i8* bitcast (i32 (...)* @__C_specific_handler to i8*)
|
||||
// CHECK: invoke void @might_throw()
|
||||
//
|
||||
|
||||
@ -119,14 +119,14 @@ namespace NestedClasses {
|
||||
// definition of Inner.
|
||||
template struct Outer<int>;
|
||||
// CHECK: define weak_odr void @_ZN13NestedClasses5OuterIiE5Inner1fEv
|
||||
// CHECK-MS: define weak_odr x86_thiscallcc void @"\01?f@Inner@?$Outer@H@NestedClasses@@QAEXXZ"
|
||||
// CHECK-MS: define weak_odr dso_local x86_thiscallcc void @"\01?f@Inner@?$Outer@H@NestedClasses@@QAEXXZ"
|
||||
|
||||
// Explicit instantiation declaration of Outer causes explicit instantiation
|
||||
// declaration of Inner, but not in MSVC mode.
|
||||
extern template struct Outer<char>;
|
||||
auto use = &Outer<char>::Inner::f;
|
||||
// CHECK: {{declare|define available_externally}} void @_ZN13NestedClasses5OuterIcE5Inner1fEv
|
||||
// CHECK-MS: define linkonce_odr x86_thiscallcc void @"\01?f@Inner@?$Outer@D@NestedClasses@@QAEXXZ"
|
||||
// CHECK-MS: define linkonce_odr dso_local x86_thiscallcc void @"\01?f@Inner@?$Outer@D@NestedClasses@@QAEXXZ"
|
||||
}
|
||||
|
||||
// Check that we emit definitions from explicit instantiations even when they
|
||||
|
||||
@ -7,7 +7,7 @@ extern "C" int a;
|
||||
// CHECK-NOT: @_ZN3foo1bE = global
|
||||
extern int b;
|
||||
|
||||
// CHECK: @_ZN3foo1cE = global
|
||||
// CHECK: @_ZN3foo1cE = {{(dso_local )?}}global
|
||||
int c = 5;
|
||||
|
||||
// CHECK-NOT: @_ZN3foo1dE
|
||||
@ -16,21 +16,21 @@ extern "C" struct d;
|
||||
// CHECK-NOT: should_not_appear
|
||||
extern "C++" int should_not_appear;
|
||||
|
||||
// CHECK: @_ZN3foo10extern_cxxE = global
|
||||
// CHECK: @_ZN3foo10extern_cxxE = {{(dso_local )?}}global
|
||||
extern "C++" int extern_cxx = 0;
|
||||
|
||||
}
|
||||
|
||||
// CHECK-NOT: @global_a = global
|
||||
// CHECK-NOT: @global_a = {{(dso_local )?}}global
|
||||
extern "C" int global_a;
|
||||
|
||||
// CHECK: @global_b = global
|
||||
// CHECK: @global_b = {{(dso_local )?}}global
|
||||
extern "C" int global_b = 0;
|
||||
|
||||
// CHECK-NOT: should_not_appear
|
||||
extern "C++" int should_not_appear;
|
||||
|
||||
// CHECK: @extern_cxx = global
|
||||
// CHECK: @extern_cxx = {{(dso_local )?}}global
|
||||
extern "C++" int extern_cxx = 0;
|
||||
|
||||
namespace test1 {
|
||||
@ -38,11 +38,11 @@ namespace test1 {
|
||||
struct X {};
|
||||
}
|
||||
extern "C" {
|
||||
// CHECK: @test1_b = global
|
||||
// CHECK: @test1_b = {{(dso_local )?}}global
|
||||
X test1_b = X();
|
||||
}
|
||||
void *use = &test1_b;
|
||||
// CHECK: @_ZN5test13useE = global
|
||||
// CHECK: @_ZN5test13useE = {{(dso_local )?}}global
|
||||
}
|
||||
|
||||
namespace test2 {
|
||||
@ -50,7 +50,7 @@ namespace test2 {
|
||||
struct X {};
|
||||
}
|
||||
|
||||
// CHECK: @test2_b = global
|
||||
// CHECK: @test2_b = {{(dso_local )?}}global
|
||||
extern "C" X test2_b;
|
||||
X test2_b;
|
||||
}
|
||||
|
||||
@ -15,7 +15,7 @@ struct X {
|
||||
|
||||
int add(int x, int y) { return x + y; }
|
||||
|
||||
// CHECK: @x2 = constant
|
||||
// CHECK: @x2 = {{(dso_local )?}}constant
|
||||
extern const X x2;
|
||||
const X x2 = { &add };
|
||||
|
||||
@ -27,6 +27,6 @@ struct X2 {
|
||||
X1 array[3];
|
||||
};
|
||||
|
||||
// CHECK: @x2b = global
|
||||
// CHECK: @x2b = {{(dso_local )?}}global
|
||||
extern const X2 x2b;
|
||||
const X2 x2b = { { { 1 }, { 2 }, { 3 } } };
|
||||
|
||||
@ -41,13 +41,13 @@ struct D5 : I1, I2, I3 {}; // homogeneous aggregate
|
||||
// PPC: define void @_Z7func_D12D1(%struct.D1* noalias sret %agg.result, [3 x i64] %x.coerce)
|
||||
// ARM32: define arm_aapcs_vfpcc void @_Z7func_D12D1(%struct.D1* noalias sret %agg.result, [3 x i64] %x.coerce)
|
||||
// ARM64: define void @_Z7func_D12D1(%struct.D1* noalias sret %agg.result, %struct.D1* %x)
|
||||
// X64: define x86_vectorcallcc void @"\01_Z7func_D12D1@@24"(%struct.D1* noalias sret %agg.result, %struct.D1* %x)
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01_Z7func_D12D1@@24"(%struct.D1* noalias sret %agg.result, %struct.D1* %x)
|
||||
D1 CC func_D1(D1 x) { return x; }
|
||||
|
||||
// PPC: define [3 x double] @_Z7func_D22D2([3 x double] %x.coerce)
|
||||
// ARM32: define arm_aapcs_vfpcc %struct.D2 @_Z7func_D22D2(%struct.D2 %x.coerce)
|
||||
// ARM64: define %struct.D2 @_Z7func_D22D2([3 x double] %x.coerce)
|
||||
// X64: define x86_vectorcallcc %struct.D2 @"\01_Z7func_D22D2@@24"(%struct.D2 inreg %x.coerce)
|
||||
// X64: define dso_local x86_vectorcallcc %struct.D2 @"\01_Z7func_D22D2@@24"(%struct.D2 inreg %x.coerce)
|
||||
D2 CC func_D2(D2 x) { return x; }
|
||||
|
||||
// PPC: define void @_Z7func_D32D3(%struct.D3* noalias sret %agg.result, [4 x i64] %x.coerce)
|
||||
@ -92,7 +92,7 @@ struct HVAWithEmptyBase : Float1, Empty, Float2 { float z; };
|
||||
void CC with_empty_base(HVAWithEmptyBase a) {}
|
||||
|
||||
// FIXME: MSVC doesn't consider this an HVA because of the empty base.
|
||||
// X64: define x86_vectorcallcc void @"\01_Z15with_empty_base16HVAWithEmptyBase@@16"(%struct.HVAWithEmptyBase inreg %a.coerce)
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01_Z15with_empty_base16HVAWithEmptyBase@@16"(%struct.HVAWithEmptyBase inreg %a.coerce)
|
||||
|
||||
struct HVAWithEmptyBitField : Float1, Float2 {
|
||||
int : 0; // Takes no space.
|
||||
@ -102,5 +102,5 @@ struct HVAWithEmptyBitField : Float1, Float2 {
|
||||
// PPC: define void @_Z19with_empty_bitfield20HVAWithEmptyBitField([3 x float] %a.coerce)
|
||||
// ARM64: define void @_Z19with_empty_bitfield20HVAWithEmptyBitField([3 x float] %a.coerce)
|
||||
// ARM32: define arm_aapcs_vfpcc void @_Z19with_empty_bitfield20HVAWithEmptyBitField(%struct.HVAWithEmptyBitField %a.coerce)
|
||||
// X64: define x86_vectorcallcc void @"\01_Z19with_empty_bitfield20HVAWithEmptyBitField@@16"(%struct.HVAWithEmptyBitField inreg %a.coerce)
|
||||
// X64: define dso_local x86_vectorcallcc void @"\01_Z19with_empty_bitfield20HVAWithEmptyBitField@@16"(%struct.HVAWithEmptyBitField inreg %a.coerce)
|
||||
void CC with_empty_bitfield(HVAWithEmptyBitField a) {}
|
||||
|
||||
@ -15,7 +15,7 @@ void foo() {
|
||||
A a{f(), g()};
|
||||
}
|
||||
// CHECK-ITANIUM-LABEL: define void @_Z3foov
|
||||
// CHECK-MS-LABEL: define void @"\01?foo@@YAXXZ"
|
||||
// CHECK-MS-LABEL: define dso_local void @"\01?foo@@YAXXZ"
|
||||
// CHECK: call i32 @f()
|
||||
// CHECK: call i32 @g()
|
||||
|
||||
@ -24,6 +24,6 @@ struct B : A {
|
||||
};
|
||||
B::B() : A{f(), g()} {}
|
||||
// CHECK-ITANIUM-LABEL: define void @_ZN1BC2Ev
|
||||
// CHECK-MS-LABEL: define x86_thiscallcc %struct.B* @"\01??0B@@QAE@XZ"
|
||||
// CHECK-MS-LABEL: define dso_local x86_thiscallcc %struct.B* @"\01??0B@@QAE@XZ"
|
||||
// CHECK: call i32 @f()
|
||||
// CHECK: call i32 @g()
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
// RUN: %clang_cc1 -triple i686-windows-win32 -fms-extensions -debug-info-kind=limited -emit-llvm %s -o - \
|
||||
// RUN: | FileCheck %s
|
||||
|
||||
// CHECK: @"\01?ui@s@@2IB" = weak_odr dllexport constant i32 0, comdat, align 4, !dbg [[UI:![0-9]+]]
|
||||
// CHECK: @"\01?ui@s@@2IB" = weak_odr dso_local dllexport constant i32 0, comdat, align 4, !dbg [[UI:![0-9]+]]
|
||||
|
||||
struct __declspec(dllexport) s {
|
||||
static const unsigned int ui = 0;
|
||||
|
||||
@ -23,14 +23,14 @@ void B<char>::f() { }
|
||||
// We need a final CHECK line here.
|
||||
|
||||
// NORMAL-LABEL: define void @_Z1fv
|
||||
// MSVCCOMPAT-LABEL: define void @"\01?f@@YAXXZ"
|
||||
// MSVCCOMPAT-LABEL: define dso_local void @"\01?f@@YAXXZ"
|
||||
void f() { }
|
||||
|
||||
// <rdar://problem/8740363>
|
||||
inline void f1(int);
|
||||
|
||||
// NORMAL-LABEL: define linkonce_odr void @_Z2f1i
|
||||
// MSVCCOMPAT-LABEL: define linkonce_odr void @"\01?f1@@YAXH@Z"
|
||||
// MSVCCOMPAT-LABEL: define linkonce_odr dso_local void @"\01?f1@@YAXH@Z"
|
||||
void f1(int) { }
|
||||
|
||||
void test_f1() { f1(17); }
|
||||
@ -44,7 +44,7 @@ namespace test1 {
|
||||
};
|
||||
|
||||
// NORMAL-LABEL: define linkonce_odr void @_ZN5test11C4funcEv(
|
||||
// MSVCCOMPAT-LABEL: define linkonce_odr void @"\01?func@C@test1@@QEAAXXZ"(
|
||||
// MSVCCOMPAT-LABEL: define linkonce_odr dso_local void @"\01?func@C@test1@@QEAAXXZ"(
|
||||
|
||||
class C {
|
||||
public:
|
||||
@ -72,36 +72,36 @@ namespace test2 {
|
||||
f(a);
|
||||
}
|
||||
// NORMAL-LABEL: define linkonce_odr void @_ZN5test21fERKNS_1AE
|
||||
// MSVCCOMPAT-LABEL: define linkonce_odr void @"\01?f@test2@@YAXAEBUA@1@@Z"
|
||||
// MSVCCOMPAT-LABEL: define linkonce_odr dso_local void @"\01?f@test2@@YAXAEBUA@1@@Z"
|
||||
}
|
||||
|
||||
// NORMAL-NOT: _Z17ExternAndInlineFnv
|
||||
// MSVCCOMPAT-LABEL: define weak_odr void @"\01?ExternAndInlineFn@@YAXXZ"
|
||||
// MSVCCOMPAT-LABEL: define weak_odr dso_local void @"\01?ExternAndInlineFn@@YAXXZ"
|
||||
extern inline void ExternAndInlineFn() {}
|
||||
|
||||
// NORMAL-NOT: _Z18InlineThenExternFnv
|
||||
// MSVCCOMPAT-LABEL: define weak_odr void @"\01?InlineThenExternFn@@YAXXZ"
|
||||
// MSVCCOMPAT-LABEL: define weak_odr dso_local void @"\01?InlineThenExternFn@@YAXXZ"
|
||||
inline void InlineThenExternFn() {}
|
||||
extern void InlineThenExternFn();
|
||||
|
||||
// NORMAL-LABEL: define void @_Z18ExternThenInlineFnv
|
||||
// MSVCCOMPAT-LABEL: define void @"\01?ExternThenInlineFn@@YAXXZ"
|
||||
// MSVCCOMPAT-LABEL: define dso_local void @"\01?ExternThenInlineFn@@YAXXZ"
|
||||
extern void ExternThenInlineFn() {}
|
||||
|
||||
// NORMAL-NOT: _Z25ExternThenInlineThenDefFnv
|
||||
// MSVCCOMPAT-LABEL: define weak_odr void @"\01?ExternThenInlineThenDefFn@@YAXXZ"
|
||||
// MSVCCOMPAT-LABEL: define weak_odr dso_local void @"\01?ExternThenInlineThenDefFn@@YAXXZ"
|
||||
extern void ExternThenInlineThenDefFn();
|
||||
inline void ExternThenInlineThenDefFn();
|
||||
void ExternThenInlineThenDefFn() {}
|
||||
|
||||
// NORMAL-NOT: _Z25InlineThenExternThenDefFnv
|
||||
// MSVCCOMPAT-LABEL: define weak_odr void @"\01?InlineThenExternThenDefFn@@YAXXZ"
|
||||
// MSVCCOMPAT-LABEL: define weak_odr dso_local void @"\01?InlineThenExternThenDefFn@@YAXXZ"
|
||||
inline void InlineThenExternThenDefFn();
|
||||
extern void InlineThenExternThenDefFn();
|
||||
void InlineThenExternThenDefFn() {}
|
||||
|
||||
// NORMAL-NOT: _Z17ExternAndConstexprFnv
|
||||
// MSVCCOMPAT-LABEL: define weak_odr i32 @"\01?ExternAndConstexprFn@@YAHXZ"
|
||||
// MSVCCOMPAT-LABEL: define weak_odr dso_local i32 @"\01?ExternAndConstexprFn@@YAHXZ"
|
||||
extern constexpr int ExternAndConstexprFn() { return 0; }
|
||||
|
||||
// NORMAL-NOT: _Z11ConstexprFnv
|
||||
@ -112,7 +112,7 @@ template <typename T>
|
||||
extern inline void ExternInlineOnPrimaryTemplate(T);
|
||||
|
||||
// NORMAL-LABEL: define void @_Z29ExternInlineOnPrimaryTemplateIiEvT_
|
||||
// MSVCCOMPAT-LABEL: define void @"\01??$ExternInlineOnPrimaryTemplate@H@@YAXH@Z"
|
||||
// MSVCCOMPAT-LABEL: define dso_local void @"\01??$ExternInlineOnPrimaryTemplate@H@@YAXH@Z"
|
||||
template <>
|
||||
void ExternInlineOnPrimaryTemplate(int) {}
|
||||
|
||||
@ -120,7 +120,7 @@ template <typename T>
|
||||
extern inline void ExternInlineOnPrimaryTemplateAndSpecialization(T);
|
||||
|
||||
// NORMAL-NOT: _Z46ExternInlineOnPrimaryTemplateAndSpecializationIiEvT_
|
||||
// MSVCCOMPAT-LABEL: define weak_odr void @"\01??$ExternInlineOnPrimaryTemplateAndSpecialization@H@@YAXH@Z"
|
||||
// MSVCCOMPAT-LABEL: define weak_odr dso_local void @"\01??$ExternInlineOnPrimaryTemplateAndSpecialization@H@@YAXH@Z"
|
||||
template <>
|
||||
extern inline void ExternInlineOnPrimaryTemplateAndSpecialization(int) {}
|
||||
|
||||
@ -146,5 +146,5 @@ struct S {
|
||||
|
||||
__attribute__((used)) inline S<int> Foo() { return S<int>(); }
|
||||
// NORMAL-LABEL: define linkonce_odr void @_ZN7PR229593FooEv(
|
||||
// MSVCCOMPAT-LABEL: define linkonce_odr i8 @"\01?Foo@PR22959@@YA?AU?$S@H@1@XZ"(
|
||||
// MSVCCOMPAT-LABEL: define linkonce_odr dso_local i8 @"\01?Foo@PR22959@@YA?AU?$S@H@1@XZ"(
|
||||
}
|
||||
|
||||
@ -51,7 +51,7 @@ extern char const * extern_nonconst_xyzzy;
|
||||
|
||||
char const * *test4()
|
||||
{
|
||||
// CHECK: @extern_nonconst_xyzzy = global
|
||||
// CHECK: @extern_nonconst_xyzzy = {{(dso_local )?}}global
|
||||
return &extern_nonconst_xyzzy;
|
||||
}
|
||||
|
||||
|
||||
@ -145,7 +145,7 @@ void f13_test() {
|
||||
f13();
|
||||
}
|
||||
// f13()::L::foo[abi:C][abi:D]()
|
||||
// CHECK-DAG: define linkonce_odr %struct.E* @_ZZ3f13vEN1L3fooB1CB1DEv(
|
||||
// CHECK-DAG: define linkonce_odr {{(dso_local )?}}%struct.E* @_ZZ3f13vEN1L3fooB1CB1DEv(
|
||||
|
||||
// f13()::L::foo[abi:C][abi:D]()::a[abi:A][abi:B]
|
||||
// CHECK-DAG: @_ZZZ3f13vEN1L3fooB1CB1DEvE1aB1AB1B =
|
||||
@ -218,7 +218,7 @@ namespace N19 {
|
||||
void f19_test(N19::C<N19::A, &N19::foo>, N19::F, N19::D) {
|
||||
}
|
||||
// f19_test(N19::C<N19::A, &N19::foo[abi:B]>, N19::F, N19::D)
|
||||
// CHECK-DAG: define void @_Z8f19_testN3N191CINS_1AEXadL_ZNS_3fooB1BES1_NS_1DEEEEENS_1FES2_(
|
||||
// CHECK-DAG: define {{(dso_local )?}}void @_Z8f19_testN3N191CINS_1AEXadL_ZNS_3fooB1BES1_NS_1DEEEEENS_1FES2_(
|
||||
|
||||
namespace pr30440 {
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user