Skip to content
This repository was archived by the owner on Mar 28, 2020. It is now read-only.

Commit 971729b

Browse files
committed
Merge remote-tracking branch 'origin/swift-5.1-branch' into stable
2 parents 3b69e77 + bb1966e commit 971729b

13 files changed

+46
-22
lines changed

lib/CodeGen/CGDecl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1112,7 +1112,7 @@ static llvm::Constant *constStructWithPadding(CodeGenModule &CGM,
11121112
}
11131113
if (NestedIntact && Values.size() == STy->getNumElements())
11141114
return constant;
1115-
return llvm::ConstantStruct::getAnon(Values);
1115+
return llvm::ConstantStruct::getAnon(Values, STy->isPacked());
11161116
}
11171117

11181118
/// Replace all padding bytes in a given constant with either a pattern byte or

lib/CodeGen/CGObjCMac.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6812,7 +6812,7 @@ llvm::Constant *CGObjCNonFragileABIMac::GetOrEmitProtocolRef(
68126812
// reference or not. At module finalization we add the empty
68136813
// contents for protocols which were referenced but never defined.
68146814
llvm::SmallString<64> Protocol;
6815-
llvm::raw_svector_ostream(Protocol) << "\01l_OBJC_PROTOCOL_$_"
6815+
llvm::raw_svector_ostream(Protocol) << "_OBJC_PROTOCOL_$_"
68166816
<< PD->getObjCRuntimeNameAsString();
68176817

68186818
Entry = new llvm::GlobalVariable(CGM.getModule(), ObjCTypes.ProtocolnfABITy,
@@ -6903,7 +6903,7 @@ llvm::Constant *CGObjCNonFragileABIMac::GetOrEmitProtocol(
69036903
} else {
69046904
llvm::SmallString<64> symbolName;
69056905
llvm::raw_svector_ostream(symbolName)
6906-
<< "\01l_OBJC_PROTOCOL_$_" << PD->getObjCRuntimeNameAsString();
6906+
<< "_OBJC_PROTOCOL_$_" << PD->getObjCRuntimeNameAsString();
69076907

69086908
Entry = values.finishAndCreateGlobal(symbolName, CGM.getPointerAlign(),
69096909
/*constant*/ false,
@@ -6919,7 +6919,7 @@ llvm::Constant *CGObjCNonFragileABIMac::GetOrEmitProtocol(
69196919
// Use this protocol meta-data to build protocol list table in section
69206920
// __DATA, __objc_protolist
69216921
llvm::SmallString<64> ProtocolRef;
6922-
llvm::raw_svector_ostream(ProtocolRef) << "\01l_OBJC_LABEL_PROTOCOL_$_"
6922+
llvm::raw_svector_ostream(ProtocolRef) << "_OBJC_LABEL_PROTOCOL_$_"
69236923
<< PD->getObjCRuntimeNameAsString();
69246924

69256925
llvm::GlobalVariable *PTGV =

test/CodeGenCXX/auto-var-init.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ struct paddedpacked { char c; int i; } __attribute__((packed));
8585
// PATTERN: @__const.test_paddedpackedarray_custom.custom = private unnamed_addr constant %struct.paddedpackedarray { [2 x %struct.paddedpacked] [%struct.paddedpacked <{ i8 42, i32 13371337 }>, %struct.paddedpacked <{ i8 43, i32 13371338 }>] }, align 1
8686
// ZERO: @__const.test_paddedpackedarray_custom.custom = private unnamed_addr constant %struct.paddedpackedarray { [2 x %struct.paddedpacked] [%struct.paddedpacked <{ i8 42, i32 13371337 }>, %struct.paddedpacked <{ i8 43, i32 13371338 }>] }, align 1
8787
struct paddedpackedarray { struct paddedpacked p[2]; };
88+
// PATTERN-O0: @__const.test_unpackedinpacked_uninit.uninit = private unnamed_addr constant <{ { i8, [3 x i8], i32 }, i8 }> <{ { i8, [3 x i8], i32 } { i8 -86, [3 x i8] c"\AA\AA\AA", i32 -1431655766 }, i8 -86 }>, align 1
89+
struct unpackedinpacked { padded a; char b; } __attribute__((packed));
8890
// PATTERN-O0: @__const.test_paddednested_uninit.uninit = private unnamed_addr constant { { i8, [3 x i8], i32 }, { i8, [3 x i8], i32 } } { { i8, [3 x i8], i32 } { i8 -86, [3 x i8] c"\AA\AA\AA", i32 -1431655766 }, { i8, [3 x i8], i32 } { i8 -86, [3 x i8] c"\AA\AA\AA", i32 -1431655766 } }, align 4
8991
// PATTERN: @__const.test_paddednested_custom.custom = private unnamed_addr constant { { i8, [3 x i8], i32 }, { i8, [3 x i8], i32 } } { { i8, [3 x i8], i32 } { i8 42, [3 x i8] c"\AA\AA\AA", i32 13371337 }, { i8, [3 x i8], i32 } { i8 43, [3 x i8] c"\AA\AA\AA", i32 13371338 } }, align 4
9092
// ZERO: @__const.test_paddednested_custom.custom = private unnamed_addr constant { { i8, [3 x i8], i32 }, { i8, [3 x i8], i32 } } { { i8, [3 x i8], i32 } { i8 42, [3 x i8] zeroinitializer, i32 13371337 }, { i8, [3 x i8], i32 } { i8 43, [3 x i8] zeroinitializer, i32 13371338 } }, align 4
@@ -779,6 +781,10 @@ TEST_CUSTOM(paddedpackedarray, paddedpackedarray, { {{ 42, 13371337 }, { 43, 133
779781
// CHECK-NEXT: call void @llvm.memcpy{{.*}}({{.*}}@__const.test_paddedpackedarray_custom.custom
780782
// CHECK-NEXT: call void @{{.*}}used{{.*}}%custom)
781783

784+
TEST_UNINIT(unpackedinpacked, unpackedinpacked);
785+
// CHECK-LABEL: @test_unpackedinpacked_uninit()
786+
// PATTERN-O0: call void @llvm.memcpy{{.*}}, i64 9, i1 false)
787+
782788
TEST_UNINIT(paddednested, paddednested);
783789
// CHECK-LABEL: @test_paddednested_uninit()
784790
// CHECK: %uninit = alloca %struct.paddednested, align

test/CodeGenObjC/forward-protocol-metadata-symbols.m

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,15 @@ int main() {
1818
return 0;
1919
}
2020

21-
// CHECK: @"\01l_OBJC_PROTOCOL_$_P0" = weak hidden global
21+
// CHECK: @"_OBJC_PROTOCOL_$_P0" = weak hidden global
22+
// CHECK: @"_OBJC_LABEL_PROTOCOL_$_P0" = weak hidden global
2223
// CHECK: @"\01l_OBJC_CLASS_PROTOCOLS_$_A" = private global
2324
// CHECK: @"\01l_OBJC_LABEL_PROTOCOL_$_P0" = weak hidden global
2425
// CHECK: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P0" = weak hidden global
2526

2627
// CHECK: llvm.used = appending global [3 x i8*]
27-
// CHECK-SAME: "\01l_OBJC_PROTOCOL_$_P0"
28-
// CHECK-SAME: "\01l_OBJC_LABEL_PROTOCOL_$_P0"
28+
// CHECK-SAME: "_OBJC_PROTOCOL_$_P0"
29+
// CHECK-SAME: "_OBJC_LABEL_PROTOCOL_$_P0"
2930
// CHECK-SAME: "\01l_OBJC_PROTOCOL_REFERENCE_$_P0"
3031

3132
// CHECK: llvm.compiler.used = appending global [7 x i8*]

test/CodeGenObjC/hidden-visibility.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// CHECK: @"OBJC_IVAR_$_I.P" = hidden
33
// CHECK: @"OBJC_CLASS_$_I" = hidden
44
// CHECK: @"OBJC_METACLASS_$_I" = hidden
5-
// CHECK: @"\01l_OBJC_PROTOCOL_$_Prot0" = weak hidden
5+
// CHECK: @"_OBJC_PROTOCOL_$_Prot0" = weak hidden
66

77
@interface I {
88
int P;

test/CodeGenObjC/metadata-class-properties.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// RUN: %clang_cc1 -triple x86_64-apple-macosx10.11 -emit-llvm -o - -fobjc-runtime=macosx-fragile-10.5 %s | FileCheck -check-prefix=CHECK-FRAGILE %s
44

55
// CHECK: @"\01l_OBJC_$_CLASS_PROP_LIST_Proto" = private global {{.*}} section "__DATA, __objc_const", align 8
6-
// CHECK: @"\01l_OBJC_PROTOCOL_$_Proto" = {{.*}} global %struct._protocol_t { {{.*}} i32 96, i32 {{.*}} @"\01l_OBJC_$_CLASS_PROP_LIST_Proto" {{.*}} }
6+
// CHECK: @"_OBJC_PROTOCOL_$_Proto" = {{.*}} global %struct._protocol_t { {{.*}} i32 96, i32 {{.*}} @"\01l_OBJC_$_CLASS_PROP_LIST_Proto" {{.*}} }
77
// CHECK: @"\01l_OBJC_$_CLASS_PROP_LIST_Foo_$_Category" = private global {{.*}} section "__DATA, __objc_const", align 8
88
// CHECK: @"\01l_OBJC_$_CATEGORY_Foo_$_Category" = private global %struct._category_t { {{.*}} @"\01l_OBJC_$_CLASS_PROP_LIST_Foo_$_Category" {{.*}}, i32 64 }, section "__DATA, __objc_const", align 8
99

@@ -13,7 +13,7 @@
1313
// CHECK: !{i32 1, !"Objective-C Class Properties", i32 64}
1414

1515
// CHECK-NULL-NOT: @"\01l_OBJC_$_CLASS_PROP_LIST_Proto"
16-
// CHECK-NULL: @"\01l_OBJC_PROTOCOL_$_Proto" = {{.*}} global %struct._protocol_t { {{.*}} %struct._prop_list_t* null, i32 96, i32 {{.*}} %struct._prop_list_t* null }
16+
// CHECK-NULL: @"_OBJC_PROTOCOL_$_Proto" = {{.*}} global %struct._protocol_t { {{.*}} %struct._prop_list_t* null, i32 96, i32 {{.*}} %struct._prop_list_t* null }
1717
// CHECK-NULL-NOT: @"\01l_OBJC_$_CLASS_PROP_LIST_Foo_$_Category" = private global {{.*}} section "__DATA, __objc_const", align 8
1818
// CHECK-NULL: @"\01l_OBJC_$_CATEGORY_Foo_$_Category" = private global %struct._category_t { {{.*}} %struct._prop_list_t* null, %struct._prop_list_t* null, {{.*}} }, section "__DATA, __objc_const", align 8
1919

test/CodeGenObjC/metadata-symbols-64.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
// CHECK: @"\01l_OBJC_$_CLASS_METHODS_A" = private global {{.*}} section "__DATA, __objc_const", align 8
1212
// CHECK: @"\01l_OBJC_$_PROTOCOL_INSTANCE_METHODS_P" = private global {{.*}} section "__DATA, __objc_const", align 8
1313
// CHECK: @"\01l_OBJC_$_PROTOCOL_CLASS_METHODS_P" = private global {{.*}} section "__DATA, __objc_const", align 8
14-
// CHECK: @"\01l_OBJC_PROTOCOL_$_P" = weak hidden global {{.*}}, align 8
15-
// CHECK: @"\01l_OBJC_LABEL_PROTOCOL_$_P" = weak hidden global {{.*}} section "__DATA,__objc_protolist,coalesced,no_dead_strip", align 8
14+
// CHECK: @"_OBJC_PROTOCOL_$_P" = weak hidden global {{.*}}, align 8
15+
// CHECK: @"_OBJC_LABEL_PROTOCOL_$_P" = weak hidden global {{.*}} section "__DATA,__objc_protolist,coalesced,no_dead_strip", align 8
1616
// CHECK: @"\01l_OBJC_CLASS_PROTOCOLS_$_A" = private global {{.*}} section "__DATA, __objc_const", align 8
1717
// CHECK: @"\01l_OBJC_METACLASS_RO_$_A" = private global {{.*}} section "__DATA, __objc_const", align 8
1818
// CHECK: @"\01l_OBJC_$_INSTANCE_METHODS_A" = private global {{.*}} section "__DATA, __objc_const", align 8

test/CodeGenObjC/protocol-comdat.m

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ _Bool f(void) {
1818
return @protocol(Q) == @protocol(R);
1919
}
2020

21-
// CHECK: $"\01l_OBJC_PROTOCOL_$_P" = comdat any
22-
// CHECK: $"\01l_OBJC_LABEL_PROTOCOL_$_P" = comdat any
21+
// CHECK: $"_OBJC_PROTOCOL_$_P" = comdat any
22+
// CHECK: $"_OBJC_LABEL_PROTOCOL_$_P" = comdat any
2323
// CHECK: $"\01l_OBJC_PROTOCOL_REFERENCE_$_Q" = comdat any
2424
// CHECK: $"\01l_OBJC_PROTOCOL_REFERENCE_$_R" = comdat any
2525

26-
// CHECK: @"\01l_OBJC_PROTOCOL_$_P" = {{.*}}, comdat
27-
// CHECK: @"\01l_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, comdat
26+
// CHECK: @"_OBJC_PROTOCOL_$_P" = {{.*}}, comdat
27+
// CHECK: @"_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, comdat
2828

test/CodeGenObjC/protocol-in-extended-class.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ -(void) Meth {
2424
}
2525
@end
2626

27-
// CHECK-LP64: l_OBJC_PROTOCOL_$_ExtendedProtocol:
27+
// CHECK-LP64: __OBJC_PROTOCOL_$_ExtendedProtocol:
2828

2929
// CHECK-LP32: L_OBJC_PROTOCOL_ExtendedProtocol:

test/CodeGenObjC/protocols.m

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,19 @@
1-
// RUN: %clang_cc1 -emit-llvm-only %s
1+
// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -emit-llvm -o - %s | FileCheck %s
2+
3+
// HECK: @[[PROTO_P1:"_OBJC_PROTOCOL_$_P1"]] = weak hidden
4+
// CHECK: @[[PROTO_P1:"_OBJC_PROTOCOL_\$_P1"]] = weak hidden
5+
// CHECK: @[[LABEL_PROTO_P1:"_OBJC_LABEL_PROTOCOL_\$_P1"]] = weak hidden global %{{.*}}* @[[PROTO_P1]]
6+
// CHECK: @[[PROTO_P2:"_OBJC_PROTOCOL_\$_P2"]] = weak hidden
7+
// CHECK: @[[LABEL_PROTO_P2:"_OBJC_LABEL_PROTOCOL_\$_P2"]] = weak hidden global %{{.*}}* @[[PROTO_P2]]
8+
// CHECK: @"\01l_OBJC_$_PROTOCOL_REFS_P3" = private global { i64, [3 x %{{.*}}] } { i64 2, [3 x %{{.*}}*] [%{{.*}}* @[[PROTO_P1]], %{{.*}}* @[[PROTO_P2]], %{{.*}}* null] }
9+
// CHECK: @[[PROTO_P3:"_OBJC_PROTOCOL_\$_P3"]] = weak hidden
10+
// CHECK: @[[LABEL_PROTO_P3:"_OBJC_LABEL_PROTOCOL_\$_P3"]] = weak hidden global %{{.*}}* @[[PROTO_P3]]
11+
// CHECK: "\01l_OBJC_PROTOCOL_REFERENCE_$_P3" = weak hidden global %{{.*}}* bitcast (%{{.*}}* @[[PROTO_P3]] to %{{.*}}*)
12+
// CHECK: @[[PROTO_P0:"_OBJC_PROTOCOL_\$_P0"]] = weak hidden
13+
// CHECK: @[[LABEL_PROTO_P0:"_OBJC_LABEL_PROTOCOL_\$_P0"]] = weak hidden global %{{.*}}* @[[PROTO_P0]]
14+
// CHECK: "\01l_OBJC_PROTOCOL_REFERENCE_$_P0" = weak hidden global %0* bitcast (%{{.*}}* @[[PROTO_P0]] to %{{.*}}*)
15+
// CHECK: "\01l_OBJC_PROTOCOL_REFERENCE_$_P1" = weak hidden global %0* bitcast (%{{.*}}* @[[PROTO_P1]] to %{{.*}}*)
16+
// CHECK: "\01l_OBJC_PROTOCOL_REFERENCE_$_P2" = weak hidden global %0* bitcast (%{{.*}}* @[[PROTO_P2]] to %{{.*}}*)
217

318
void p(const char*, ...);
419

test/CodeGenObjC/sections.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ _Bool f(J *j) {
3838
// CHECK-COFF: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section ".objc_selrefs$B"
3939
// CHECK-COFF: @"OBJC_CLASSLIST_REFERENCES_$_" = {{.*}}, section ".objc_classrefs$B"
4040
// CHECK-COFF: @"\01l_objc_msgSend_fixup_class" = {{.*}}, section ".objc_msgrefs$B"
41-
// CHECK-COFF: @"\01l_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, section ".objc_protolist$B"
41+
// CHECK-COFF: @"_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, section ".objc_protolist$B"
4242
// CHECK-COFF: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section ".objc_protorefs$B"
4343
// CHECK-COFF: @"OBJC_LABEL_CLASS_$" = {{.*}}, section ".objc_classlist$B"
4444
// CHECK-COFF: @"OBJC_LABEL_NONLAZY_CLASS_$" = {{.*}}, section ".objc_nlclslist$B"
@@ -50,7 +50,7 @@ _Bool f(J *j) {
5050
// CHECK-ELF: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section "objc_selrefs"
5151
// CHECK-ELF: @"OBJC_CLASSLIST_REFERENCES_$_" = {{.*}}, section "objc_classrefs"
5252
// CHECK-ELF: @"\01l_objc_msgSend_fixup_class" = {{.*}}, section "objc_msgrefs"
53-
// CHECK-ELF: @"\01l_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, section "objc_protolist"
53+
// CHECK-ELF: @"_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, section "objc_protolist"
5454
// CHECK-ELF: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section "objc_protorefs"
5555
// CHECK-ELF: @"OBJC_LABEL_CLASS_$" = {{.*}}, section "objc_classlist"
5656
// CHECK-ELF: @"OBJC_LABEL_NONLAZY_CLASS_$" = {{.*}}, section "objc_nlclslist"
@@ -62,7 +62,7 @@ _Bool f(J *j) {
6262
// CHECK-MACHO: @OBJC_SELECTOR_REFERENCES_ = {{.*}}, section "__DATA,__objc_selrefs,literal_pointers,no_dead_strip"
6363
// CHECK-MACHO: @"OBJC_CLASSLIST_REFERENCES_$_" = {{.*}}, section "__DATA,__objc_classrefs,regular,no_dead_strip"
6464
// CHECK-MACHO: @"\01l_objc_msgSend_fixup_class" = {{.*}}, section "__DATA,__objc_msgrefs,coalesced"
65-
// CHECK-MACHO: @"\01l_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, section "__DATA,__objc_protolist,coalesced,no_dead_strip"
65+
// CHECK-MACHO: @"_OBJC_LABEL_PROTOCOL_$_P" = {{.*}}, section "__DATA,__objc_protolist,coalesced,no_dead_strip"
6666
// CHECK-MACHO: @"\01l_OBJC_PROTOCOL_REFERENCE_$_P" = {{.*}}, section "__DATA,__objc_protorefs,coalesced,no_dead_strip"
6767
// CHECK-MACHO: @"OBJC_LABEL_CLASS_$" = {{.*}}, section "__DATA,__objc_classlist,regular,no_dead_strip"
6868
// CHECK-MACHO: @"OBJC_LABEL_NONLAZY_CLASS_$" = {{.*}}, section "__DATA,__objc_nlclslist,regular,no_dead_strip"

test/CodeGenObjC/undefined-protocol2.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// Test that we produce a declaration for the protocol. It must be matched
44
// by a definition in another TU, so external is the correct linkage
55
// (not extern_weak).
6-
// CHECK: @"\01l_OBJC_PROTOCOL_$_p1" = external global
6+
// CHECK: @"_OBJC_PROTOCOL_$_p1" = external global
77

88
@interface NSObject
99
@end

tools/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,5 @@ add_clang_subdirectory(libclang)
3939

4040
add_clang_subdirectory(clang-refactor-test)
4141

42+
# Support building the TAPI project as Clang tool.
43+
add_llvm_external_project(tapi)

0 commit comments

Comments
 (0)