[PATCH] D61974: [ObjC] Fix encoding of ObjC pointer types that are pointers to typedefs
Akira Hatanaka via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon May 20 01:17:19 PDT 2019
ahatanak updated this revision to Diff 200216.
ahatanak marked an inline comment as done.
ahatanak added a comment.
Delete the entire code path that tries to work around a bug in gcc.
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D61974/new/
https://reviews.llvm.org/D61974
Files:
lib/AST/ASTContext.cpp
test/CodeGenObjC/encode-test-6.m
test/CodeGenObjC/encode-test.m
test/CodeGenObjCXX/encode.mm
Index: test/CodeGenObjCXX/encode.mm
===================================================================
--- test/CodeGenObjCXX/encode.mm
+++ test/CodeGenObjCXX/encode.mm
@@ -242,6 +242,6 @@
@end
const char *expand_struct() {
- // CHECK: @{{.*}} = private unnamed_addr constant [16 x i8] c"{N={S<N>=^{N}}}\00"
+ // CHECK: @{{.*}} = private unnamed_addr constant [13 x i8] c"{N={S<N>=@}}\00"
return @encode(N);
}
Index: test/CodeGenObjC/encode-test.m
===================================================================
--- test/CodeGenObjC/encode-test.m
+++ test/CodeGenObjC/encode-test.m
@@ -107,7 +107,7 @@
// CHECK: @g4 = constant [6 x i8] c"{S=i}\00"
const char g4[] = @encode(const struct S);
-// CHECK: @g5 = constant [12 x i8] c"^{Object=#}\00"
+// CHECK: @g5 = constant [2 x i8] c"@\00"
const char g5[] = @encode(MyObj * const);
////
Index: test/CodeGenObjC/encode-test-6.m
===================================================================
--- test/CodeGenObjC/encode-test-6.m
+++ test/CodeGenObjC/encode-test-6.m
@@ -34,7 +34,7 @@
@synthesize property = _property;
@end
-// CHECK: private unnamed_addr constant [24 x i8] c"^{BABugExample=@}16
+// CHECK: private unnamed_addr constant [8 x i8] c"@16
// rdar://14408244
@class SCNCamera;
@@ -52,7 +52,7 @@
C3DCameraStorage _storage;
}
@end
-// CHECK: private unnamed_addr constant [39 x i8] c"{?=\22presentationInstance\22^{SCNCamera}}\00"
+// CHECK: private unnamed_addr constant [39 x i8] c"{?=\22presentationInstance\22@\22SCNCamera\22}\00"
// rdar://16655340
int i;
Index: lib/AST/ASTContext.cpp
===================================================================
--- lib/AST/ASTContext.cpp
+++ lib/AST/ASTContext.cpp
@@ -6969,36 +6969,6 @@
return;
}
- QualType PointeeTy = OPT->getPointeeType();
- if (!Options.EncodingProperty() &&
- isa<TypedefType>(PointeeTy.getTypePtr()) &&
- !Options.EncodePointerToObjCTypedef()) {
- // Another historical/compatibility reason.
- // We encode the underlying type which comes out as
- // {...};
- S += '^';
- if (FD && OPT->getInterfaceDecl()) {
- // Prevent recursive encoding of fields in some rare cases.
- ObjCInterfaceDecl *OI = OPT->getInterfaceDecl();
- SmallVector<const ObjCIvarDecl*, 32> Ivars;
- DeepCollectObjCIvars(OI, true, Ivars);
- for (unsigned i = 0, e = Ivars.size(); i != e; ++i) {
- if (Ivars[i] == FD) {
- S += '{';
- S += OI->getObjCRuntimeNameAsString();
- S += '}';
- return;
- }
- }
- }
- ObjCEncOptions NewOptions =
- ObjCEncOptions().setEncodePointerToObjCTypedef();
- if (Options.ExpandPointedToStructures())
- NewOptions.setExpandStructures();
- getObjCEncodingForTypeImpl(PointeeTy, S, NewOptions, /*Field=*/nullptr);
- return;
- }
-
S += '@';
if (OPT->getInterfaceDecl() &&
(FD || Options.EncodingProperty() || Options.EncodeClassNames())) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D61974.200216.patch
Type: text/x-patch
Size: 3038 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190520/f47493f3/attachment.bin>
More information about the cfe-commits
mailing list