Looks fine to me, please apply, -Chris
On Jun 9, 2007, at 7:21 AM, Duncan Sands wrote: > The fix that was applied for PR1224 stops the compiler > crashing but breaks exception handling. The problem > described in PR1224 is that invoke is a terminator that > can produce a value. The value may be needed in other > blocks. The code that writes to registers values needed > in other blocks runs before terminators are lowered (in > this case invoke) so asserted because the value was not > yet available. The fix that was applied was to do invoke > lowering earlier, before writing values to registers. > > The problem this causes is that the code to copy values > to registers can be output after the invoke call. If > an exception is raised and control is passed to the > landing pad then this copy-code will never execute. If > the value is needed in some code path reached via the > landing pad then that code will get something bogus. > > The attached patch reverts the original fix and simply > skips invoke values in the general copying to registers > code. The invoke value is instead copied to a register > in the invoke lowering code. I had a testcase but I > accidentally deleted it... > > Ciao, > > Duncan. > <invoke_order.diff> > _______________________________________________ > llvm-commits mailing list > llvm-commits@cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits