Skip to content

Commit 388733d

Browse files
authored
Merge pull request #7680 from eeckstein/llvm-type-name-mangling
IRGen: Use new mangling for llvm type names.
2 parents b6f2df3 + 8e3b05d commit 388733d

File tree

117 files changed

+891
-871
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

117 files changed

+891
-871
lines changed

lib/IRGen/GenDecl.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3105,12 +3105,6 @@ llvm::Constant *IRGenModule::getAddrOfGlobalUTF16String(StringRef utf8) {
31053105
return address;
31063106
}
31073107

3108-
/// Mangle the name of a type.
3109-
StringRef IRGenModule::mangleType(CanType type, SmallVectorImpl<char> &buffer) {
3110-
LinkEntity::forTypeMangling(type).mangle(buffer);
3111-
return StringRef(buffer.data(), buffer.size());
3112-
}
3113-
31143108
/// Do we have to use resilient access patterns when working with this
31153109
/// declaration?
31163110
///

lib/IRGen/GenType.cpp

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
#include "ScalarTypeInfo.h"
4545
#include "WeakTypeInfo.h"
4646
#include "NativeConventionSchema.h"
47+
#include "IRGenMangler.h"
4748

4849
using namespace swift;
4950
using namespace irgen;
@@ -1536,9 +1537,9 @@ llvm::StructType *IRGenModule::createNominalType(CanType type) {
15361537
type = type.getNominalOrBoundGenericNominal()->getDeclaredType()
15371538
->getCanonicalType();
15381539

1539-
llvm::SmallString<32> typeName;
1540-
LinkEntity::forTypeMangling(type).mangle(typeName);
1541-
return llvm::StructType::create(getLLVMContext(), typeName.str());
1540+
IRGenMangler Mangler;
1541+
std::string typeName = Mangler.mangleTypeForLLVMTypeName(type);
1542+
return llvm::StructType::create(getLLVMContext(), StringRef(typeName));
15421543
}
15431544

