]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/6764 (Throwing exception causes crash with '-O2 -fomit-frame-pointer')
authorRichard Henderson <rth@redhat.com>
Fri, 26 Nov 2004 05:07:25 +0000 (21:07 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Fri, 26 Nov 2004 05:07:25 +0000 (21:07 -0800)
        PR c++/6764
        * reload1.c (set_initial_eh_label_offset): New.
        (set_initial_label_offsets): Use it.

From-SVN: r91327

gcc/ChangeLog
gcc/reload1.c

index 883c1b197d08850942ee84cce406d97e208e0ce5..f7ce7dab640db6ce0165a4eb7aa253904c3f6911 100644 (file)
@@ -1,3 +1,9 @@
+2004-11-25  Richard Henderson  <rth@redhat.com>
+
+       PR c++/6764
+       * reload1.c (set_initial_eh_label_offset): New.
+       (set_initial_label_offsets): Use it.
+
 2004-11-26  Alan Modra  <amodra@bigpond.net.au>
 
        PR rtl-optimization/16356
index 1055de8059a20395ccf4f2396add1d5f1dd3be6f..1c8d66078293e40b60df6a52e7ba23bb382d770a 100644 (file)
@@ -3324,6 +3324,14 @@ set_initial_elim_offsets (void)
   num_not_at_initial_offset = 0;
 }
 
+/* Subroutine of set_initial_label_offsets called via for_each_eh_label.  */
+
+static void
+set_initial_eh_label_offset (rtx label)
+{
+  set_label_offsets (label, NULL_RTX, 1);
+}
+
 /* Initialize the known label offsets.
    Set a known offset for each forced label to be at the initial offset
    of each elimination.  We do this because we assume that all
@@ -3340,6 +3348,8 @@ set_initial_label_offsets (void)
   for (x = forced_labels; x; x = XEXP (x, 1))
     if (XEXP (x, 0))
       set_label_offsets (XEXP (x, 0), NULL_RTX, 1);
+
+  for_each_eh_label (set_initial_eh_label_offset);
 }
 
 /* Set all elimination offsets to the known values for the code label given