aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@redhat.com>2003-06-16 06:26:03 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2003-06-16 06:26:03 +0000
commit695a94b30aef2dbf9d30e96d02c8fdfa5d99c3eb (patch)
tree2ecd38868f22ba9382ae22d97394f481c7e6a628 /gcc
parenta5c2492672af53c58d1649e1c0f0291923516f47 (diff)
downloadgcc-695a94b30aef2dbf9d30e96d02c8fdfa5d99c3eb.zip
gcc-695a94b30aef2dbf9d30e96d02c8fdfa5d99c3eb.tar.gz
gcc-695a94b30aef2dbf9d30e96d02c8fdfa5d99c3eb.tar.bz2
* optabs.c (emit_libcall_block): Don't hoist insns past a label.
From-SVN: r68001
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/optabs.c5
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d9c45b1..e4215a2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2003-06-16 Richard Sandiford <rsandifo@redhat.com>
+
+ * optabs.c (emit_libcall_block): Don't hoist insns past a label.
+
2003-06-16 Richard Henderson <rth@redhat.com>
* config/alpha/alpha-protos.h, config/alpha/elf.h,
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 06299e8..18d9e2a 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -3449,6 +3449,11 @@ emit_libcall_block (insns, target, result, equiv)
add_insn (insn);
}
+
+ /* Some ports use a loop to copy large arguments onto the stack.
+ Don't move anything outside such a loop. */
+ if (GET_CODE (insn) == CODE_LABEL)
+ break;
}
prev = get_last_insn ();