summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/clang/AST/ASTContext.h4
-rw-r--r--lib/AST/ASTContext.cpp39
-rw-r--r--test/CodeGenObjC/encode-test-6.m4
-rw-r--r--test/CodeGenObjC/encode-test.m2
-rw-r--r--test/CodeGenObjCXX/encode.mm2
5 files changed, 8 insertions, 43 deletions
diff --git a/include/clang/AST/ASTContext.h b/include/clang/AST/ASTContext.h
index 6856cb6585..93d93841b8 100644
--- a/include/clang/AST/ASTContext.h
+++ b/include/clang/AST/ASTContext.h
@@ -2897,7 +2897,6 @@ private:
V(IsStructField, 4) \
V(EncodeBlockParameters, 5) \
V(EncodeClassNames, 6) \
- V(EncodePointerToObjCTypedef, 7)
#define V(N,I) ObjCEncOptions& set##N() { Bits |= 1 << I; return *this; }
OPT_LIST(V)
@@ -2916,8 +2915,7 @@ OPT_LIST(V)
LLVM_NODISCARD ObjCEncOptions forComponentType() const {
ObjCEncOptions Mask = ObjCEncOptions()
.setIsOutermostType()
- .setIsStructField()
- .setEncodePointerToObjCTypedef();
+ .setIsStructField();
return Bits & ~Mask.Bits;
}
};
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp
index c3a09723ef..87ecb5a57b 100644
--- a/lib/AST/ASTContext.cpp
+++ b/lib/AST/ASTContext.cpp
@@ -6927,13 +6927,10 @@ void ASTContext::getObjCEncodingForTypeImpl(QualType T, std::string &S,
getObjCEncodingForTypeImpl(Field->getType(), S,
ObjCEncOptions().setExpandStructures(),
Field);
- else {
- ObjCEncOptions NewOptions = ObjCEncOptions().setExpandStructures();
- if (Options.EncodePointerToObjCTypedef())
- NewOptions.setEncodePointerToObjCTypedef();
- getObjCEncodingForTypeImpl(Field->getType(), S, NewOptions, FD,
+ else
+ getObjCEncodingForTypeImpl(Field->getType(), S,
+ ObjCEncOptions().setExpandStructures(), FD,
NotEncodedT);
- }
}
}
S += '}';
@@ -6976,36 +6973,6 @@ void ASTContext::getObjCEncodingForTypeImpl(QualType T, std::string &S,
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())) {
diff --git a/test/CodeGenObjC/encode-test-6.m b/test/CodeGenObjC/encode-test-6.m
index 583ba5ab4d..99f53a5059 100644
--- a/test/CodeGenObjC/encode-test-6.m
+++ b/test/CodeGenObjC/encode-test-6.m
@@ -34,7 +34,7 @@ typedef BABugExample BABugExampleRedefinition;
@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 @@ typedef struct
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;
diff --git a/test/CodeGenObjC/encode-test.m b/test/CodeGenObjC/encode-test.m
index 113dbef95f..bf5340c5c5 100644
--- a/test/CodeGenObjC/encode-test.m
+++ b/test/CodeGenObjC/encode-test.m
@@ -107,7 +107,7 @@ const char g3[] = @encode(const struct S *);
// 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);
////
diff --git a/test/CodeGenObjCXX/encode.mm b/test/CodeGenObjCXX/encode.mm
index e4c7618f50..7bc64dafb4 100644
--- a/test/CodeGenObjCXX/encode.mm
+++ b/test/CodeGenObjCXX/encode.mm
@@ -242,6 +242,6 @@ struct S {
@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);
}