I doubt it. PR19061 predates the regression that this commit fixes. Ben
> On Aug 18, 2014, at 7:57 PM, Jordan Rose <[email protected]> wrote: > > Does this bring us closer to fixing PR19061? > http://llvm.org/bugs/show_bug.cgi?id=19061 > > On Aug 18, 2014, at 12:32 , Ben Langmuir <[email protected]> wrote: > >> Author: benlangmuir >> Date: Mon Aug 18 14:32:45 2014 >> New Revision: 215929 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=215929&view=rev >> Log: >> Fix the rececl chain for redeclarations of predefined decls >> >> Predefined decls like 'Protocol' in objc are not loaded from AST files, >> so we cannot rely on loading the canonical decl to complete the redecl >> chain for redeclarations of these decls. The broken redecl chain was >> non-circular, so looping over redecls() would hang. >> >> Added: >> cfe/trunk/test/Index/Inputs/declare-objc-predef.h >> cfe/trunk/test/Index/reparse-predef-objc-protocol.m >> Modified: >> cfe/trunk/lib/Serialization/ASTReaderDecl.cpp >> >> Modified: cfe/trunk/lib/Serialization/ASTReaderDecl.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReaderDecl.cpp?rev=215929&r1=215928&r2=215929&view=diff >> ============================================================================== >> --- cfe/trunk/lib/Serialization/ASTReaderDecl.cpp (original) >> +++ cfe/trunk/lib/Serialization/ASTReaderDecl.cpp Mon Aug 18 14:32:45 2014 >> @@ -2019,6 +2019,8 @@ void ASTDeclReader::mergeRedeclarable(Re >> T *D = static_cast<T*>(DBase); >> T *DCanon = D->getCanonicalDecl(); >> if (D != DCanon && >> + // IDs < NUM_PREDEF_DECL_IDS are not loaded from an AST file. >> + Redecl.getFirstID() >= NUM_PREDEF_DECL_IDS && >> (!Reader.getContext().getLangOpts().Modules || >> Reader.getOwningModuleFile(DCanon) == Reader.getOwningModuleFile(D))) { >> // All redeclarations between this declaration and its >> originally-canonical >> >> Added: cfe/trunk/test/Index/Inputs/declare-objc-predef.h >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/Inputs/declare-objc-predef.h?rev=215929&view=auto >> ============================================================================== >> --- cfe/trunk/test/Index/Inputs/declare-objc-predef.h (added) >> +++ cfe/trunk/test/Index/Inputs/declare-objc-predef.h Mon Aug 18 14:32:45 >> 2014 >> @@ -0,0 +1,3 @@ >> +@class Protocol; >> +typedef struct objc_class *Class >> +@class id; >> >> Added: cfe/trunk/test/Index/reparse-predef-objc-protocol.m >> URL: >> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/reparse-predef-objc-protocol.m?rev=215929&view=auto >> ============================================================================== >> --- cfe/trunk/test/Index/reparse-predef-objc-protocol.m (added) >> +++ cfe/trunk/test/Index/reparse-predef-objc-protocol.m Mon Aug 18 14:32:45 >> 2014 >> @@ -0,0 +1,9 @@ >> +// RUN: env CINDEXTEST_EDITING=1 c-index-test -test-load-source-reparse 3 >> local %s -I %S/Inputs >> +#import "declare-objc-predef.h" >> +// PR20633 >> + >> +// CHECK: declare-objc-predef.h:1:8: ObjCInterfaceDecl=Protocol:1:8 >> Extent=[1:1 - 1:16] >> +// CHECK: declare-objc-predef.h:1:8: ObjCClassRef=Protocol:1:8 Extent=[1:8 >> - 1:16] >> +// CHECK: declare-objc-predef.h:2:16: StructDecl=objc_class:2:16 >> Extent=[2:9 - 2:26] >> +// CHECK: declare-objc-predef.h:2:28: TypedefDecl=Class:2:28 (Definition) >> Extent=[2:1 - 2:33] >> +// CHECK: declare-objc-predef.h:2:16: TypeRef=struct objc_class:2:16 >> Extent=[2:16 - 2:26] >> >> >> _______________________________________________ >> cfe-commits mailing list >> [email protected] >> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
