This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Divide_1 testsuite fail due to a problem in the unwinding code


On 27/01/2012 16:46, Andreas Krebbel wrote:

> Divide_1::probe_1() -> __divdi3
>                            |SIGFPE
>                            V  
> 			catch_fpe   -> _Jv_Throw
> 
> After doing the instruction parsing in order to figure out whether
> it's actually the INT_MIN/-1 case or not an exception is thrown.
> 
> During _Unwind_RaiseException the handler is found in probe_1 and in
> order to re-find it in phase2 the CFA! is recorded in the private_2 field
> of the exception.
> 
> Starting with this IRA patch:
> http://gcc.gnu.org/ml/gcc-patches/2011-10/msg00028.html
> __divdi3 does *not* need a stack frame at all.
> 
> So the CFAs of __divdi3 and probe_1 are the same!
> 
> This triggers the assertion in _Unwind_RaiseException_Phase2 which
> assumes that it is about to pass the frame with the handler without
> actually finding one.

  Wouldn't it work to just let the unwind loop continue running if the next
frame's CFA is the same as the current one's?

    cheers,
      DaveK


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]