From 0c54dc862e5c9dae681a43299126376757615cab Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Sun, 18 Sep 2016 16:12:04 +0000 Subject: [PATCH] CodeGen: mark ObjC cstring literals as constant These strings are constants, mark them as such. This doesn't matter too much in practice on MachO since the constants are placed into a special section and not referred to directly. llvm-svn: 281854 --- clang/lib/CodeGen/CGObjCMac.cpp | 3 +- clang/test/CodeGenObjC/boxing.m | 12 +++---- clang/test/CodeGenObjC/complex-property.m | 4 +-- clang/test/CodeGenObjC/encode-cstyle-method.m | 2 +- clang/test/CodeGenObjC/encode-test-6.m | 8 ++--- clang/test/CodeGenObjC/encode-test.m | 2 +- clang/test/CodeGenObjC/fragile-arc.m | 8 ++--- clang/test/CodeGenObjC/ivar-layout-64.m | 40 +++++++++++----------- clang/test/CodeGenObjC/metadata-symbols-32.m | 8 ++--- clang/test/CodeGenObjC/metadata-symbols-64.m | 8 ++--- .../CodeGenObjC/nsvalue-objc-boxable-ios-arc.m | 2 +- clang/test/CodeGenObjC/nsvalue-objc-boxable-ios.m | 2 +- .../CodeGenObjC/nsvalue-objc-boxable-mac-arc.m | 2 +- clang/test/CodeGenObjC/nsvalue-objc-boxable-mac.m | 2 +- clang/test/CodeGenObjC/objc-asm-attribute-test.m | 6 ++-- .../test/CodeGenObjC/property-list-in-extension.m | 10 +++--- clang/test/CodeGenObjC/reorder-synthesized-ivars.m | 36 +++++++++---------- clang/test/CodeGenObjCXX/encode.mm | 2 +- clang/test/CodeGenObjCXX/lambda-expressions.mm | 4 +-- 19 files changed, 81 insertions(+), 80 deletions(-) diff --git a/clang/lib/CodeGen/CGObjCMac.cpp b/clang/lib/CodeGen/CGObjCMac.cpp index fad36f6..e3320e9 100644 --- a/clang/lib/CodeGen/CGObjCMac.cpp +++ b/clang/lib/CodeGen/CGObjCMac.cpp @@ -3691,7 +3691,8 @@ CGObjCCommonMac::CreateCStringLiteral(StringRef Name, ObjCLabelType Type) { llvm::Constant *Value = llvm::ConstantDataArray::getString(VMContext, Name); llvm::GlobalVariable *GV = - new llvm::GlobalVariable(CGM.getModule(), Value->getType(), false, + new llvm::GlobalVariable(CGM.getModule(), Value->getType(), + /*isConstant=*/true, llvm::GlobalValue::PrivateLinkage, Value, Label); GV->setSection(Section); GV->setAlignment(CharUnits::One().getQuantity()); diff --git a/clang/test/CodeGenObjC/boxing.m b/clang/test/CodeGenObjC/boxing.m index f205764..d1c7e3d 100644 --- a/clang/test/CodeGenObjC/boxing.m +++ b/clang/test/CodeGenObjC/boxing.m @@ -53,17 +53,17 @@ typedef signed char BOOL; + (id)stringWithUTF8String:(const char *)nullTerminatedCString; @end -// CHECK: [[WithIntMeth:@.*]] = private global [15 x i8] c"numberWithInt:\00" +// CHECK: [[WithIntMeth:@.*]] = private constant [15 x i8] c"numberWithInt:\00" // CHECK: [[WithIntSEL:@.*]] = private externally_initialized global i8* getelementptr inbounds ([15 x i8], [15 x i8]* [[WithIntMeth]] -// CHECK: [[WithCharMeth:@.*]] = private global [16 x i8] c"numberWithChar:\00" +// CHECK: [[WithCharMeth:@.*]] = private constant [16 x i8] c"numberWithChar:\00" // CHECK: [[WithCharSEL:@.*]] = private externally_initialized global i8* getelementptr inbounds ([16 x i8], [16 x i8]* [[WithCharMeth]] -// CHECK: [[WithBoolMeth:@.*]] = private global [16 x i8] c"numberWithBool:\00" +// CHECK: [[WithBoolMeth:@.*]] = private constant [16 x i8] c"numberWithBool:\00" // CHECK: [[WithBoolSEL:@.*]] = private externally_initialized global i8* getelementptr inbounds ([16 x i8], [16 x i8]* [[WithBoolMeth]] -// CHECK: [[WithIntegerMeth:@.*]] = private global [19 x i8] c"numberWithInteger:\00" +// CHECK: [[WithIntegerMeth:@.*]] = private constant [19 x i8] c"numberWithInteger:\00" // CHECK: [[WithIntegerSEL:@.*]] = private externally_initialized global i8* getelementptr inbounds ([19 x i8], [19 x i8]* [[WithIntegerMeth]] -// CHECK: [[WithUnsignedIntegerMeth:@.*]] = private global [27 x i8] c"numberWithUnsignedInteger:\00" +// CHECK: [[WithUnsignedIntegerMeth:@.*]] = private constant [27 x i8] c"numberWithUnsignedInteger:\00" // CHECK: [[WithUnsignedIntegerSEL:@.*]] = private externally_initialized global i8* getelementptr inbounds ([27 x i8], [27 x i8]* [[WithUnsignedIntegerMeth]] -// CHECK: [[stringWithUTF8StringMeth:@.*]] = private global [22 x i8] c"stringWithUTF8String:\00" +// CHECK: [[stringWithUTF8StringMeth:@.*]] = private constant [22 x i8] c"stringWithUTF8String:\00" // CHECK: [[stringWithUTF8StringSEL:@.*]] = private externally_initialized global i8* getelementptr inbounds ([22 x i8], [22 x i8]* [[stringWithUTF8StringMeth]] int main() { diff --git a/clang/test/CodeGenObjC/complex-property.m b/clang/test/CodeGenObjC/complex-property.m index bed0ca6..dd65ca7 100644 --- a/clang/test/CodeGenObjC/complex-property.m +++ b/clang/test/CodeGenObjC/complex-property.m @@ -13,8 +13,8 @@ void f0(A *a) { a.y += a1; } -// CHECK-LP64: private global [13 x i8] c"COMPLEX_PROP -// CHECK-LP64: private global [17 x i8] c"setCOMPLEX_PROP +// CHECK-LP64: private constant [13 x i8] c"COMPLEX_PROP +// CHECK-LP64: private constant [17 x i8] c"setCOMPLEX_PROP // rdar: // 7351147 @interface B diff --git a/clang/test/CodeGenObjC/encode-cstyle-method.m b/clang/test/CodeGenObjC/encode-cstyle-method.m index d0a9921..0fcbf62 100644 --- a/clang/test/CodeGenObjC/encode-cstyle-method.m +++ b/clang/test/CodeGenObjC/encode-cstyle-method.m @@ -8,4 +8,4 @@ @implementation Foo - (id)test:(id )one, id two {return two; } @end -// CHECK-LP64: private global [11 x i8] c"@24@0:8@16 +// CHECK-LP64: private constant [11 x i8] c"@24@0:8@16 diff --git a/clang/test/CodeGenObjC/encode-test-6.m b/clang/test/CodeGenObjC/encode-test-6.m index 02895e7..7e820b4 100644 --- a/clang/test/CodeGenObjC/encode-test-6.m +++ b/clang/test/CodeGenObjC/encode-test-6.m @@ -14,8 +14,8 @@ typedef struct {} Z; -(void)foo:(Z)a: (char*)b : (Z)c : (double) d {} @end -// CHECK: private global [14 x i8] c"v16@0:8{?=}16 -// CHECK: private global [26 x i8] c"v32@0:8{?=}16*16{?=}24d24 +// CHECK: private constant [14 x i8] c"v16@0:8{?=}16 +// CHECK: private constant [26 x i8] c"v32@0:8{?=}16*16{?=}24d24 // rdar://13190095 @@ -34,7 +34,7 @@ typedef BABugExample BABugExampleRedefinition; @synthesize property = _property; @end -// CHECK: private global [24 x i8] c"^{BABugExample=@}16 +// CHECK: private constant [24 x i8] c"^{BABugExample=@}16 // rdar://14408244 @class SCNCamera; @@ -52,7 +52,7 @@ typedef struct C3DCameraStorage _storage; } @end -// CHECK: private global [39 x i8] c"{?=\22presentationInstance\22^{SCNCamera}}\00" +// CHECK: private constant [39 x i8] c"{?=\22presentationInstance\22^{SCNCamera}}\00" // rdar://16655340 int i; diff --git a/clang/test/CodeGenObjC/encode-test.m b/clang/test/CodeGenObjC/encode-test.m index 710e65b..c3ed6de 100644 --- a/clang/test/CodeGenObjC/encode-test.m +++ b/clang/test/CodeGenObjC/encode-test.m @@ -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 constant [16 x i8] c"v12@0:4[3[4@]]8\00" @class Int1; diff --git a/clang/test/CodeGenObjC/fragile-arc.m b/clang/test/CodeGenObjC/fragile-arc.m index ecb955b..e9a022c 100644 --- a/clang/test/CodeGenObjC/fragile-arc.m +++ b/clang/test/CodeGenObjC/fragile-arc.m @@ -16,9 +16,9 @@ // GLOBALS-LABEL @OBJC_METACLASS_A // Strong layout: scan the first word. -// GLOBALS: @OBJC_CLASS_NAME_{{.*}} = private global [2 x i8] c"\01\00" +// GLOBALS: @OBJC_CLASS_NAME_{{.*}} = private constant [2 x i8] c"\01\00" // Weak layout: skip the first word, scan the second word. -// GLOBALS: @OBJC_CLASS_NAME_{{.*}} = private global [2 x i8] c"\11\00" +// GLOBALS: @OBJC_CLASS_NAME_{{.*}} = private constant [2 x i8] c"\11\00" // 0x04002001 // ^ is compiled by ARC (controls interpretation of layouts) @@ -119,9 +119,9 @@ // GLOBALS-LABEL: @OBJC_METACLASS_C // Strong layout: skip five, scan four, skip three, scan seven // 'T' == 0x54, '7' == 0x37 -// GLOBALS: @OBJC_CLASS_NAME_{{.*}} = private global [3 x i8] c"T7\00" +// GLOBALS: @OBJC_CLASS_NAME_{{.*}} = private constant [3 x i8] c"T7\00" // Weak layout: skip nine, scan three -// GLOBALS: @OBJC_CLASS_NAME_{{.*}} = private global [2 x i8] c"\93\00" +// GLOBALS: @OBJC_CLASS_NAME_{{.*}} = private constant [2 x i8] c"\93\00" extern void useBlock(void (^block)(void)); diff --git a/clang/test/CodeGenObjC/ivar-layout-64.m b/clang/test/CodeGenObjC/ivar-layout-64.m index 0866704..4952c3a 100644 --- a/clang/test/CodeGenObjC/ivar-layout-64.m +++ b/clang/test/CodeGenObjC/ivar-layout-64.m @@ -33,9 +33,9 @@ __weak B *f2; @property int p3; @end -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"C\00" -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"\11p\00" -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"!`\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"C\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"\11p\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"!`\00" @implementation C @@ -48,9 +48,9 @@ __weak B *f2; @property (assign) __weak id p2; @end -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"A\00" -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"\11q\10\00" -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"!q\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"A\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"\11q\10\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"!q\00" @implementation A @synthesize p0 = _p0; @@ -62,9 +62,9 @@ __weak B *f2; @property int p3; @end -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"D\00" -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"\11p\00" -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"!`\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"D\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"\11p\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"!`\00" @implementation D @synthesize p3 = _p3; @@ -89,8 +89,8 @@ typedef unsigned int FSCatalogInfoBitmap; } @end -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"NSFileLocationComponent\00" -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"\01\14\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"NSFileLocationComponent\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"\01\14\00" @implementation NSFileLocationComponent @end @@ -108,8 +108,8 @@ typedef unsigned int FSCatalogInfoBitmap; } @end -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"Foo\00" -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"\02\10\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"Foo\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"\02\10\00" @implementation Foo @end @@ -124,8 +124,8 @@ struct __attribute__((packed)) PackedStruct { } @end @implementation Packed @end -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"Packed\00" -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"\01 \00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"Packed\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"\01 \00" // ' ' == 0x20 // Ensure that layout descends into anonymous unions and structs. @@ -142,8 +142,8 @@ struct __attribute__((packed)) PackedStruct { } @end @implementation AnonymousUnion @end -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"AnonymousUnion\00" -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"\02\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"AnonymousUnion\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"\02\00" @interface AnonymousStruct : NSObject { struct { @@ -155,7 +155,7 @@ struct __attribute__((packed)) PackedStruct { } @end @implementation AnonymousStruct @end -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"AnonymousStruct\00" -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"\02\10\00" -// CHECK: @OBJC_CLASS_NAME_{{.*}} = private global {{.*}} c"!\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"AnonymousStruct\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"\02\10\00" +// CHECK: @OBJC_CLASS_NAME_{{.*}} = private constant {{.*}} c"!\00" // '!' == 0x21 diff --git a/clang/test/CodeGenObjC/metadata-symbols-32.m b/clang/test/CodeGenObjC/metadata-symbols-32.m index c75f641..3951c29 100644 --- a/clang/test/CodeGenObjC/metadata-symbols-32.m +++ b/clang/test/CodeGenObjC/metadata-symbols-32.m @@ -2,11 +2,11 @@ // CHECK: .lazy_reference .objc_class_name_J0 -// CHECK: @OBJC_METH_VAR_NAME_{{[0-9]*}} = private global {{.*}}section "__TEXT,__cstring,cstring_literals", align 1 -// CHECK: @OBJC_METH_VAR_TYPE_{{[0-9]*}} = private global {{.*}}section "__TEXT,__cstring,cstring_literals", align 1 +// CHECK: @OBJC_METH_VAR_NAME_{{[0-9]*}} = private constant {{.*}}section "__TEXT,__cstring,cstring_literals", align 1 +// CHECK: @OBJC_METH_VAR_TYPE_{{[0-9]*}} = private constant {{.*}}section "__TEXT,__cstring,cstring_literals", align 1 // CHECK: @"\01l_OBJC_PROTOCOLEXT_P" = private global // CHECK-NOT: section -// CHECK: @OBJC_CLASS_NAME_{{[0-9]*}} = private global {{.*}}section "__TEXT,__cstring,cstring_literals", align 1 +// CHECK: @OBJC_CLASS_NAME_{{[0-9]*}} = private constant {{.*}}section "__TEXT,__cstring,cstring_literals", align 1 // CHECK: @OBJC_PROTOCOL_INSTANCE_METHODS_P = private global {{.*}}section "__OBJC,__cat_inst_meth,regular,no_dead_strip", align 4 // CHECK: @OBJC_PROTOCOL_CLASS_METHODS_P = private global {{.*}}section "__OBJC,__cat_cls_meth,regular,no_dead_strip", align 4 // CHECK: @OBJC_PROTOCOL_P = private global {{.*}}section "__OBJC,__protocol,regular,no_dead_strip", align 4 @@ -15,7 +15,7 @@ // CHECK: @OBJC_METACLASS_A = private global {{.*}}section "__OBJC,__meta_class,regular,no_dead_strip", align 4 // CHECK: @OBJC_INSTANCE_VARIABLES_A = private global {{.*}}section "__OBJC,__instance_vars,regular,no_dead_strip", align 4 // CHECK: @OBJC_INSTANCE_METHODS_A = private global {{.*}}section "__OBJC,__inst_meth,regular,no_dead_strip", align 4 -// CHECK: @OBJC_PROP_NAME_ATTR_{{[0-9]*}} = private global {{.*}}section "__TEXT,__cstring,cstring_literals", align 1 +// CHECK: @OBJC_PROP_NAME_ATTR_{{[0-9]*}} = private constant {{.*}}section "__TEXT,__cstring,cstring_literals", align 1 // CHECK: @"\01l_OBJC_$_PROP_LIST_A" = private global {{.*}}section "__OBJC,__property,regular,no_dead_strip", align 4 // CHECK: @OBJC_CLASSEXT_A = private global {{.*}}section "__OBJC,__class_ext,regular,no_dead_strip", align 4 // CHECK: @OBJC_CLASS_A = private global {{.*}}section "__OBJC,__class,regular,no_dead_strip", align 4 diff --git a/clang/test/CodeGenObjC/metadata-symbols-64.m b/clang/test/CodeGenObjC/metadata-symbols-64.m index 9b74237..a60dc38 100644 --- a/clang/test/CodeGenObjC/metadata-symbols-64.m +++ b/clang/test/CodeGenObjC/metadata-symbols-64.m @@ -5,9 +5,9 @@ // CHECK: @_objc_empty_vtable = external global // CHECK: @"OBJC_CLASS_$_A" = global // CHECK: @"OBJC_METACLASS_$_A" = global {{.*}} section "__DATA, __objc_data", align 8 -// CHECK: @OBJC_CLASS_NAME_{{[0-9]*}} = private global {{.*}} section "__TEXT,__objc_classname,cstring_literals", align 1 -// CHECK: @OBJC_METH_VAR_NAME_{{[0-9]*}} = private global {{.*}} section "__TEXT,__objc_methname,cstring_literals", align 1 -// CHECK: @OBJC_METH_VAR_TYPE_{{[0-9]*}} = private global {{.*}} section "__TEXT,__objc_methtype,cstring_literals", align 1 +// CHECK: @OBJC_CLASS_NAME_{{[0-9]*}} = private constant {{.*}} section "__TEXT,__objc_classname,cstring_literals", align 1 +// CHECK: @OBJC_METH_VAR_NAME_{{[0-9]*}} = private constant {{.*}} section "__TEXT,__objc_methname,cstring_literals", align 1 +// CHECK: @OBJC_METH_VAR_TYPE_{{[0-9]*}} = private constant {{.*}} section "__TEXT,__objc_methtype,cstring_literals", align 1 // CHECK: @"\01l_OBJC_$_CLASS_METHODS_A" = private global {{.*}} section "__DATA, __objc_const", align 8 // CHECK: @"\01l_OBJC_$_PROTOCOL_INSTANCE_METHODS_P" = private global {{.*}} section "__DATA, __objc_const", align 8 // CHECK: @"\01l_OBJC_$_PROTOCOL_CLASS_METHODS_P" = private global {{.*}} section "__DATA, __objc_const", align 8 @@ -17,7 +17,7 @@ // CHECK: @"\01l_OBJC_METACLASS_RO_$_A" = private global {{.*}} section "__DATA, __objc_const", align 8 // CHECK: @"\01l_OBJC_$_INSTANCE_METHODS_A" = private global {{.*}} section "__DATA, __objc_const", align 8 // CHECK: @"\01l_OBJC_$_INSTANCE_VARIABLES_A" = private global {{.*}} section "__DATA, __objc_const", align 8 -// CHECK: @OBJC_PROP_NAME_ATTR_{{[0-9]*}} = private global {{.*}} section "__TEXT,__cstring,cstring_literals", align 1 +// CHECK: @OBJC_PROP_NAME_ATTR_{{[0-9]*}} = private constant {{.*}} section "__TEXT,__cstring,cstring_literals", align 1 // CHECK: @"\01l_OBJC_$_PROP_LIST_A" = private global {{.*}} section "__DATA, __objc_const", align 8 // CHECK: @"\01l_OBJC_CLASS_RO_$_A" = private global {{.*}} section "__DATA, __objc_const", align 8 // CHECK: @"\01l_OBJC_$_CATEGORY_INSTANCE_METHODS_A_$_Cat" = private global {{.*}} section "__DATA, __objc_const", align 8 diff --git a/clang/test/CodeGenObjC/nsvalue-objc-boxable-ios-arc.m b/clang/test/CodeGenObjC/nsvalue-objc-boxable-ios-arc.m index 75e04db..f0f757b 100644 --- a/clang/test/CodeGenObjC/nsvalue-objc-boxable-ios-arc.m +++ b/clang/test/CodeGenObjC/nsvalue-objc-boxable-ios-arc.m @@ -5,7 +5,7 @@ // CHECK: [[CLASS:@.*]] = external global %struct._class_t // CHECK: [[NSVALUE:@.*]] = {{.*}}[[CLASS]]{{.*}} // CHECK: [[RANGE_STR:.*]] = {{.*}}_NSRange=II{{.*}} -// CHECK: [[METH:@.*]] = private global{{.*}}valueWithBytes:objCType:{{.*}} +// CHECK: [[METH:@.*]] = private constant {{.*}}valueWithBytes:objCType:{{.*}} // CHECK: [[VALUE_SEL:@.*]] = {{.*}}[[METH]]{{.*}} // CHECK: [[POINT_STR:.*]] = {{.*}}CGPoint=dd{{.*}} // CHECK: [[SIZE_STR:.*]] = {{.*}}CGSize=dd{{.*}} diff --git a/clang/test/CodeGenObjC/nsvalue-objc-boxable-ios.m b/clang/test/CodeGenObjC/nsvalue-objc-boxable-ios.m index 3443bab..b4f69b5 100644 --- a/clang/test/CodeGenObjC/nsvalue-objc-boxable-ios.m +++ b/clang/test/CodeGenObjC/nsvalue-objc-boxable-ios.m @@ -5,7 +5,7 @@ // CHECK: [[CLASS:@.*]] = external global %struct._class_t // CHECK: [[NSVALUE:@.*]] = {{.*}}[[CLASS]]{{.*}} // CHECK: [[RANGE_STR:.*]] = {{.*}}_NSRange=II{{.*}} -// CHECK: [[METH:@.*]] = private global{{.*}}valueWithBytes:objCType:{{.*}} +// CHECK: [[METH:@.*]] = private constant {{.*}}valueWithBytes:objCType:{{.*}} // CHECK: [[VALUE_SEL:@.*]] = {{.*}}[[METH]]{{.*}} // CHECK: [[POINT_STR:.*]] = {{.*}}CGPoint=dd{{.*}} // CHECK: [[SIZE_STR:.*]] = {{.*}}CGSize=dd{{.*}} diff --git a/clang/test/CodeGenObjC/nsvalue-objc-boxable-mac-arc.m b/clang/test/CodeGenObjC/nsvalue-objc-boxable-mac-arc.m index 92c91d7..4c1f53f 100644 --- a/clang/test/CodeGenObjC/nsvalue-objc-boxable-mac-arc.m +++ b/clang/test/CodeGenObjC/nsvalue-objc-boxable-mac-arc.m @@ -5,7 +5,7 @@ // CHECK: [[CLASS:@.*]] = external global %struct._class_t // CHECK: [[NSVALUE:@.*]] = {{.*}}[[CLASS]]{{.*}} // CHECK: [[RANGE_STR:.*]] = {{.*}}_NSRange=QQ{{.*}} -// CHECK: [[METH:@.*]] = private global{{.*}}valueWithBytes:objCType:{{.*}} +// CHECK: [[METH:@.*]] = private constant {{.*}}valueWithBytes:objCType:{{.*}} // CHECK: [[VALUE_SEL:@.*]] = {{.*}}[[METH]]{{.*}} // CHECK: [[POINT_STR:.*]] = {{.*}}_NSPoint=dd{{.*}} // CHECK: [[SIZE_STR:.*]] = {{.*}}_NSSize=dd{{.*}} diff --git a/clang/test/CodeGenObjC/nsvalue-objc-boxable-mac.m b/clang/test/CodeGenObjC/nsvalue-objc-boxable-mac.m index da0ae7a..0f7c37d 100644 --- a/clang/test/CodeGenObjC/nsvalue-objc-boxable-mac.m +++ b/clang/test/CodeGenObjC/nsvalue-objc-boxable-mac.m @@ -5,7 +5,7 @@ // CHECK: [[CLASS:@.*]] = external global %struct._class_t // CHECK: [[NSVALUE:@.*]] = {{.*}}[[CLASS]]{{.*}} // CHECK: [[RANGE_STR:.*]] = {{.*}}_NSRange=QQ{{.*}} -// CHECK: [[METH:@.*]] = private global{{.*}}valueWithBytes:objCType:{{.*}} +// CHECK: [[METH:@.*]] = private constant {{.*}}valueWithBytes:objCType:{{.*}} // CHECK: [[VALUE_SEL:@.*]] = {{.*}}[[METH]]{{.*}} // CHECK: [[POINT_STR:.*]] = {{.*}}_NSPoint=dd{{.*}} // CHECK: [[SIZE_STR:.*]] = {{.*}}_NSSize=dd{{.*}} diff --git a/clang/test/CodeGenObjC/objc-asm-attribute-test.m b/clang/test/CodeGenObjC/objc-asm-attribute-test.m index 7b3a64d..a427e57 100644 --- a/clang/test/CodeGenObjC/objc-asm-attribute-test.m +++ b/clang/test/CodeGenObjC/objc-asm-attribute-test.m @@ -59,9 +59,9 @@ id Test16877359() { // CHECK: @"OBJC_CLASS_$_MySecretNamespace.Message" = global %struct._class_t // CHECK: @"OBJC_METACLASS_$_MySecretNamespace.Message" = global %struct._class_t -// CHECK: private global [42 x i8] c"T@\22MySecretNamespace.Message\22,&,V_msgProp\00" -// CHECK: private global [76 x i8] c"T@\22MySecretNamespace.Message\22,&,V_msgProtoProp\00" -// CHECK: private global [50 x i8] c"T@\22\22,&,V_idProtoProp\00" +// CHECK: private constant [42 x i8] c"T@\22MySecretNamespace.Message\22,&,V_msgProp\00" +// CHECK: private constant [76 x i8] c"T@\22MySecretNamespace.Message\22,&,V_msgProtoProp\00" +// CHECK: private constant [50 x i8] c"T@\22\22,&,V_idProtoProp\00" // CHECK: @"OBJC_CLASS_$_foo" = external global %struct._class_t // CHECK: define internal i8* @"\01-[Message MyMethod]" diff --git a/clang/test/CodeGenObjC/property-list-in-extension.m b/clang/test/CodeGenObjC/property-list-in-extension.m index 878745e..fbdb786 100644 --- a/clang/test/CodeGenObjC/property-list-in-extension.m +++ b/clang/test/CodeGenObjC/property-list-in-extension.m @@ -17,7 +17,7 @@ __attribute__((objc_root_class)) @end // Metadata for _myprop should be present, and PROP_LIST for Foo should have // only one entry. -// CHECK: = private global [12 x i8] c"Ti,V_myprop\00", +// CHECK: = private constant [12 x i8] c"Ti,V_myprop\00", // CHECK: @"\01l_OBJC_$_PROP_LIST_Foo" = private global { i32, i32, [1 x %struct._prop_t] } // Readonly property in interface made readwrite in a category: @@ -40,8 +40,8 @@ __attribute__((objc_root_class)) // Metadata for _evolvingprop should be present, and PROP_LIST for FooRO should // still have only one entry, and the one entry should point to the version of // the property with a getter and setter. -// CHECK: [[evolvinggetter:@OBJC_PROP_NAME_ATTR[^ ]+]] = private global [13 x i8] c"evolvingprop\00" -// CHECK: [[evolvingsetter:@OBJC_PROP_NAME_ATTR[^ ]+]] = private global [18 x i8] c"Ti,V_evolvingprop\00", -// CHECK: [[booleanmetadata:@OBJC_PROP_NAME_ATTR[^ ]+]] = private global [34 x i8] c"Ti,N,GisBooleanProp,V_booleanProp\00" -// CHECK: [[weakmetadata:@OBJC_PROP_NAME_ATTR[^ ]+]] = private global [23 x i8] c"T@\22Foo\22,W,N,V_weakProp\00" +// CHECK: [[evolvinggetter:@OBJC_PROP_NAME_ATTR[^ ]+]] = private constant [13 x i8] c"evolvingprop\00" +// CHECK: [[evolvingsetter:@OBJC_PROP_NAME_ATTR[^ ]+]] = private constant [18 x i8] c"Ti,V_evolvingprop\00", +// CHECK: [[booleanmetadata:@OBJC_PROP_NAME_ATTR[^ ]+]] = private constant [34 x i8] c"Ti,N,GisBooleanProp,V_booleanProp\00" +// CHECK: [[weakmetadata:@OBJC_PROP_NAME_ATTR[^ ]+]] = private constant [23 x i8] c"T@\22Foo\22,W,N,V_weakProp\00" // CHECK: @"\01l_OBJC_$_PROP_LIST_FooRO" = private global { i32, i32, [3 x %struct._prop_t] }{{.*}}[[evolvinggetter]]{{.*}}[[evolvingsetter]]{{.*}}[[booleanmetadata]] diff --git a/clang/test/CodeGenObjC/reorder-synthesized-ivars.m b/clang/test/CodeGenObjC/reorder-synthesized-ivars.m index 958d447..84f65ea 100644 --- a/clang/test/CodeGenObjC/reorder-synthesized-ivars.m +++ b/clang/test/CodeGenObjC/reorder-synthesized-ivars.m @@ -38,21 +38,21 @@ typedef signed char BOOL; } @end -// CHECK: @{{.*}} = private global [10 x i8] c"_boolean1 -// CHECK-NEXT: @{{.*}} = private global [10 x i8] c"_boolean2 -// CHECK-NEXT: @{{.*}} = private global [10 x i8] c"_boolean3 -// CHECK-NEXT: @{{.*}} = private global [10 x i8] c"_boolean4 -// CHECK-NEXT: @{{.*}} = private global [10 x i8] c"_boolean5 -// CHECK-NEXT: @{{.*}} = private global [10 x i8] c"_boolean6 -// CHECK-NEXT: @{{.*}} = private global [10 x i8] c"_boolean7 -// CHECK-NEXT: @{{.*}} = private global [10 x i8] c"_boolean8 -// CHECK-NEXT: @{{.*}} = private global [10 x i8] c"_boolean9 -// CHECK-NEXT: @{{.*}} = private global [9 x i8] c"_object1 -// CHECK-NEXT: @{{.*}} = private global [9 x i8] c"_object2 -// CHECK-NEXT: @{{.*}} = private global [9 x i8] c"_object3 -// CHECK-NEXT: @{{.*}} = private global [9 x i8] c"_object4 -// CHECK-NEXT: @{{.*}} = private global [9 x i8] c"_object5 -// CHECK-NEXT: @{{.*}} = private global [9 x i8] c"_object6 -// CHECK-NEXT: @{{.*}} = private global [9 x i8] c"_object7 -// CHECK-NEXT: @{{.*}} = private global [9 x i8] c"_object8 -// CHECK-NEXT: @{{.*}} = private global [9 x i8] c"_object9 +// CHECK: @{{.*}} = private constant [10 x i8] c"_boolean1 +// CHECK-NEXT: @{{.*}} = private constant [10 x i8] c"_boolean2 +// CHECK-NEXT: @{{.*}} = private constant [10 x i8] c"_boolean3 +// CHECK-NEXT: @{{.*}} = private constant [10 x i8] c"_boolean4 +// CHECK-NEXT: @{{.*}} = private constant [10 x i8] c"_boolean5 +// CHECK-NEXT: @{{.*}} = private constant [10 x i8] c"_boolean6 +// CHECK-NEXT: @{{.*}} = private constant [10 x i8] c"_boolean7 +// CHECK-NEXT: @{{.*}} = private constant [10 x i8] c"_boolean8 +// CHECK-NEXT: @{{.*}} = private constant [10 x i8] c"_boolean9 +// CHECK-NEXT: @{{.*}} = private constant [9 x i8] c"_object1 +// CHECK-NEXT: @{{.*}} = private constant [9 x i8] c"_object2 +// CHECK-NEXT: @{{.*}} = private constant [9 x i8] c"_object3 +// CHECK-NEXT: @{{.*}} = private constant [9 x i8] c"_object4 +// CHECK-NEXT: @{{.*}} = private constant [9 x i8] c"_object5 +// CHECK-NEXT: @{{.*}} = private constant [9 x i8] c"_object6 +// CHECK-NEXT: @{{.*}} = private constant [9 x i8] c"_object7 +// CHECK-NEXT: @{{.*}} = private constant [9 x i8] c"_object8 +// CHECK-NEXT: @{{.*}} = private constant [9 x i8] c"_object9 diff --git a/clang/test/CodeGenObjCXX/encode.mm b/clang/test/CodeGenObjCXX/encode.mm index 6b7fc70..26d682d 100644 --- a/clang/test/CodeGenObjCXX/encode.mm +++ b/clang/test/CodeGenObjCXX/encode.mm @@ -213,7 +213,7 @@ public: dynamic_class dynamic_class_ivar; } @end -// CHECK: private global [41 x i8] c"{dynamic_class=\22_vptr$dynamic_class\22^^?}\00" +// CHECK: private constant [41 x i8] c"{dynamic_class=\22_vptr$dynamic_class\22^^?}\00" namespace PR17142 { struct A { virtual ~A(); }; diff --git a/clang/test/CodeGenObjCXX/lambda-expressions.mm b/clang/test/CodeGenObjCXX/lambda-expressions.mm index d987083..31e8473 100644 --- a/clang/test/CodeGenObjCXX/lambda-expressions.mm +++ b/clang/test/CodeGenObjCXX/lambda-expressions.mm @@ -6,8 +6,8 @@ fp f() { auto x = []{ return 3; }; return x; } // ARC: %[[LAMBDACLASS:.*]] = type { i32 } -// MRC: @OBJC_METH_VAR_NAME{{.*}} = private global [5 x i8] c"copy\00" -// MRC: @OBJC_METH_VAR_NAME{{.*}} = private global [12 x i8] c"autorelease\00" +// MRC: @OBJC_METH_VAR_NAME{{.*}} = private constant [5 x i8] c"copy\00" +// MRC: @OBJC_METH_VAR_NAME{{.*}} = private constant [12 x i8] c"autorelease\00" // MRC-LABEL: define i32 ()* @_Z1fv( // MRC-LABEL: define internal i32 ()* @"_ZZ1fvENK3$_0cvU13block_pointerFivEEv" // MRC: store i8* bitcast (i8** @_NSConcreteStackBlock to i8*) -- 2.7.4