Author: akirtzidis Date: Wed May 2 21:26:32 2012 New Revision: 156056 URL: http://llvm.org/viewvc/llvm-project?rev=156056&view=rev Log: [PCH] Clear switch case IDs when deserializing a objc method body.
Fixes rdar://11353109 & http://llvm.org/bugs/show_bug.cgi?id=12689 Modified: cfe/trunk/lib/Serialization/ASTReaderDecl.cpp cfe/trunk/test/PCH/objc_methods.h Modified: cfe/trunk/lib/Serialization/ASTReaderDecl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReaderDecl.cpp?rev=156056&r1=156055&r2=156056&view=diff ============================================================================== --- cfe/trunk/lib/Serialization/ASTReaderDecl.cpp (original) +++ cfe/trunk/lib/Serialization/ASTReaderDecl.cpp Wed May 2 21:26:32 2012 @@ -629,6 +629,8 @@ if (Record[Idx++]) { // In practice, this won't be executed (since method definitions // don't occur in header files). + // Switch case IDs are per method body. + Reader.ClearSwitchCaseIDs(); MD->setBody(Reader.ReadStmt(F)); MD->setSelfDecl(ReadDeclAs<ImplicitParamDecl>(Record, Idx)); MD->setCmdDecl(ReadDeclAs<ImplicitParamDecl>(Record, Idx)); Modified: cfe/trunk/test/PCH/objc_methods.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/PCH/objc_methods.h?rev=156056&r1=156055&r2=156056&view=diff ============================================================================== --- cfe/trunk/test/PCH/objc_methods.h (original) +++ cfe/trunk/test/PCH/objc_methods.h Wed May 2 21:26:32 2012 @@ -9,3 +9,19 @@ // FIXME: @compatibility_alias AliasForTestPCH TestPCH; +// http://llvm.org/PR12689 +@interface PR12689 +@end + +@implementation PR12689 +-(void)mugi:(int)x { + switch(x) { + case 23: {} + } +} +-(void)bonk:(int)x { + switch(x) { + case 42: {} + } +} +@end _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
