--- /dev/null
+(http://gcc.gnu.org/ml/gcc-patches/2003-12/msg00630.html)
+2003-12-06 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR optimization/12965
+ * caller-save.c (save_call_clobbered_regs): Do not save/restore
+ registers around no-return calls.
+
+--- gcc-3.3.2/gcc/caller-save.c.orig 2002-06-13 12:24:00.000000000 +0000
++++ gcc-3.3.2/gcc/caller-save.c 2003-12-06 15:29:08.000000000 +0000
+@@ -407,7 +407,7 @@
+ 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;