Revision: 125692 Author: clattner Date: 2007-04-03 13:52:42 -0700 (Tue, 03 Apr 2007)
Log Message: ----------- Fix compilation of: @interface B -(int)bar; @end @interface A -(void) Foo:(int) state; @end @implementation A - (void) Foo:(int) state { int wasResponded = 0; @try { if (state) { B * b = 0; @try { } @finally { wasResponded = ![b bar]; } } } @finally { } } @end With -fexceptions. Modified Paths: -------------- apple-local/branches/llvm/gcc/llvm-convert.cpp Modified: apple-local/branches/llvm/gcc/llvm-convert.cpp =================================================================== --- apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-04-03 17:23:51 UTC (rev 125691) +++ apple-local/branches/llvm/gcc/llvm-convert.cpp 2007-04-03 20:52:42 UTC (rev 125692) @@ -2659,6 +2659,7 @@ BasicBlock::iterator InsertPt; if (Instruction *I = dyn_cast<Instruction>(FirstVal)) { InsertPt = I; // Insert after the init instruction. + // If the instruction is an alloca in the entry block, the insert point // will be before the alloca. Advance to the AllocaInsertionPoint if we are // before it. @@ -2671,6 +2672,13 @@ } } } + + // If the instruction is an invoke, the init is inserted on the normal edge. + if (InvokeInst *II = dyn_cast<InvokeInst>(I)) { + InsertPt = II->getNormalDest()->begin(); + while (isa<PHINode>(InsertPt)) + ++InsertPt; + } } else { InsertPt = AllocaInsertionPoint; // Insert after the allocas. } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits