forked from OSchip/llvm-project
Changed renaming of local symbols by inserting a dot vefore the numeric suffix
details in http://reviews.llvm.org/D9483 goes with llvm checkin r237150 llvm-svn: 237151
This commit is contained in:
parent
d79dfcbc37
commit
3acf6275e6
|
@ -5,8 +5,8 @@
|
|||
// and block literals are internal constants.
|
||||
// CHECK: @__block_descriptor_tmp = internal constant
|
||||
// CHECK: @__block_literal_global = internal constant
|
||||
// CHECK: @__block_descriptor_tmp2 = internal constant
|
||||
// CHECK: @__block_literal_global3 = internal constant
|
||||
// CHECK: @__block_descriptor_tmp.2 = internal constant
|
||||
// CHECK: @__block_literal_global.3 = internal constant
|
||||
static int fun(int x) {
|
||||
return x+1;
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
// X64: @.str = private unnamed_addr constant [6 x i8] c"v8@?0\00"
|
||||
// X64: @__block_literal_global = internal constant {{.*}} { i8** @_NSConcreteGlobalBlock, i32 1342177280,
|
||||
// X64: @.str1 = private unnamed_addr constant [12 x i8] c"i16@?0c8f12\00"
|
||||
// X64: @.str.1 = private unnamed_addr constant [12 x i8] c"i16@?0c8f12\00"
|
||||
// X64: store i32 1073741824, i32*
|
||||
|
||||
// X32: [[STR1:@.*]] = private unnamed_addr constant [6 x i8] c"v4@?0\00"
|
||||
|
|
|
@ -25,7 +25,7 @@ void test1() {
|
|||
// CHECK-1: alloca %struct.anon
|
||||
// CHECK-1: getelementptr inbounds %struct.anon, %struct.anon*
|
||||
// CHECK-1: store i32* %i
|
||||
// CHECK-1: call void @[[HelperName:__captured_stmt[0-9]+]]
|
||||
// CHECK-1: call void @[[HelperName:__captured_stmt[\.0-9]+]]
|
||||
}
|
||||
|
||||
// CHECK-1: define internal void @[[HelperName]](%struct.anon
|
||||
|
@ -45,7 +45,7 @@ void test2(int x) {
|
|||
}
|
||||
// CHECK-2: test2
|
||||
// CHECK-2-NOT: %i
|
||||
// CHECK-2: call void @[[HelperName:__captured_stmt[0-9]+]]
|
||||
// CHECK-2: call void @[[HelperName:__captured_stmt[\.0-9]+]]
|
||||
}
|
||||
|
||||
// CHECK-2: define internal void @[[HelperName]]
|
||||
|
@ -90,7 +90,7 @@ void dont_capture_global() {
|
|||
}
|
||||
|
||||
// CHECK-GLOBALS: %[[Capture:struct\.anon[\.0-9]*]] = type {}
|
||||
// CHECK-GLOBALS: call void @__captured_stmt[[HelperName:[0-9]+]](%[[Capture]]
|
||||
// CHECK-GLOBALS: call void @__captured_stmt[[HelperName:[\.0-9]+]](%[[Capture]]
|
||||
}
|
||||
|
||||
// CHECK-GLOBALS: define internal void @__captured_stmt[[HelperName]]
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
// RUN: %clang_cc1 -fwritable-strings -emit-llvm %s -o - | FileCheck %s
|
||||
//
|
||||
// CHECK: @.str = private unnamed_addr constant [14 x i8] c"Hello, World!\00", section "__TEXT,__cstring,cstring_literals", align 1
|
||||
// CHECK: @.str1 = private unnamed_addr constant [7 x i8] c"yo joe\00", section "__TEXT,__cstring,cstring_literals", align 1
|
||||
// CHECK: @.str3 = private unnamed_addr constant [16 x i8] c"Goodbye, World!\00", section "__TEXT,__cstring,cstring_literals", align 1
|
||||
// CHECK: @.str.1 = private unnamed_addr constant [7 x i8] c"yo joe\00", section "__TEXT,__cstring,cstring_literals", align 1
|
||||
// CHECK: @.str.3 = private unnamed_addr constant [16 x i8] c"Goodbye, World!\00", section "__TEXT,__cstring,cstring_literals", align 1
|
||||
|
||||
#define CFSTR __builtin___CFStringMakeConstantString
|
||||
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
// RUN: %clang_cc1 -triple i386-apple-darwin9 -emit-llvm %s -o - | FileCheck -check-prefix CHECK-LSB %s
|
||||
|
||||
// CHECK-LSB: @.str = private unnamed_addr constant [8 x i8] c"string0\00"
|
||||
// CHECK-LSB: @.str1 = private unnamed_addr constant [8 x i8] c"string1\00"
|
||||
// CHECK-LSB: @.str2 = private unnamed_addr constant [18 x i16] [i16 104, i16 101, i16 108, i16 108, i16 111, i16 32, i16 8594, i16 32, i16 9731, i16 32, i16 8592, i16 32, i16 119, i16 111, i16 114, i16 108, i16 100, i16 0], section "__TEXT,__ustring", align 2
|
||||
// CHECK-LSB: @.str4 = private unnamed_addr constant [6 x i16] [i16 116, i16 101, i16 115, i16 116, i16 8482, i16 0], section "__TEXT,__ustring", align 2
|
||||
// CHECK-LSB: @.str.1 = private unnamed_addr constant [8 x i8] c"string1\00"
|
||||
// CHECK-LSB: @.str.2 = private unnamed_addr constant [18 x i16] [i16 104, i16 101, i16 108, i16 108, i16 111, i16 32, i16 8594, i16 32, i16 9731, i16 32, i16 8592, i16 32, i16 119, i16 111, i16 114, i16 108, i16 100, i16 0], section "__TEXT,__ustring", align 2
|
||||
// CHECK-LSB: @.str.4 = private unnamed_addr constant [6 x i16] [i16 116, i16 101, i16 115, i16 116, i16 8482, i16 0], section "__TEXT,__ustring", align 2
|
||||
|
||||
|
||||
// RUN: %clang_cc1 -triple powerpc-apple-darwin9 -emit-llvm %s -o - | FileCheck -check-prefix CHECK-MSB %s
|
||||
|
||||
// CHECK-MSB: @.str = private unnamed_addr constant [8 x i8] c"string0\00"
|
||||
// CHECK-MSB: @.str1 = private unnamed_addr constant [8 x i8] c"string1\00"
|
||||
// CHECK-MSB: @.str2 = private unnamed_addr constant [18 x i16] [i16 104, i16 101, i16 108, i16 108, i16 111, i16 32, i16 8594, i16 32, i16 9731, i16 32, i16 8592, i16 32, i16 119, i16 111, i16 114, i16 108, i16 100, i16 0], section "__TEXT,__ustring", align 2
|
||||
// CHECK-MSB: @.str4 = private unnamed_addr constant [6 x i16] [i16 116, i16 101, i16 115, i16 116, i16 8482, i16 0], section "__TEXT,__ustring", align 2
|
||||
// CHECK-MSB: @.str.1 = private unnamed_addr constant [8 x i8] c"string1\00"
|
||||
// CHECK-MSB: @.str.2 = private unnamed_addr constant [18 x i16] [i16 104, i16 101, i16 108, i16 108, i16 111, i16 32, i16 8594, i16 32, i16 9731, i16 32, i16 8592, i16 32, i16 119, i16 111, i16 114, i16 108, i16 100, i16 0], section "__TEXT,__ustring", align 2
|
||||
// CHECK-MSB: @.str.4 = private unnamed_addr constant [6 x i16] [i16 116, i16 101, i16 115, i16 116, i16 8482, i16 0], section "__TEXT,__ustring", align 2
|
||||
|
||||
const char *g0 = "string0";
|
||||
const void *g1 = __builtin___CFStringMakeConstantString("string1");
|
||||
|
|
|
@ -13,11 +13,11 @@ void (^mangle(void))(void) {
|
|||
|
||||
// CHECK: @__func__.__mangle_block_invoke_2 = private unnamed_addr constant [24 x i8] c"__mangle_block_invoke_2\00", align 1
|
||||
// CHECK: @.str = private unnamed_addr constant {{.*}}, align 1
|
||||
// CHECK: @.str1 = private unnamed_addr constant [7 x i8] c"mangle\00", align 1
|
||||
// CHECK: @.str.1 = private unnamed_addr constant [7 x i8] c"mangle\00", align 1
|
||||
|
||||
// CHECK: define internal void @__mangle_block_invoke(i8* %.block_descriptor)
|
||||
|
||||
// CHECK: define internal void @__mangle_block_invoke_2(i8* %.block_descriptor){{.*}}{
|
||||
// CHECK: call void @__assert_rtn(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @__func__.__mangle_block_invoke_2, i32 0, i32 0), i8* getelementptr inbounds {{.*}}, i32 9, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str1, i32 0, i32 0))
|
||||
// CHECK: call void @__assert_rtn(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @__func__.__mangle_block_invoke_2, i32 0, i32 0), i8* getelementptr inbounds {{.*}}, i32 9, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i32 0, i32 0))
|
||||
// CHECK: }
|
||||
|
||||
|
|
|
@ -84,7 +84,7 @@ void testva (int n, ...)
|
|||
// CHECK-PPC-NEXT: [[TWENTYSEVEN:%[0-9]+]] = mul i8 [[GPR1]], 4
|
||||
// CHECK-PPC-NEXT: [[TWENTYEIGHT:%[0-9]+]] = sext i8 [[TWENTYSEVEN]] to i32
|
||||
// CHECK-PPC-NEXT: [[TWENTYNINE:%[0-9]+]] = add i32 [[TWENTYSIX]], [[TWENTYEIGHT]]
|
||||
// CHECK-PPC-NEXT: br i1 [[COND1]], label [[USING_REGS1:%[a-z_0-9]+]], label [[USING_OVERFLOW1:%[a-z_0-9]+]]
|
||||
// CHECK-PPC-NEXT: br i1 [[COND1]], label [[USING_REGS1:%[.a-z_0-9]+]], label [[USING_OVERFLOW1:%[.a-z_0-9]+]]
|
||||
//
|
||||
// CHECK-PPC1:[[USING_REGS1]]:
|
||||
// CHECK-PPC: [[THIRTY:%[0-9]+]] = inttoptr i32 [[TWENTYNINE]] to i32*
|
||||
|
|
|
@ -7,9 +7,9 @@
|
|||
extern void abort (void);
|
||||
|
||||
// CHECK: @.compoundliteral = internal global %struct.A { i32 1, i32 2 }
|
||||
// CHECK: @.compoundliteral1 = internal global %struct.A { i32 3, i32 4 }
|
||||
// CHECK: @.compoundliteral2 = internal global %struct.B { %struct.A* @.compoundliteral, %struct.A* @.compoundliteral1 }
|
||||
// CHECK: @.compoundliteral3 = internal global %struct.A { i32 5, i32 6 }
|
||||
// CHECK: @.compoundliteral.1 = internal global %struct.A { i32 3, i32 4 }
|
||||
// CHECK: @.compoundliteral.2 = internal global %struct.B { %struct.A* @.compoundliteral, %struct.A* @.compoundliteral.1 }
|
||||
// CHECK: @.compoundliteral.3 = internal global %struct.A { i32 5, i32 6 }
|
||||
|
||||
struct A { int i; int j; };
|
||||
struct B { struct A *a; struct A *b; };
|
||||
|
|
|
@ -6,8 +6,8 @@ struct A {
|
|||
|
||||
// CHECK: @arr = global [3 x %struct.S] zeroinitializer
|
||||
// CHECK: @.str = {{.*}}constant [6 x i8] c"hello\00"
|
||||
// CHECK: @.str1 = {{.*}}constant [6 x i8] c"world\00"
|
||||
// CHECK: @.str2 = {{.*}}constant [8 x i8] c"goodbye\00"
|
||||
// CHECK: @.str.1 = {{.*}}constant [6 x i8] c"world\00"
|
||||
// CHECK: @.str.2 = {{.*}}constant [8 x i8] c"goodbye\00"
|
||||
|
||||
struct S {
|
||||
int n;
|
||||
|
@ -21,6 +21,6 @@ struct S {
|
|||
// CHECK: store i32 0, i32* getelementptr inbounds ([3 x %struct.S], [3 x %struct.S]* @arr, i64 0, i64 0, i32 0)
|
||||
// CHECK: call void @_ZN1AC1EPKc(%struct.A* getelementptr inbounds ([3 x %struct.S], [3 x %struct.S]* @arr, i64 0, i64 0, i32 1), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str, i32 0, i32 0))
|
||||
// CHECK: store i32 1, i32* getelementptr inbounds ([3 x %struct.S], [3 x %struct.S]* @arr, i64 0, i64 1, i32 0)
|
||||
// CHECK: call void @_ZN1AC1EPKc(%struct.A* getelementptr inbounds ([3 x %struct.S], [3 x %struct.S]* @arr, i64 0, i64 1, i32 1), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str1, i32 0, i32 0))
|
||||
// CHECK: call void @_ZN1AC1EPKc(%struct.A* getelementptr inbounds ([3 x %struct.S], [3 x %struct.S]* @arr, i64 0, i64 1, i32 1), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.1, i32 0, i32 0))
|
||||
// CHECK: store i32 2, i32* getelementptr inbounds ([3 x %struct.S], [3 x %struct.S]* @arr, i64 0, i64 2, i32 0)
|
||||
// CHECK: call void @_ZN1AC1EPKc(%struct.A* getelementptr inbounds ([3 x %struct.S], [3 x %struct.S]* @arr, i64 0, i64 2, i32 1), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str2, i32 0, i32 0))
|
||||
// CHECK: call void @_ZN1AC1EPKc(%struct.A* getelementptr inbounds ([3 x %struct.S], [3 x %struct.S]* @arr, i64 0, i64 2, i32 1), i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.2, i32 0, i32 0))
|
||||
|
|
|
@ -39,7 +39,7 @@ void test1() {
|
|||
// CHECK-1: getelementptr inbounds %[[Capture]], %[[Capture]]* %{{[^,]*}}, i32 0, i32 0
|
||||
// CHECK-1: getelementptr inbounds %[[Capture]], %[[Capture]]* %{{[^,]*}}, i32 0, i32 1
|
||||
// CHECK-1: store %struct.Foo* %f, %struct.Foo**
|
||||
// CHECK-1: call void @[[HelperName:[A-Za-z0-9_]+]](%[[Capture]]*
|
||||
// CHECK-1: call void @[[HelperName:[\.A-Za-z0-9_]+]](%[[Capture]]*
|
||||
// CHECK-1: call {{.*}}FooD1Ev
|
||||
// CHECK-1: ret
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ void test4() {
|
|||
f.x = 5;
|
||||
}
|
||||
// CHECK-4-LABEL: define void @_Z5test4v
|
||||
// CHECK-4: call void @[[HelperName:["$_A-Za-z0-9]+]](%[[Capture:.*]]*
|
||||
// CHECK-4: call void @[[HelperName:[\."$_A-Za-z0-9]+]](%[[Capture:.*]]*
|
||||
// CHECK-4: ret void
|
||||
//
|
||||
// CHECK-4: define internal void @[[HelperName]]
|
||||
|
|
|
@ -45,13 +45,13 @@ int *p = (Z){ {1, 2, 3} }.i;
|
|||
|
||||
|
||||
int *PR21912_1 = (int []){};
|
||||
// CHECK-LABEL: define {{.*}}__cxx_global_var_init1()
|
||||
// CHECK: store i32* getelementptr inbounds ([0 x i32], [0 x i32]* @.compoundliteral2, i32 0, i32 0), i32** @PR21912_1
|
||||
// CHECK-LABEL: define {{.*}}__cxx_global_var_init.1()
|
||||
// CHECK: store i32* getelementptr inbounds ([0 x i32], [0 x i32]* @.compoundliteral.2, i32 0, i32 0), i32** @PR21912_1
|
||||
|
||||
union PR21912Ty {
|
||||
long long l;
|
||||
double d;
|
||||
};
|
||||
union PR21912Ty *PR21912_2 = (union PR21912Ty[]){{.d = 2.0}, {.l = 3}};
|
||||
// CHECK-LABEL: define {{.*}}__cxx_global_var_init3()
|
||||
// CHECK: store %union.PR21912Ty* getelementptr inbounds ([2 x %union.PR21912Ty], [2 x %union.PR21912Ty]* bitcast (<{ { double }, %union.PR21912Ty }>* @.compoundliteral4 to [2 x %union.PR21912Ty]*), i32 0, i32 0), %union.PR21912Ty** @PR21912_2
|
||||
// CHECK-LABEL: define {{.*}}__cxx_global_var_init.3()
|
||||
// CHECK: store %union.PR21912Ty* getelementptr inbounds ([2 x %union.PR21912Ty], [2 x %union.PR21912Ty]* bitcast (<{ { double }, %union.PR21912Ty }>* @.compoundliteral.4 to [2 x %union.PR21912Ty]*), i32 0, i32 0), %union.PR21912Ty** @PR21912_2
|
||||
|
|
|
@ -54,7 +54,7 @@ namespace test3 {
|
|||
// test that instead of an internal alias we just use the other destructor
|
||||
// directly.
|
||||
|
||||
// CHECK1: define internal void @__cxx_global_var_init1()
|
||||
// CHECK1: define internal void @__cxx_global_var_init.1()
|
||||
// CHECK1: call i32 @__cxa_atexit{{.*}}_ZN5test312_GLOBAL__N_11AD2Ev
|
||||
// CHECK1: define internal void @_ZN5test312_GLOBAL__N_11AD2Ev(
|
||||
namespace {
|
||||
|
@ -73,13 +73,13 @@ namespace test4 {
|
|||
// guarantee that they will be present in every TU. Instead, we just call
|
||||
// A's destructor directly.
|
||||
|
||||
// CHECK1: define internal void @__cxx_global_var_init2()
|
||||
// CHECK1: define internal void @__cxx_global_var_init.2()
|
||||
// CHECK1: call i32 @__cxa_atexit{{.*}}_ZN5test41AD2Ev
|
||||
// CHECK1: define linkonce_odr void @_ZN5test41AD2Ev({{.*}} comdat align
|
||||
|
||||
// test that we don't do this optimization at -O0 so that the debugger can
|
||||
// see both destructors.
|
||||
// NOOPT: define internal void @__cxx_global_var_init2()
|
||||
// NOOPT: define internal void @__cxx_global_var_init.2()
|
||||
// NOOPT: call i32 @__cxa_atexit{{.*}}@_ZN5test41BD2Ev
|
||||
// NOOPT: define linkonce_odr void @_ZN5test41BD2Ev({{.*}} comdat align
|
||||
struct A {
|
||||
|
@ -94,7 +94,7 @@ namespace test4 {
|
|||
namespace test5 {
|
||||
// similar to test4, but with an internal B.
|
||||
|
||||
// CHECK2: define internal void @__cxx_global_var_init3()
|
||||
// CHECK2: define internal void @__cxx_global_var_init.3()
|
||||
// CHECK2: call i32 @__cxa_atexit{{.*}}_ZN5test51AD2Ev
|
||||
// CHECK2: define linkonce_odr void @_ZN5test51AD2Ev({{.*}} comdat align
|
||||
struct A {
|
||||
|
@ -120,7 +120,7 @@ namespace test6 {
|
|||
};
|
||||
}
|
||||
B X;
|
||||
// CHECK3: define internal void @__cxx_global_var_init4()
|
||||
// CHECK3: define internal void @__cxx_global_var_init.4()
|
||||
// CHECK3: call i32 @__cxa_atexit({{.*}}@_ZN5test61AD2Ev
|
||||
}
|
||||
|
||||
|
@ -142,7 +142,7 @@ namespace test7 {
|
|||
namespace test8 {
|
||||
// Test that we replace ~zed with ~bar which is an alias to ~foo.
|
||||
// CHECK4: @_ZN5test83barD2Ev = alias {{.*}} @_ZN5test83fooD2Ev
|
||||
// CHECK4: define internal void @__cxx_global_var_init5()
|
||||
// CHECK4: define internal void @__cxx_global_var_init.5()
|
||||
// CHECK4: call i32 @__cxa_atexit({{.*}}@_ZN5test83barD2Ev
|
||||
struct foo {
|
||||
~foo();
|
||||
|
|
|
@ -18,7 +18,7 @@ void foo() {
|
|||
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__cxx_global_var_init",{{.*}} line: 12,{{.*}} isLocal: true, isDefinition: true
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__dtor_glob",{{.*}} line: 12,{{.*}} isLocal: true, isDefinition: true
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__cxx_global_var_init1",{{.*}} line: 13,{{.*}} isLocal: true, isDefinition: true
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__cxx_global_var_init.1",{{.*}} line: 13,{{.*}} isLocal: true, isDefinition: true
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__cxx_global_array_dtor",{{.*}} line: 13,{{.*}} isLocal: true, isDefinition: true
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__dtor_array",{{.*}} line: 13,{{.*}} isLocal: true, isDefinition: true
|
||||
// CHECK-NOKEXT: !DISubprogram(name: "__dtor__ZZ3foovE4stat",{{.*}} line: 16,{{.*}} isLocal: true, isDefinition: true
|
||||
|
|
|
@ -22,13 +22,13 @@ int main(void) {}
|
|||
// CHECK-NOT: __cxx_global_var_init
|
||||
// CHECK: store i32 %[[C0]], i32* @_ZL1i, align 4, !dbg
|
||||
//
|
||||
// CHECK-LABEL: define internal void @__cxx_global_var_init1()
|
||||
// CHECK-LABEL: define internal void @__cxx_global_var_init.1()
|
||||
// CHECK-NOT: dbg
|
||||
// CHECK: %[[C1:.+]] = call i32 @_Z4testv()
|
||||
// CHECK-NOT: dbg
|
||||
// CHECK: store i32 %[[C1]], i32* @_ZL1j, align 4
|
||||
//
|
||||
// CHECK-LABEL: define internal void @__cxx_global_var_init2()
|
||||
// CHECK-LABEL: define internal void @__cxx_global_var_init.2()
|
||||
// CHECK-NOT: __cxx_global_var_init
|
||||
// CHECK: %[[C2:.+]] = call i32 @_Z4testv(), !dbg ![[LINE2:.*]]
|
||||
// CHECK-NOT: __cxx_global_var_init
|
||||
|
|
|
@ -128,23 +128,23 @@ int (*StaticMembers<T>::f)() = []{return 5;};
|
|||
// CHECK: ret i32 2
|
||||
template float StaticMembers<float>::x;
|
||||
|
||||
// CHECK-LABEL: define internal void @__cxx_global_var_init1()
|
||||
// CHECK-LABEL: define internal void @__cxx_global_var_init.1()
|
||||
// CHECK: call i32 @_ZNK13StaticMembersIfE1yMUlvE_clEv
|
||||
// CHECK-LABEL: define linkonce_odr i32 @_ZNK13StaticMembersIfE1yMUlvE_clEv
|
||||
// CHECK: ret i32 3
|
||||
template float StaticMembers<float>::y;
|
||||
|
||||
// CHECK-LABEL: define internal void @__cxx_global_var_init2()
|
||||
// CHECK-LABEL: define internal void @__cxx_global_var_init.2()
|
||||
// CHECK: call i32 @_Z13accept_lambdaIN13StaticMembersIfE1zMUlvE_EEiT_
|
||||
// CHECK: declare i32 @_Z13accept_lambdaIN13StaticMembersIfE1zMUlvE_EEiT_()
|
||||
template float StaticMembers<float>::z;
|
||||
|
||||
// CHECK-LABEL: define internal void @__cxx_global_var_init3()
|
||||
// CHECK-LABEL: define internal void @__cxx_global_var_init.3()
|
||||
// CHECK: call {{.*}} @_ZNK13StaticMembersIfE1fMUlvE_cvPFivEEv
|
||||
// CHECK-LABEL: define linkonce_odr i32 ()* @_ZNK13StaticMembersIfE1fMUlvE_cvPFivEEv
|
||||
template int (*StaticMembers<float>::f)();
|
||||
|
||||
// CHECK-LABEL: define internal void @__cxx_global_var_init4
|
||||
// CHECK-LABEL: define internal void @__cxx_global_var_init.4
|
||||
// CHECK: call i32 @"_ZNK13StaticMembersIdE3$_2clEv"
|
||||
// CHECK-LABEL: define internal i32 @"_ZNK13StaticMembersIdE3$_2clEv"
|
||||
// CHECK: ret i32 42
|
||||
|
|
|
@ -102,7 +102,7 @@ void MultipleStatics() {
|
|||
// CHECK: and i32 {{.*}}, 16
|
||||
// ...
|
||||
// CHECK: and i32 {{.*}}, -2147483648
|
||||
// CHECK: load i32, i32* @"\01?$S1@?1??MultipleStatics@@YAXXZ@4IA1"
|
||||
// CHECK: load i32, i32* @"\01?$S1@?1??MultipleStatics@@YAXXZ@4IA.1"
|
||||
// CHECK: and i32 {{.*}}, 1
|
||||
// CHECK: and i32 {{.*}}, 2
|
||||
// CHECK: and i32 {{.*}}, 4
|
||||
|
|
|
@ -15,7 +15,7 @@ int x = f();
|
|||
#pragma init_seg(lib)
|
||||
int y = f();
|
||||
// CHECK: @"\01?y@simple_init@@3HA" = global i32 0, align 4
|
||||
// CHECK: @__cxx_init_fn_ptr1 = private constant void ()* @"\01??__Ey@simple_init@@YAXXZ", section ".CRT$XCL"
|
||||
// CHECK: @__cxx_init_fn_ptr.1 = private constant void ()* @"\01??__Ey@simple_init@@YAXXZ", section ".CRT$XCL"
|
||||
|
||||
#pragma init_seg(user)
|
||||
int z = f();
|
||||
|
@ -29,14 +29,14 @@ namespace internal_init {
|
|||
namespace {
|
||||
int x = f();
|
||||
// CHECK: @"\01?x@?A@internal_init@@3HA" = internal global i32 0, align 4
|
||||
// CHECK: @__cxx_init_fn_ptr2 = private constant void ()* @"\01??__Ex@?A@internal_init@@YAXXZ", section ".asdf"
|
||||
// CHECK: @__cxx_init_fn_ptr.2 = private constant void ()* @"\01??__Ex@?A@internal_init@@YAXXZ", section ".asdf"
|
||||
}
|
||||
}
|
||||
|
||||
namespace selectany_init {
|
||||
int __declspec(selectany) x = f();
|
||||
// CHECK: @"\01?x@selectany_init@@3HA" = weak_odr global i32 0, comdat, align 4
|
||||
// CHECK: @__cxx_init_fn_ptr3 = private constant void ()* @"\01??__Ex@selectany_init@@YAXXZ", section ".asdf", comdat($"\01?x@selectany_init@@3HA")
|
||||
// CHECK: @__cxx_init_fn_ptr.3 = private constant void ()* @"\01??__Ex@selectany_init@@YAXXZ", section ".asdf", comdat($"\01?x@selectany_init@@3HA")
|
||||
}
|
||||
|
||||
namespace explicit_template_instantiation {
|
||||
|
@ -44,7 +44,7 @@ template <typename T> struct A { static const int x; };
|
|||
template <typename T> const int A<T>::x = f();
|
||||
template struct A<int>;
|
||||
// CHECK: @"\01?x@?$A@H@explicit_template_instantiation@@2HB" = weak_odr global i32 0, comdat, align 4
|
||||
// CHECK: @__cxx_init_fn_ptr4 = private constant void ()* @"\01??__Ex@?$A@H@explicit_template_instantiation@@2HB@YAXXZ", section ".asdf", comdat($"\01?x@?$A@H@explicit_template_instantiation@@2HB")
|
||||
// CHECK: @__cxx_init_fn_ptr.4 = private constant void ()* @"\01??__Ex@?$A@H@explicit_template_instantiation@@2HB@YAXXZ", section ".asdf", comdat($"\01?x@?$A@H@explicit_template_instantiation@@2HB")
|
||||
}
|
||||
|
||||
namespace implicit_template_instantiation {
|
||||
|
@ -52,7 +52,7 @@ template <typename T> struct A { static const int x; };
|
|||
template <typename T> const int A<T>::x = f();
|
||||
int g() { return A<int>::x; }
|
||||
// CHECK: @"\01?x@?$A@H@implicit_template_instantiation@@2HB" = linkonce_odr global i32 0, comdat, align 4
|
||||
// CHECK: @__cxx_init_fn_ptr5 = private constant void ()* @"\01??__Ex@?$A@H@implicit_template_instantiation@@2HB@YAXXZ", section ".asdf", comdat($"\01?x@?$A@H@implicit_template_instantiation@@2HB")
|
||||
// CHECK: @__cxx_init_fn_ptr.5 = private constant void ()* @"\01??__Ex@?$A@H@implicit_template_instantiation@@2HB@YAXXZ", section ".asdf", comdat($"\01?x@?$A@H@implicit_template_instantiation@@2HB")
|
||||
}
|
||||
|
||||
// ... and here's where we emitted user level ctors.
|
||||
|
@ -65,8 +65,8 @@ int g() { return A<int>::x; }
|
|||
//
|
||||
// CHECK: @llvm.used = appending global [6 x i8*]
|
||||
// CHECK: [i8* bitcast (void ()** @__cxx_init_fn_ptr to i8*),
|
||||
// CHECK: i8* bitcast (void ()** @__cxx_init_fn_ptr1 to i8*),
|
||||
// CHECK: i8* bitcast (void ()** @__cxx_init_fn_ptr2 to i8*),
|
||||
// CHECK: i8* bitcast (void ()** @__cxx_init_fn_ptr3 to i8*),
|
||||
// CHECK: i8* bitcast (void ()** @__cxx_init_fn_ptr4 to i8*),
|
||||
// CHECK: i8* bitcast (void ()** @__cxx_init_fn_ptr5 to i8*)], section "llvm.metadata"
|
||||
// CHECK: i8* bitcast (void ()** @__cxx_init_fn_ptr.1 to i8*),
|
||||
// CHECK: i8* bitcast (void ()** @__cxx_init_fn_ptr.2 to i8*),
|
||||
// CHECK: i8* bitcast (void ()** @__cxx_init_fn_ptr.3 to i8*),
|
||||
// CHECK: i8* bitcast (void ()** @__cxx_init_fn_ptr.4 to i8*),
|
||||
// CHECK: i8* bitcast (void ()** @__cxx_init_fn_ptr.5 to i8*)], section "llvm.metadata"
|
||||
|
|
|
@ -64,8 +64,8 @@ namespace test3 {
|
|||
template <class T> int A<T>::x = foo();
|
||||
template struct A<int>;
|
||||
|
||||
// CHECK-LABEL: define internal void @__cxx_global_var_init1() {{.*}} comdat($_ZN5test31AIiE1xE)
|
||||
// MACHO-LABEL: define internal void @__cxx_global_var_init1()
|
||||
// CHECK-LABEL: define internal void @__cxx_global_var_init.1() {{.*}} comdat($_ZN5test31AIiE1xE)
|
||||
// MACHO-LABEL: define internal void @__cxx_global_var_init.1()
|
||||
// MACHO-NOT: comdat
|
||||
// CHECK: [[GUARDBYTE:%.*]] = load i8, i8* bitcast (i64* @_ZGVN5test31AIiE1xE to i8*)
|
||||
// CHECK-NEXT: [[UNINITIALIZED:%.*]] = icmp eq i8 [[GUARDBYTE]], 0
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
@implementation AllPointers
|
||||
@end
|
||||
// CHECK-LP64: L_OBJC_CLASS_NAME_1:
|
||||
// CHECK-LP64: L_OBJC_CLASS_NAME_.1:
|
||||
// CHECK-LP64-NEXT: .asciz "\003"
|
||||
|
||||
@class NSString, NSNumber;
|
||||
|
@ -40,7 +40,7 @@
|
|||
|
||||
@implementation B @end
|
||||
|
||||
// CHECK-LP64: L_OBJC_CLASS_NAME_15:
|
||||
// CHECK-LP64: L_OBJC_CLASS_NAME_.15:
|
||||
// CHECK-LP64-NEXT: .asciz "\022"
|
||||
|
||||
@interface UnsafePerson {
|
||||
|
@ -52,7 +52,7 @@
|
|||
@end
|
||||
|
||||
@implementation UnsafePerson @end
|
||||
// CHECK-LP64: L_OBJC_CLASS_NAME_20:
|
||||
// CHECK-LP64: L_OBJC_CLASS_NAME_.20:
|
||||
// CHECK-LP64-NEXT: .asciz "!"
|
||||
|
||||
// rdar://16136439
|
||||
|
@ -61,5 +61,5 @@
|
|||
@end
|
||||
|
||||
@implementation rdar16136439 @end
|
||||
// CHECK-LP64: L_OBJC_PROP_NAME_ATTR_29:
|
||||
// CHECK-LP64: L_OBJC_PROP_NAME_ATTR_.29:
|
||||
// CHECK-LP64-NEXT: .asciz "T@,R,W,N,V_first"
|
||||
|
|
|
@ -30,7 +30,7 @@ int main (int argc, const char * argv[]) {
|
|||
|
||||
// CHECK: [[SIXTEEN:%.*]] = call i8* @objc_loadWeakRetained(i8** {{%.*}})
|
||||
// CHECK-NEXT: [[SEVENTEEN:%.*]] = bitcast i8* [[SIXTEEN]] to {{%.*}}
|
||||
// CHECK-NEXT: [[EIGHTEEN:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_6
|
||||
// CHECK-NEXT: [[EIGHTEEN:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_.6
|
||||
// CHECK-NEXT: [[NINETEEN:%.*]] = bitcast %0* [[SEVENTEEN]] to i8*
|
||||
// CHECK-NEXT: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
|
||||
// CHECK-NEXT: [[TWENTY:%.*]] = bitcast %0* [[SEVENTEEN]] to i8*
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
@end
|
||||
|
||||
// CHECK: define internal i8* @"\01+[Sub2(Category) copy]
|
||||
// CHECK: [[ONE:%.*]] = load %struct._class_t*, %struct._class_t** @"OBJC_CLASSLIST_SUP_REFS_$_3"
|
||||
// CHECK: [[ONE:%.*]] = load %struct._class_t*, %struct._class_t** @"OBJC_CLASSLIST_SUP_REFS_$_.3"
|
||||
// CHECK: [[TWO:%.*]] = bitcast %struct._class_t* [[ONE]] to i8*
|
||||
// CHECK: [[THREE:%.*]] = getelementptr inbounds %struct._objc_super, %struct._objc_super* [[OBJC_SUPER:%.*]], i32 0, i32 1
|
||||
// CHECK: store i8* [[TWO]], i8** [[THREE]]
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// RUN: %clang_cc1 -triple i686-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o %t %s
|
||||
// RUN: FileCheck < %t %s
|
||||
//
|
||||
// CHECK: @OBJC_METH_VAR_TYPE_34 = private global [16 x i8] c"v12@0:4[3[4@]]8\00"
|
||||
// CHECK: @OBJC_METH_VAR_TYPE_.34 = private global [16 x i8] c"v12@0:4[3[4@]]8\00"
|
||||
|
||||
@class Int1;
|
||||
|
||||
|
|
|
@ -23,4 +23,4 @@ int main() {
|
|||
// CHECK: @"\01l_OBJC_LABEL_PROTOCOL_$_P0" = weak hidden global
|
||||
// CHECK: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P0" = weak hidden global
|
||||
|
||||
// CHECK: llvm.compiler.used = appending global [10 x i8*] {{[^"]*}}OBJC_CLASS_NAME_{{[^"]*}}OBJC_METH_VAR_NAME_{{[^"]*}}OBJC_METH_VAR_TYPE_{{[^"]*}}"\01l_OBJC_$_CLASS_METHODS_A"{{[^"]*}}"\01l_OBJC_CLASS_PROTOCOLS_$_A"{{[^"]*}}OBJC_CLASS_NAME_1{{[^"]*}}"\01l_OBJC_PROTOCOL_$_P0"{{[^"]*}}"\01l_OBJC_LABEL_PROTOCOL_$_P0"{{[^"]*}}"\01l_OBJC_PROTOCOL_REFERENCE_$_P0"{{[^"]*}}"OBJC_LABEL_CLASS_$"{{[^"]*}} section "llvm.metadata"
|
||||
// CHECK: llvm.compiler.used = appending global [10 x i8*] {{[^"]*}}OBJC_CLASS_NAME_{{[^"]*}}OBJC_METH_VAR_NAME_{{[^"]*}}OBJC_METH_VAR_TYPE_{{[^"]*}}"\01l_OBJC_$_CLASS_METHODS_A"{{[^"]*}}"\01l_OBJC_CLASS_PROTOCOLS_$_A"{{[^"]*}}OBJC_CLASS_NAME_.1{{[^"]*}}"\01l_OBJC_PROTOCOL_$_P0"{{[^"]*}}"\01l_OBJC_LABEL_PROTOCOL_$_P0"{{[^"]*}}"\01l_OBJC_PROTOCOL_REFERENCE_$_P0"{{[^"]*}}"OBJC_LABEL_CLASS_$"{{[^"]*}} section "llvm.metadata"
|
||||
|
|
|
@ -19,5 +19,5 @@ typedef struct {
|
|||
@end
|
||||
|
||||
@implementation Test @end
|
||||
// CHECK-LP64: L_OBJC_CLASS_NAME_4:
|
||||
// CHECK-LP64: L_OBJC_CLASS_NAME_.4:
|
||||
// CHECK-LP64-NEXT: .asciz "\001\020"
|
||||
|
|
|
@ -16,5 +16,5 @@
|
|||
@implementation AllPointers
|
||||
@end
|
||||
|
||||
// CHECK-LP64: L_OBJC_CLASS_NAME_6:
|
||||
// CHECK-LP64: L_OBJC_CLASS_NAME_.6:
|
||||
// CHECK-LP64-NEXT: .asciz "\004"
|
||||
|
|
|
@ -53,5 +53,5 @@ void FUNC1()
|
|||
}
|
||||
// CHECK-LP64: @ArrayRecurs = internal global
|
||||
// CHECK-LP64: @FUNC.ArrayRecurs = internal global
|
||||
// CHECK-LP64: @FUNC.ArrayRecurs3 = internal global
|
||||
// CHECK-LP64: @FUNC.ArrayRecurs.3 = internal global
|
||||
// CHECK-LP64: @FUNC1.ArrayRecurs = internal global
|
||||
|
|
|
@ -19,11 +19,11 @@ void __assert_rtn(const char *, const char *, int, const char *);
|
|||
|
||||
// CHECK: @"__func__.__14-[Test mangle]_block_invoke_2" = private unnamed_addr constant [34 x i8] c"__14-[Test mangle]_block_invoke_2\00", align 1
|
||||
// CHECK: @.str = private unnamed_addr constant {{.*}}, align 1
|
||||
// CHECK: @.str1 = private unnamed_addr constant [7 x i8] c"mangle\00", align 1
|
||||
// CHECK: @.str.1 = private unnamed_addr constant [7 x i8] c"mangle\00", align 1
|
||||
|
||||
// CHECK: define internal void @"__14-[Test mangle]_block_invoke"(i8* %.block_descriptor)
|
||||
|
||||
// CHECK: define internal void @"__14-[Test mangle]_block_invoke_2"(i8* %.block_descriptor){{.*}}{
|
||||
// CHECK: call void @__assert_rtn(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @"__func__.__14-[Test mangle]_block_invoke_2", i32 0, i32 0), i8* getelementptr inbounds {{.*}}, i32 14, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str1, i32 0, i32 0))
|
||||
// CHECK: call void @__assert_rtn(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @"__func__.__14-[Test mangle]_block_invoke_2", i32 0, i32 0), i8* getelementptr inbounds {{.*}}, i32 14, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.1, i32 0, i32 0))
|
||||
// CHECK: }
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
// CHECK: @"\01l_OBJC_$_CATEGORY_A_$_Cat" = private global {{.*}} section "__DATA, __objc_const", align 8
|
||||
// CHECK: @"OBJC_CLASSLIST_SUP_REFS_$_{{[0-9]*}}" = private global {{.*}} section "__DATA, __objc_superrefs, regular, no_dead_strip", align 8
|
||||
// CHECK: @OBJC_SELECTOR_REFERENCES_ = private externally_initialized global {{.*}} section "__DATA, __objc_selrefs, literal_pointers, no_dead_strip"
|
||||
// CHECK: @"OBJC_CLASSLIST_SUP_REFS_$_{{[0-9]*}}" = private global {{.*}} section "__DATA, __objc_superrefs, regular, no_dead_strip", align 8
|
||||
// CHECK: @"OBJC_CLASSLIST_SUP_REFS_$_{{[\.0-9]*}}" = private global {{.*}} section "__DATA, __objc_superrefs, regular, no_dead_strip", align 8
|
||||
// CHECK: @"OBJC_CLASS_$_B" = external global
|
||||
// CHECK: @"OBJC_CLASSLIST_REFERENCES_$_{{[0-9]*}}" = private global {{.*}} section "__DATA, __objc_classrefs, regular, no_dead_strip", align 8
|
||||
// CHECK: @"\01l_objc_msgSend_fixup_alloc" = weak hidden global {{.*}} section "__DATA, __objc_msgrefs, coalesced", align 16
|
||||
|
|
|
@ -33,7 +33,7 @@ int main() {
|
|||
// CHECK-NONFRAGILE: @"OBJC_CLASS_$_NSConstantString" = external global
|
||||
|
||||
// CHECK-FRAGILE: @.str = private unnamed_addr constant [6 x i8] c"MyApp\00"
|
||||
// CHECK-FRAGILE: @.str1 = private unnamed_addr constant [7 x i8] c"MyApp1\00"
|
||||
// CHECK-FRAGILE: @.str.1 = private unnamed_addr constant [7 x i8] c"MyApp1\00"
|
||||
|
||||
// CHECK-NONFRAGILE: @.str = private unnamed_addr constant [6 x i8] c"MyApp\00"
|
||||
// CHECK-NONFRAGILE: @.str1 = private unnamed_addr constant [7 x i8] c"MyApp1\00"
|
||||
// CHECK-NONFRAGILE: @.str.1 = private unnamed_addr constant [7 x i8] c"MyApp1\00"
|
||||
|
|
|
@ -27,7 +27,7 @@ int main() {
|
|||
val = (array[10] = oldObject);
|
||||
// CHECK: [[THREE:%.*]] = load {{%.*}} [[array:%.*]], align 8
|
||||
// CHECK-NEXT: [[FOUR:%.*]] = load i8*, i8** [[oldObject:%.*]], align 8
|
||||
// CHECK-NEXT: [[FIVE:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_2
|
||||
// CHECK-NEXT: [[FIVE:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_.2
|
||||
// CHECK-NEXT: [[SIX:%.*]] = bitcast {{%.*}} [[THREE]] to i8*
|
||||
// CHECK-NEXT: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i8*, i32)*)(i8* [[SIX]], i8* [[FIVE]], i8* [[FOUR]], i32 10)
|
||||
// CHECK-NEXT: store i8* [[FOUR]], i8** [[val:%.*]]
|
||||
|
@ -38,7 +38,7 @@ int main() {
|
|||
oldObject = dictionary[key];
|
||||
// CHECK: [[SEVEN:%.*]] = load {{%.*}} [[DICTIONARY:%.*]], align 8
|
||||
// CHECK-NEXT: [[EIGHT:%.*]] = load i8*, i8** [[KEY:%.*]], align 8
|
||||
// CHECK-NEXT: [[TEN:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_4
|
||||
// CHECK-NEXT: [[TEN:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_.4
|
||||
// CHECK-NEXT: [[ELEVEN:%.*]] = bitcast {{%.*}} [[SEVEN]] to i8*
|
||||
// CHECK-NEXT: [[CALL1:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*, i8*)*)(i8* [[ELEVEN]], i8* [[TEN]], i8* [[EIGHT]])
|
||||
// CHECK-NEXT: store i8* [[CALL1]], i8** [[oldObject:%.*]], align 8
|
||||
|
@ -48,7 +48,7 @@ int main() {
|
|||
// CHECK: [[TWELVE:%.*]] = load {{%.*}} [[DICTIONARY]], align 8
|
||||
// CHECK-NEXT: [[THIRTEEN:%.*]] = load i8*, i8** [[KEY]], align 8
|
||||
// CHECK-NEXT: [[FOURTEEN:%.*]] = load i8*, i8** [[NEWOBJECT:%.*]], align 8
|
||||
// CHECK-NEXT: [[SIXTEEN:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_6
|
||||
// CHECK-NEXT: [[SIXTEEN:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_.6
|
||||
// CHECK-NEXT: [[SEVENTEEN:%.*]] = bitcast {{%.*}} [[TWELVE]] to i8*
|
||||
// CHECK-NEXT: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i8*, i8*)*)(i8* [[SEVENTEEN]], i8* [[SIXTEEN]], i8* [[FOURTEEN]], i8* [[THIRTEEN]])
|
||||
// CHECK-NEXT: store i8* [[FOURTEEN]], i8** [[val:%.*]]
|
||||
|
|
|
@ -13,5 +13,5 @@ void bar(Foo *x) {
|
|||
// CHECK: [[C1:%.*]] = call float bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
|
||||
// CHECK: [[I:%.*]] = fadd float [[C1]], 1.000000e+00
|
||||
// CHECK: [[CONV:%.*]] = fptosi float [[I]] to i32
|
||||
// CHECK: [[T3:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_2
|
||||
// CHECK: [[T3:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_.2
|
||||
// CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend
|
||||
|
|
|
@ -22,6 +22,6 @@ id global_obj2 = getObject();
|
|||
// CHECK-LABEL: define internal void @_GLOBAL__sub_I_arc_globals.mm
|
||||
// CHECK: call i8* @objc_autoreleasePoolPush()
|
||||
// CHECK-NEXT: call void @__cxx_global_var_init
|
||||
// CHECK-NEXT: call void @__cxx_global_var_init1
|
||||
// CHECK-NEXT: call void @__cxx_global_var_init.1
|
||||
// CHECK-NEXT: call void @objc_autoreleasePoolPop(
|
||||
// CHECK-NEXT: ret void
|
||||
|
|
|
@ -27,7 +27,7 @@ typedef Quad2<double> Quad2d;
|
|||
// CHECK: [[TWO:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_, !invariant.load ![[MD_NUM:[0-9]+]]
|
||||
// CHECK: [[THREE:%.*]] = bitcast [[ONET:%.*]]* [[ONE:%.*]] to i8*
|
||||
// CHECK: [[CALL:%.*]] = call nonnull %struct.Quad2* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to %struct.Quad2* (i8*, i8*)*)(i8* [[THREE]], i8* [[TWO]])
|
||||
// CHECK: [[FOUR:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_2, !invariant.load ![[MD_NUM]]
|
||||
// CHECK: [[FOUR:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_.2, !invariant.load ![[MD_NUM]]
|
||||
// CHECK: [[FIVE:%.*]] = bitcast [[ONET]]* [[ZERO:%.*]] to i8*
|
||||
// CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, %struct.Quad2*)*)(i8* [[FIVE]], i8* [[FOUR]], %struct.Quad2* nonnull [[CALL]])
|
||||
|
||||
|
@ -47,7 +47,7 @@ void test(C *c, const A &a) {
|
|||
}
|
||||
|
||||
// CHECK: [[ONE1:%.*]] = load %struct.A*, %struct.A** [[AADDR:%.*]], align 8
|
||||
// CHECK: [[TWO1:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_5, !invariant.load ![[MD_NUM]]
|
||||
// CHECK: [[TWO1:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_.5, !invariant.load ![[MD_NUM]]
|
||||
// CHECK: [[THREE1:%.*]] = bitcast [[TWOT:%.*]]* [[ZERO1:%.*]] to i8*
|
||||
// CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, %struct.A*)*)(i8* [[THREE1]], i8* [[TWO1]], %struct.A* dereferenceable({{[0-9]+}}) [[ONE1]])
|
||||
// CHECK: store %struct.A* [[ONE1]], %struct.A** [[RESULT:%.*]], align 8
|
||||
|
|
|
@ -4,7 +4,7 @@ c-captured.c:__captured_stmt
|
|||
1
|
||||
1
|
||||
|
||||
c-captured.c:__captured_stmt1
|
||||
c-captured.c:__captured_stmt.1
|
||||
266
|
||||
3
|
||||
1
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
// PGOGEN: @[[DCC:__llvm_profile_counters_debug_captured]] = private global [3 x i64] zeroinitializer
|
||||
// PGOGEN: @[[CSC:"__llvm_profile_counters_c-captured.c:__captured_stmt"]] = private global [2 x i64] zeroinitializer
|
||||
// PGOGEN: @[[C1C:"__llvm_profile_counters_c-captured.c:__captured_stmt1"]] = private global [3 x i64] zeroinitializer
|
||||
// PGOGEN: @[[C1C:"__llvm_profile_counters_c-captured.c:__captured_stmt.1"]] = private global [3 x i64] zeroinitializer
|
||||
|
||||
// PGOALL-LABEL: define void @debug_captured()
|
||||
// PGOGEN: store {{.*}} @[[DCC]], i64 0, i64 0
|
||||
|
@ -31,7 +31,7 @@ void debug_captured() {
|
|||
|
||||
if (x) {} // This is DC1. Checked above.
|
||||
|
||||
// PGOALL-LABEL: define internal void @__captured_stmt1(
|
||||
// PGOALL-LABEL: define internal void @__captured_stmt.1(
|
||||
// PGOGEN: store {{.*}} @[[C1C]], i64 0, i64 0
|
||||
#pragma clang __debug captured
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue