]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR rtl-optimization/12965 (SEGV+ICE in cc1plus on alpha-linux with -O2)
authorEric Botcazou <ebotcazou@libertysurf.fr>
Thu, 11 Dec 2003 07:48:07 +0000 (08:48 +0100)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Thu, 11 Dec 2003 07:48:07 +0000 (07:48 +0000)
Backport from mainline:

2003-12-07  Eric Botcazou  <ebotcazou@libertysurf.fr>

PR optimization/12965
* caller-save.c (save_call_clobbered_regs): Do not save/restore
registers around no-return calls.

From-SVN: r74530

gcc/ChangeLog
gcc/caller-save.c
gcc/testsuite/ChangeLog

index 158133a5c535c3ea743b0d3196b7d4714057bc52..69c4bbb3e9a0b49e924ef62443c3af4adce5220e 100644 (file)
@@ -1,3 +1,13 @@
+2003-12-11  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       Backport from mainline:
+
+       2003-12-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       PR optimization/12965
+       * caller-save.c (save_call_clobbered_regs): Do not save/restore
+       registers around no-return calls.
+
 2003-12-10  Andrew Pinski  <pinskia@physics.uc.edu>
 
        * emit-rtl.c (copy_rtx_if_shared_1): Fix warning.
index b7e3ceac7b5da8ccea592cadfe9a0cade857b2fc..bca2dd57adcdec93b8ec42a6a90a5da06ec683ec 100644 (file)
@@ -407,7 +407,7 @@ save_call_clobbered_regs ()
                  regno += insert_restore (chain, 1, regno, MOVE_MAX_WORDS, save_mode);
            }
 
-         if (code == CALL_INSN)
+         if (code == CALL_INSN && ! find_reg_note (insn, REG_NORETURN, NULL))
            {
              int regno;
              HARD_REG_SET hard_regs_to_save;
index 160394bf7850fd47a096bb1c424174e341b1fdaf..b36c36ca24d02418c835f90fa853005d66bde59c 100644 (file)
@@ -1,3 +1,11 @@
+2003-12-11  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       Backport from mainline:
+
+       2003-12-07  Falk Hueffner  <falk@debian.org>
+
+       * g++.dg/opt/noreturn-1.C: New test.
+
 2003-12-10  Robert Schiele  <rschiele@uni-mannheim.de>
 
        PR other/10819