aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@redhat.com>2001-02-07 10:24:22 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2001-02-07 10:24:22 +0000
commitbcd7edfe5ee015bf0975d934a7a9924041be7b0f (patch)
treeb23d5df0e9bf6fbfdad54bc32f946648fd2b7011 /gcc
parentb3eda2ff9c86c4199ce423e3ee35188471f5f8a6 (diff)
downloadgcc-bcd7edfe5ee015bf0975d934a7a9924041be7b0f.zip
gcc-bcd7edfe5ee015bf0975d934a7a9924041be7b0f.tar.gz
gcc-bcd7edfe5ee015bf0975d934a7a9924041be7b0f.tar.bz2
Avoid scheduling builtin setjmp receivers
From-SVN: r39515
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/builtins.c7
2 files changed, 12 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 09a3a71..baa60ba 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2001-02-07 Bernd Schmidt <bernds@redhat.com>
+
+ * builtins.c (expand_builtin_setjmp_receiver): Emit an ASM_INPUT as
+ a scheduling barrier at the end.
+
2001-02-07 Alexandre Oliva <aoliva@redhat.com>
* config/sh/sh.md (reload_outsf): Removed.
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 1a6d87f..3dedc5b 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -581,6 +581,13 @@ expand_builtin_setjmp_receiver (receiver_label)
else
#endif
{ /* 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, ""));
}
/* __builtin_setjmp is passed a pointer to an array of five words (not