On Sun, Dec 9, 2012 at 5:17 PM, NightStrike <nightstr...@gmail.com> wrote:
> On Sat, Dec 1, 2012 at 12:28 PM, Steven Bosscher <stevenb....@gmail.com> 
> wrote:
>> On Sat, Dec 1, 2012 at 10:59 PM, Kai Tietz wrote:
>>> Hi,
>>>
>>> recent 4,8 has regressions in g++.old-deja/g++.eh for the catch*.C
>>> tests, if exception-mechanism is SjLj.  This is due an off by one
>>> failure in an decreasing loop.
>>>
>>> ChangeLog
>>>
>>> 2012-12-01  Kai Tietz
>>>
>>>         * stmt.c (expand_sjlj_dispatch_table): Fix off by one.
>>>
>>> Tested for i686-w64-mingw32, x86_64-unknown-linux-gnu.  Ok for apply?
>>>
>>> Regards,
>>> Kai
>>>
>>>
>>> Index: stmt.c
>>> ===================================================================
>>> --- stmt.c      (Revision 193985)
>>> +++ stmt.c      (Arbeitskopie)
>>> @@ -2282,7 +2282,7 @@ expand_sjlj_dispatch_table (rtx dispatch_index,
>>>        tree range = maxval;
>>>        rtx default_label = gen_label_rtx ();
>>>
>>> -      for (int i = ncases - 1; i > 0; --i)
>>> +      for (int i = ncases - 1; i >= 0; --i)
>>>         {
>>>           tree elt = dispatch_table[i];
>>>           tree low = CASE_LOW (elt);
>>
>>
>> I can't approve this, but it's obvious. The "normal" switch expander
>> (expand_case) expects the default case in slot 0, but the SJLJ
>> dispatch table doesn't have a default case.
>>
>> Ciao!
>> Steven
>
> Ping.

Ok.

Thanks,
Richard.

Reply via email to