aboutsummaryrefslogtreecommitdiff
path: root/gcc/jump.c
diff options
context:
space:
mode:
authorBernd Schmidt <bernds@cygnus.co.uk>2000-03-26 16:22:02 +0000
committerBernd Schmidt <crux@gcc.gnu.org>2000-03-26 16:22:02 +0000
commit210ee0dd95258398bfaefb33d320afd5f5e5c7ee (patch)
tree715ec6592e54cfdaa4ed91330895e8ce2eeda30a /gcc/jump.c
parentadc66edadbeddb720fff2de7a153d631caf5995a (diff)
downloadgcc-210ee0dd95258398bfaefb33d320afd5f5e5c7ee.zip
gcc-210ee0dd95258398bfaefb33d320afd5f5e5c7ee.tar.gz
gcc-210ee0dd95258398bfaefb33d320afd5f5e5c7ee.tar.bz2
Fix sibcall problem in jump.c.
From-SVN: r32747
Diffstat (limited to 'gcc/jump.c')
-rw-r--r--gcc/jump.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/jump.c b/gcc/jump.c
index 1aba12c..63cde04 100644
--- a/gcc/jump.c
+++ b/gcc/jump.c
@@ -2265,6 +2265,15 @@ mark_all_labels (f, cross_jump)
for (insn = f; insn; insn = NEXT_INSN (insn))
if (GET_RTX_CLASS (GET_CODE (insn)) == 'i')
{
+ if (GET_CODE (insn) == CALL_INSN
+ && GET_CODE (PATTERN (insn)) == CALL_PLACEHOLDER)
+ {
+ mark_all_labels (XEXP (PATTERN (insn), 0), cross_jump);
+ mark_all_labels (XEXP (PATTERN (insn), 1), cross_jump);
+ mark_all_labels (XEXP (PATTERN (insn), 2), cross_jump);
+ continue;
+ }
+
mark_jump_label (PATTERN (insn), insn, cross_jump, 0);
if (! INSN_DELETED_P (insn) && GET_CODE (insn) == JUMP_INSN)
{