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);

Reply via email to