aboutsummaryrefslogtreecommitdiff
path: root/gcc/builtins.c
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/builtins.c
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/builtins.c')
-rw-r--r--gcc/builtins.c7
1 files changed, 7 insertions, 0 deletions
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