summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcrux <crux@138bc75d-0d04-0410-961f-82ee72b054a4>2000-03-26 16:22:02 +0000
committercrux <crux@138bc75d-0d04-0410-961f-82ee72b054a4>2000-03-26 16:22:02 +0000
commit0e3150cec044f5d1fb78cbd90d9b6c0aaa5fbc74 (patch)
tree715ec6592e54cfdaa4ed91330895e8ce2eeda30a
parent45c68ff2c58d4b80189e511fbb1017fa82725bed (diff)
downloadppe42-gcc-0e3150cec044f5d1fb78cbd90d9b6c0aaa5fbc74.tar.gz
ppe42-gcc-0e3150cec044f5d1fb78cbd90d9b6c0aaa5fbc74.zip
Fix sibcall problem in jump.c.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32747 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/jump.c9
2 files changed, 13 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d4d8a0b439d..b767df4596d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2000-03-26 Bernd Schmidt <bernds@cygnus.co.uk>
+
+ * jump.c (mark_all_labels): Handle CALL_PLACEHOLDERs.
+
Sat Mar 25 09:12:10 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* Rework fields used to describe positions of bitfields and
diff --git a/gcc/jump.c b/gcc/jump.c
index 1aba12c286a..63cde04483e 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)
{
OpenPOWER on IntegriCloud