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(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 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())) { 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: 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/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}}}\00" + // CHECK: @{{.*}} = private unnamed_addr constant [13 x i8] c"{N={S=@}}\00" return @encode(N); }