]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Avoid scheduling set of frame pointer across other insns
authorBernd Schmidt <bernds@redhat.co.uk>
Fri, 12 Jan 2001 16:33:07 +0000 (16:33 +0000)
committerBernd Schmidt <bernds@gcc.gnu.org>
Fri, 12 Jan 2001 16:33:07 +0000 (16:33 +0000)
From-SVN: r38945

gcc/ChangeLog
gcc/expr.c

index a67412aec5a0a5e282b68352a12d2eb1371305a8..9c84b0974f896fcaf68fd29d70d91feb17489589 100644 (file)
@@ -1,3 +1,8 @@
+2001-01-12  Bernd Schmidt  <bernds@redhat.co.uk>
+
+       * expr.c (expand_builtin_setjmp_receiver): Emit a scheduling barrier
+       as last insn.
+
 2001-01-11  Bernd Schmidt  <bernds@redhat.co.uk>
 
        * version.c: Bump.
index 3624f77b233758038dac4fa15619479a5dd67702..6499e6bc8ff843225a9606f3894f4a2d9968ab29 100644 (file)
@@ -8664,6 +8664,13 @@ expand_builtin_setjmp_receiver (receiver_label)
       {
        ; /* Nothing */
       }
+
+  /* @@@ This is a kludge.  Not all machine descriptions define a blockage
+     insn, but we must not allow the code we just generated to be reordered
+     by scheduling.  Specifically, the update of the frame pointer must
+     happen immediately, not later.  So emit an ASM_INPUT to act as blockage
+     insn.  */
+  emit_insn (gen_rtx_ASM_INPUT (VOIDmode, ""));
 }