15441545
/// createNominalType - Create a new nominal LLVM type for the given
@@ -1548,20 +1549,9 @@ llvm::StructType *IRGenModule::createNominalType(CanType type) {
15481549
/// distinguish different cases.
15491550
llvm::StructType *
15501551
IRGenModule::createNominalType(ProtocolCompositionType *type) {
1551-
llvm::SmallString<32> typeName;
1552-
1553-
SmallVector<ProtocolDecl *, 4> protocols;
1554-
type->getAnyExistentialTypeProtocols(protocols);
1555-
1556-
if (protocols.empty()) {
1557-
typeName.append("Any");
1558-
} else {
1559-
for (unsigned i = 0, e = protocols.size(); i != e; ++i) {
1560-
if (i) typeName.push_back('&');
1561-
LinkEntity::forNonFunction(protocols[i]).mangle(typeName);
1562-
}
1563-
}
1564-
return llvm::StructType::create(getLLVMContext(), typeName.str());
1552+
IRGenMangler Mangler;
1553+
std::string typeName = Mangler.mangleProtocolForLLVMTypeName(type);
1554+
return llvm::StructType::create(getLLVMContext(), StringRef(typeName));
15651555
}
15661556

15671557
/// Compute the explosion schema for the given type.

lib/IRGen/IRGenMangler.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,37 @@ std::string IRGenMangler::mangleTypeForReflection(Type Ty,
6060
appendOperator("Xb");
6161
return finalize();
6262
}
63+
64+
std::string IRGenMangler::mangleTypeForLLVMTypeName(CanType Ty) {
65+
// To make LLVM IR more readable we always add a 'T' prefix so that type names
66+
// don't start with a digit and don't need to be quoted.
67+
Buffer << 'T';
68+
if (auto P = dyn_cast<ProtocolType>(Ty)) {
69+
appendProtocolName(P->getDecl());
70+
appendOperator("P");
71+
} else {
72+
appendType(Ty);
73+
}
74+
return finalize();
75+
}
76+
77+
std::string IRGenMangler::
78+
mangleProtocolForLLVMTypeName(ProtocolCompositionType *type) {
79+
SmallVector<ProtocolDecl *, 4> protocols;
80+
type->getAnyExistentialTypeProtocols(protocols);
81+
82+
if (protocols.empty()) {
83+
Buffer << "Any";
84+
} else {
85+
// To make LLVM IR more readable we always add a 'T' prefix so that type names
86+
// don't start with a digit and don't need to be quoted.
87+
Buffer << 'T';
88+
for (unsigned i = 0, e = protocols.size(); i != e; ++i) {
89+
appendProtocolName(protocols[i]);
90+
if (i == 0)
91+
appendOperator("_");
92+
}
93+
appendOperator("p");
94+
}
95+
return finalize();
96+
}

lib/IRGen/IRGenMangler.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ class IRGenMangler : public NewMangling::ASTMangler {
169169
std::string mangleTypeForReflection(Type Ty, ModuleDecl *Module,
170170
bool isSingleFieldOfBox);
171171

172+
std::string mangleTypeForLLVMTypeName(CanType Ty);
173+
174+
std::string mangleProtocolForLLVMTypeName(ProtocolCompositionType *type);
175+
172176
protected:
173177

174178
std::string mangleTypeSymbol(Type type, const char *Op) {

lib/IRGen/IRGenModule.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -974,8 +974,6 @@ private: \
974974

975975
Address getAddrOfObjCISAMask();
976976

977-
StringRef mangleType(CanType type, SmallVectorImpl<char> &buffer);
978-
979977
/// Retrieve the generic environment for the current generic context.
980978
///
981979
/// Fails if there is no generic context.

test/ClangImporter/objc_ir.swift

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// REQUIRES: objc_interop
66
// REQUIRES: OS=macosx
77

8-
// CHECK: [[B:%CSo1B]] = type
8+
// CHECK: [[B:%TSo1BC]] = type
99

1010
import ObjectiveC
1111
import Foundation
@@ -93,7 +93,7 @@ func almostSubscriptable(as1 as1: AlmostSubscriptable, a: A) {
9393
as1.objectForKeyedSubscript(a)
9494
}
9595

96-
// CHECK: define hidden swiftcc void @_T07objc_ir13protocolTypesySo7NSMinceC1a_So9NSRuncing_p1btF(%CSo7NSMince*, %objc_object*) {{.*}} {
96+
// CHECK: define hidden swiftcc void @_T07objc_ir13protocolTypesySo7NSMinceC1a_So9NSRuncing_p1btF(%TSo7NSMinceC*, %objc_object*) {{.*}} {
9797
func protocolTypes(a a: NSMince, b: NSRuncing) {
9898
// - (void)eatWith:(id <NSRuncing>)runcer;
9999
a.eat(with: b)
@@ -126,33 +126,33 @@ class Impl: FooProto, AnotherProto {
126126
@objc var bar: Int32 = 0
127127
}
128128

129-
// CHECK-LABEL: define hidden swiftcc %swift.type* @_T07objc_ir27protocolCompositionMetatypeSo12AnotherProto_So03FooG0pXpAA4ImplC1p_tF(%C7objc_ir4Impl*) {{.*}} {
129+
// CHECK-LABEL: define hidden swiftcc %swift.type* @_T07objc_ir27protocolCompositionMetatypeSo12AnotherProto_So03FooG0pXpAA4ImplC1p_tF(%T7objc_ir4ImplC*) {{.*}} {
130130
func protocolCompositionMetatype(p: Impl) -> (FooProto & AnotherProto).Type {
131-
// CHECK: = getelementptr inbounds %C7objc_ir4Impl, %C7objc_ir4Impl* %0, i32 0, i32 0, i32 0
131+
// CHECK: = getelementptr inbounds %T7objc_ir4ImplC, %T7objc_ir4ImplC* %0, i32 0, i32 0, i32 0
132132
// CHECK-NOT: {{retain|release}}
133133
// CHECK: [[RAW_RESULT:%.+]] = call i8* @processComboType(i8* {{%.+}})
134134
// CHECK: [[CASTED_RESULT:%.+]] = bitcast i8* [[RAW_RESULT]] to %objc_class*
135135
// CHECK: [[SWIFT_RESULT:%.+]] = call %swift.type* @swift_getObjCClassMetadata(%objc_class* [[CASTED_RESULT]])
136-
// CHECK: call void bitcast (void (%swift.refcounted*)* @swift_rt_swift_release to void (%C7objc_ir4Impl*)*)(%C7objc_ir4Impl* %0)
136+
// CHECK: call void bitcast (void (%swift.refcounted*)* @swift_rt_swift_release to void (%T7objc_ir4ImplC*)*)(%T7objc_ir4ImplC* %0)
137137
// CHECK: ret %swift.type* [[SWIFT_RESULT]]
138138
let type = processComboType(type(of: p))
139139
return type
140140
} // CHECK: }
141141

142-
// CHECK-LABEL: define hidden swiftcc %swift.type* @_T07objc_ir28protocolCompositionMetatype2So12AnotherProto_So03FooG0pXpAA4ImplC1p_tF(%C7objc_ir4Impl*) {{.*}} {
142+
// CHECK-LABEL: define hidden swiftcc %swift.type* @_T07objc_ir28protocolCompositionMetatype2So12AnotherProto_So03FooG0pXpAA4ImplC1p_tF(%T7objc_ir4ImplC*) {{.*}} {
143143
func protocolCompositionMetatype2(p: Impl) -> (FooProto & AnotherProto).Type {
144-
// CHECK: = getelementptr inbounds %C7objc_ir4Impl, %C7objc_ir4Impl* %0, i32 0, i32 0, i32 0
144+
// CHECK: = getelementptr inbounds %T7objc_ir4ImplC, %T7objc_ir4ImplC* %0, i32 0, i32 0, i32 0
145145
// CHECK-NOT: {{retain|release}}
146146
// CHECK: [[RAW_RESULT:%.+]] = call i8* @processComboType2(i8* {{%.+}})
147147
// CHECK: [[CASTED_RESULT:%.+]] = bitcast i8* [[RAW_RESULT]] to %objc_class*
148148
// CHECK: [[SWIFT_RESULT:%.+]] = call %swift.type* @swift_getObjCClassMetadata(%objc_class* [[CASTED_RESULT]])
149-
// CHECK: call void bitcast (void (%swift.refcounted*)* @swift_rt_swift_release to void (%C7objc_ir4Impl*)*)(%C7objc_ir4Impl* %0)
149+
// CHECK: call void bitcast (void (%swift.refcounted*)* @swift_rt_swift_release to void (%T7objc_ir4ImplC*)*)(%T7objc_ir4ImplC* %0)
150150
// CHECK: ret %swift.type* [[SWIFT_RESULT]]
151151
let type = processComboType2(type(of: p))
152152
return type
153153
} // CHECK: }
154154

155-
// CHECK-LABEL: define hidden swiftcc void @_T07objc_ir17pointerPropertiesySo14PointerWrapperCF(%CSo14PointerWrapper*) {{.*}} {
155+
// CHECK-LABEL: define hidden swiftcc void @_T07objc_ir17pointerPropertiesySo14PointerWrapperCF(%TSo14PointerWrapperC*) {{.*}} {
156156
func pointerProperties(_ obj: PointerWrapper) {
157157
// CHECK: load i8*, i8** @"\01L_selector(setVoidPtr:)"
158158
// CHECK: load i8*, i8** @"\01L_selector(setIntPtr:)"
@@ -162,17 +162,17 @@ func pointerProperties(_ obj: PointerWrapper) {
162162
obj.idPtr = nil as AutoreleasingUnsafeMutablePointer?
163163
}
164164

165-
// CHECK-LABEL: define hidden swiftcc void @_T07objc_ir16strangeSelectorsySo13SwiftNameTestCF(%CSo13SwiftNameTest*) {{.*}} {
165+
// CHECK-LABEL: define hidden swiftcc void @_T07objc_ir16strangeSelectorsySo13SwiftNameTestCF(%TSo13SwiftNameTestC*) {{.*}} {
166166
func strangeSelectors(_ obj: SwiftNameTest) {
167167
// CHECK: load i8*, i8** @"\01L_selector(:b:)"
168168
obj.empty(a: 0, b: 0)
169169
}
170170

171171
// CHECK-LABEL: define hidden swiftcc void @_T07objc_ir20customFactoryMethodsyyF() {{.*}} {
172172
func customFactoryMethods() {
173-
// CHECK: call swiftcc %CSo13SwiftNameTest* @_T0So13SwiftNameTestCAByt10dummyParam_tcfCTO
174-
// CHECK: call swiftcc %CSo13SwiftNameTest* @_T0So13SwiftNameTestCABypSg2cc_tcfCTO
175-
// CHECK: call swiftcc %CSo13SwiftNameTest* @_T0So13SwiftNameTestCABs5Int32V5empty_tcfCTO
173+
// CHECK: call swiftcc %TSo13SwiftNameTestC* @_T0So13SwiftNameTestCAByt10dummyParam_tcfCTO
174+
// CHECK: call swiftcc %TSo13SwiftNameTestC* @_T0So13SwiftNameTestCABypSg2cc_tcfCTO
175+
// CHECK: call swiftcc %TSo13SwiftNameTestC* @_T0So13SwiftNameTestCABs5Int32V5empty_tcfCTO
176176
_ = SwiftNameTest(dummyParam: ())
177177
_ = SwiftNameTest(cc: nil)
178178
_ = SwiftNameTest(empty: 0)
@@ -187,13 +187,13 @@ func customFactoryMethods() {
187187
_ = SwiftNameTest.empty(1, 2)
188188

189189
do {
190-
// CHECK: call swiftcc %CSo18SwiftNameTestError* @_T0So18SwiftNameTestErrorCAByt5error_tKcfCTO
191-
// CHECK: call swiftcc %CSo18SwiftNameTestError* @_T0So18SwiftNameTestErrorCABypSg2aa_yt5errortKcfCTO
192-
// CHECK: call swiftcc %CSo18SwiftNameTestError* @_T0So18SwiftNameTestErrorCABypSg2aa_yt5erroryyc5blocktKcfCTO
193-
// CHECK: call swiftcc %CSo18SwiftNameTestError* @_T0So18SwiftNameTestErrorCAByt5error_yyc5blocktKcfCTO
194-
// CHECK: call swiftcc %CSo18SwiftNameTestError* @_T0So18SwiftNameTestErrorCABypSg2aa_tKcfCTO
195-
// CHECK: call swiftcc %CSo18SwiftNameTestError* @_T0So18SwiftNameTestErrorCABypSg2aa_yyc5blocktKcfCTO
196-
// CHECK: call swiftcc %CSo18SwiftNameTestError* @_T0So18SwiftNameTestErrorCAByyc5block_tKcfCTO
190+
// CHECK: call swiftcc %TSo18SwiftNameTestErrorC* @_T0So18SwiftNameTestErrorCAByt5error_tKcfCTO
191+
// CHECK: call swiftcc %TSo18SwiftNameTestErrorC* @_T0So18SwiftNameTestErrorCABypSg2aa_yt5errortKcfCTO
192+
// CHECK: call swiftcc %TSo18SwiftNameTestErrorC* @_T0So18SwiftNameTestErrorCABypSg2aa_yt5erroryyc5blocktKcfCTO
193+
// CHECK: call swiftcc %TSo18SwiftNameTestErrorC* @_T0So18SwiftNameTestErrorCAByt5error_yyc5blocktKcfCTO
194+
// CHECK: call swiftcc %TSo18SwiftNameTestErrorC* @_T0So18SwiftNameTestErrorCABypSg2aa_tKcfCTO
195+
// CHECK: call swiftcc %TSo18SwiftNameTestErrorC* @_T0So18SwiftNameTestErrorCABypSg2aa_yyc5blocktKcfCTO
196+
// CHECK: call swiftcc %TSo18SwiftNameTestErrorC* @_T0So18SwiftNameTestErrorCAByyc5block_tKcfCTO
197197
_ = try SwiftNameTestError(error: ())
198198
_ = try SwiftNameTestError(aa: nil, error: ())
199199
_ = try SwiftNameTestError(aa: nil, error: (), block: {})
@@ -215,46 +215,46 @@ func customFactoryMethods() {
215215
}
216216
}
217217

218-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo13SwiftNameTest* @_T0So13SwiftNameTestCAByt10dummyParam_tcfCTO
218+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo13SwiftNameTestC* @_T0So13SwiftNameTestCAByt10dummyParam_tcfCTO
219219
// CHECK: load i8*, i8** @"\01L_selector(b)"
220220
// CHECK: }
221221

222-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo13SwiftNameTest* @_T0So13SwiftNameTestCABypSg2cc_tcfCTO
222+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo13SwiftNameTestC* @_T0So13SwiftNameTestCABypSg2cc_tcfCTO
223223
// CHECK: load i8*, i8** @"\01L_selector(c:)"
224224
// CHECK: }
225225

226-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo18SwiftNameTestError* @_T0So18SwiftNameTestErrorCAByt5error_tKcfCTO
226+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo18SwiftNameTestErrorC* @_T0So18SwiftNameTestErrorCAByt5error_tKcfCTO
227227
// CHECK: load i8*, i8** @"\01L_selector(err1:)"
228228
// CHECK: }
229229

230-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo18SwiftNameTestError* @_T0So18SwiftNameTestErrorCABypSg2aa_yt5errortKcfCTO
230+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo18SwiftNameTestErrorC* @_T0So18SwiftNameTestErrorCABypSg2aa_yt5errortKcfCTO
231231
// CHECK: load i8*, i8** @"\01L_selector(err2:error:)"
232232
// CHECK: }
233233

234-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo18SwiftNameTestError* @_T0So18SwiftNameTestErrorCABypSg2aa_yt5erroryyc5blocktKcfCTO
234+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo18SwiftNameTestErrorC* @_T0So18SwiftNameTestErrorCABypSg2aa_yt5erroryyc5blocktKcfCTO
235235
// CHECK: load i8*, i8** @"\01L_selector(err3:error:callback:)"
236236
// CHECK: }
237237

238-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo18SwiftNameTestError* @_T0So18SwiftNameTestErrorCAByt5error_yyc5blocktKcfCTO
238+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo18SwiftNameTestErrorC* @_T0So18SwiftNameTestErrorCAByt5error_yyc5blocktKcfCTO
239239
// CHECK: load i8*, i8** @"\01L_selector(err4:callback:)"
240240
// CHECK: }
241241

242-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo18SwiftNameTestError* @_T0So18SwiftNameTestErrorCABypSg2aa_tKcfCTO
242+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo18SwiftNameTestErrorC* @_T0So18SwiftNameTestErrorCABypSg2aa_tKcfCTO
243243
// CHECK: load i8*, i8** @"\01L_selector(err5:error:)"
244244
// CHECK: }
245245

246-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo18SwiftNameTestError* @_T0So18SwiftNameTestErrorCABypSg2aa_yyc5blocktKcfCTO
246+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo18SwiftNameTestErrorC* @_T0So18SwiftNameTestErrorCABypSg2aa_yyc5blocktKcfCTO
247247
// CHECK: load i8*, i8** @"\01L_selector(err6:error:callback:)"
248248
// CHECK: }
249249

250-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo18SwiftNameTestError* @_T0So18SwiftNameTestErrorCAByyc5block_tKcfCTO
250+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo18SwiftNameTestErrorC* @_T0So18SwiftNameTestErrorCAByyc5block_tKcfCTO
251251
// CHECK: load i8*, i8** @"\01L_selector(err7:callback:)"
252252
// CHECK: }
253253

254254
// CHECK-LABEL: define hidden swiftcc void @_T07objc_ir29customFactoryMethodsInheritedyyF() {{.*}} {
255255
func customFactoryMethodsInherited() {
256-
// CHECK: call swiftcc %CSo16SwiftNameTestSub* @_T0So16SwiftNameTestSubCAByt10dummyParam_tcfCTO
257-
// CHECK: call swiftcc %CSo16SwiftNameTestSub* @_T0So16SwiftNameTestSubCABypSg2cc_tcfCTO
256+
// CHECK: call swiftcc %TSo16SwiftNameTestSubC* @_T0So16SwiftNameTestSubCAByt10dummyParam_tcfCTO
257+
// CHECK: call swiftcc %TSo16SwiftNameTestSubC* @_T0So16SwiftNameTestSubCABypSg2cc_tcfCTO
258258
_ = SwiftNameTestSub(dummyParam: ())
259259
_ = SwiftNameTestSub(cc: nil)
260260

@@ -266,13 +266,13 @@ func customFactoryMethodsInherited() {
266266
_ = SwiftNameTestSub.xx(nil, bb: nil)
267267

268268
do {
269-
// CHECK: call swiftcc %CSo21SwiftNameTestErrorSub* @_T0So21SwiftNameTestErrorSubCAByt5error_tKcfCTO
270-
// CHECK: call swiftcc %CSo21SwiftNameTestErrorSub* @_T0So21SwiftNameTestErrorSubCABypSg2aa_yt5errortKcfCTO
271-
// CHECK: call swiftcc %CSo21SwiftNameTestErrorSub* @_T0So21SwiftNameTestErrorSubCABypSg2aa_yt5erroryyc5blocktKcfCTO
272-
// CHECK: call swiftcc %CSo21SwiftNameTestErrorSub* @_T0So21SwiftNameTestErrorSubCAByt5error_yyc5blocktKcfCTO
273-
// CHECK: call swiftcc %CSo21SwiftNameTestErrorSub* @_T0So21SwiftNameTestErrorSubCABypSg2aa_tKcfCTO
274-
// CHECK: call swiftcc %CSo21SwiftNameTestErrorSub* @_T0So21SwiftNameTestErrorSubCABypSg2aa_yyc5blocktKcfCTO
275-
// CHECK: call swiftcc %CSo21SwiftNameTestErrorSub* @_T0So21SwiftNameTestErrorSubCAByyc5block_tKcfCTO
269+
// CHECK: call swiftcc %TSo21SwiftNameTestErrorSubC* @_T0So21SwiftNameTestErrorSubCAByt5error_tKcfCTO
270+
// CHECK: call swiftcc %TSo21SwiftNameTestErrorSubC* @_T0So21SwiftNameTestErrorSubCABypSg2aa_yt5errortKcfCTO
271+
// CHECK: call swiftcc %TSo21SwiftNameTestErrorSubC* @_T0So21SwiftNameTestErrorSubCABypSg2aa_yt5erroryyc5blocktKcfCTO
272+
// CHECK: call swiftcc %TSo21SwiftNameTestErrorSubC* @_T0So21SwiftNameTestErrorSubCAByt5error_yyc5blocktKcfCTO
273+
// CHECK: call swiftcc %TSo21SwiftNameTestErrorSubC* @_T0So21SwiftNameTestErrorSubCABypSg2aa_tKcfCTO
274+
// CHECK: call swiftcc %TSo21SwiftNameTestErrorSubC* @_T0So21SwiftNameTestErrorSubCABypSg2aa_yyc5blocktKcfCTO
275+
// CHECK: call swiftcc %TSo21SwiftNameTestErrorSubC* @_T0So21SwiftNameTestErrorSubCAByyc5block_tKcfCTO
276276
_ = try SwiftNameTestErrorSub(error: ())
277277
_ = try SwiftNameTestErrorSub(aa: nil, error: ())
278278
_ = try SwiftNameTestErrorSub(aa: nil, error: (), block: {})
@@ -294,39 +294,39 @@ func customFactoryMethodsInherited() {
294294
}
295295
}
296296

297-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo16SwiftNameTestSub* @_T0So16SwiftNameTestSubCAByt10dummyParam_tcfCTO
297+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo16SwiftNameTestSubC* @_T0So16SwiftNameTestSubCAByt10dummyParam_tcfCTO
298298
// CHECK: load i8*, i8** @"\01L_selector(b)"
299299
// CHECK: }
300300

301-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo16SwiftNameTestSub* @_T0So16SwiftNameTestSubCABypSg2cc_tcfCTO
301+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo16SwiftNameTestSubC* @_T0So16SwiftNameTestSubCABypSg2cc_tcfCTO
302302
// CHECK: load i8*, i8** @"\01L_selector(c:)"
303303
// CHECK: }
304304

305-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo21SwiftNameTestErrorSub* @_T0So21SwiftNameTestErrorSubCAByt5error_tKcfCTO
305+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo21SwiftNameTestErrorSubC* @_T0So21SwiftNameTestErrorSubCAByt5error_tKcfCTO
306306
// CHECK: load i8*, i8** @"\01L_selector(err1:)"
307307
// CHECK: }
308308

309-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo21SwiftNameTestErrorSub* @_T0So21SwiftNameTestErrorSubCABypSg2aa_yt5errortKcfCTO
309+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo21SwiftNameTestErrorSubC* @_T0So21SwiftNameTestErrorSubCABypSg2aa_yt5errortKcfCTO
310310
// CHECK: load i8*, i8** @"\01L_selector(err2:error:)"
311311
// CHECK: }
312312

313-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo21SwiftNameTestErrorSub* @_T0So21SwiftNameTestErrorSubCABypSg2aa_yt5erroryyc5blocktKcfCTO
313+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo21SwiftNameTestErrorSubC* @_T0So21SwiftNameTestErrorSubCABypSg2aa_yt5erroryyc5blocktKcfCTO
314314
// CHECK: load i8*, i8** @"\01L_selector(err3:error:callback:)"
315315
// CHECK: }
316316

317-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo21SwiftNameTestErrorSub* @_T0So21SwiftNameTestErrorSubCAByt5error_yyc5blocktKcfCTO
317+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo21SwiftNameTestErrorSubC* @_T0So21SwiftNameTestErrorSubCAByt5error_yyc5blocktKcfCTO
318318
// CHECK: load i8*, i8** @"\01L_selector(err4:callback:)"
319319
// CHECK: }
320320

321-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo21SwiftNameTestErrorSub* @_T0So21SwiftNameTestErrorSubCABypSg2aa_tKcfCTO
321+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo21SwiftNameTestErrorSubC* @_T0So21SwiftNameTestErrorSubCABypSg2aa_tKcfCTO
322322
// CHECK: load i8*, i8** @"\01L_selector(err5:error:)"
323323
// CHECK: }
324324

325-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo21SwiftNameTestErrorSub* @_T0So21SwiftNameTestErrorSubCABypSg2aa_yyc5blocktKcfCTO
325+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo21SwiftNameTestErrorSubC* @_T0So21SwiftNameTestErrorSubCABypSg2aa_yyc5blocktKcfCTO
326326
// CHECK: load i8*, i8** @"\01L_selector(err6:error:callback:)"
327327
// CHECK: }
328328

329-
// CHECK-LABEL: define linkonce_odr hidden swiftcc %CSo21SwiftNameTestErrorSub* @_T0So21SwiftNameTestErrorSubCAByyc5block_tKcfCTO
329+
// CHECK-LABEL: define linkonce_odr hidden swiftcc %TSo21SwiftNameTestErrorSubC* @_T0So21SwiftNameTestErrorSubCAByyc5block_tKcfCTO
330330
// CHECK: load i8*, i8** @"\01L_selector(err7:callback:)"
331331
// CHECK: }
332332

test/DebugInfo/ProtocolContainer.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ class AClass : AProtocol {
1313
}
1414
// CHECK: define hidden {{.*}}void @_T017ProtocolContainer3foo{{[_0-9a-zA-Z]*}}F
1515
// CHECK-NEXT: entry:
16-
// CHECK-NEXT: %[[X:.*]] = alloca %P17ProtocolContainer9AProtocol_, align {{(4|8)}}
17-
// CHECK: call void @llvm.dbg.declare(metadata %P17ProtocolContainer9AProtocol_* %[[X]], metadata ![[XMD:.*]], metadata !{{[0-9]+}})
16+
// CHECK-NEXT: %[[X:.*]] = alloca %T17ProtocolContainer9AProtocolP, align {{(4|8)}}
17+
// CHECK: call void @llvm.dbg.declare(metadata %T17ProtocolContainer9AProtocolP* %[[X]], metadata ![[XMD:.*]], metadata !{{[0-9]+}})
1818
// CHECK-NOT: !DILocalVariable({{.*}} name: "x"
1919
// CHECK-NOT: !DILocalVariable({{.*}} name: "x"
2020
func foo (_ x : AProtocol) {

0 commit comments

Comments
 (0)