summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2001-02-07 10:24:22 +0000
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>2001-02-07 10:24:22 +0000
commit57f6bb944b37240d55becfc2dd79c034e9ef16ae (patch)
treeb23d5df0e9bf6fbfdad54bc32f946648fd2b7011
parent8461b831308e0491402a9eb8bbc8a5c275570599 (diff)
downloadppe42-gcc-57f6bb944b37240d55becfc2dd79c034e9ef16ae.tar.gz
ppe42-gcc-57f6bb944b37240d55becfc2dd79c034e9ef16ae.zip
Avoid scheduling builtin setjmp receivers
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39515 138bc75d-0d04-0410-961f-82ee72b054a4
-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 09a3a714645..baa60ba6778 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 1a6d87f77d4..3dedc5b336a 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
OpenPOWER on IntegriCloud