aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1997-10-15 23:41:10 +0000
committerJeff Law <law@gcc.gnu.org>1997-10-15 17:41:10 -0600
commitcdc0de30d8f426cd710aa7c2252829822a37d806 (patch)
tree243a29dafe0a3c24dcd48944b82cd8f3d97ff1ae /gcc
parentaf4142d50b403bbb06da55f464e0ddebf22854d9 (diff)
downloadgcc-cdc0de30d8f426cd710aa7c2252829822a37d806.zip
gcc-cdc0de30d8f426cd710aa7c2252829822a37d806.tar.gz
gcc-cdc0de30d8f426cd710aa7c2252829822a37d806.tar.bz2
pa.c (following_call): Fail if the CALL_INSN is an indirect call.
* pa.c (following_call): Fail if the CALL_INSN is an indirect call. Brought over from devo. From-SVN: r15914
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/pa/pa.c15
2 files changed, 15 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0e8a1ef..34a1d58 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Wed Oct 15 17:42:41 1997 Jeffrey A Law (law@cygnus.com)
+
+ * pa.c (following_call): Fail if the CALL_INSN is an indirect
+ call.
+
Tue Oct 14 12:01:00 1997 Mark Mitchell <mmitchell@usa.net>
* cplus-dem.c (demangle_signature): Don't look for return types on
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 37a7d49..5a1ccbb 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -5794,10 +5794,14 @@ output_parallel_addb (operands, length)
}
}
-/* Return nonzero if INSN (a jump insn) immediately follows a call. This
- is used to discourage creating parallel movb/addb insns since a jump
- which immediately follows a call can execute in the delay slot of the
- call. */
+/* Return nonzero if INSN (a jump insn) immediately follows a call to
+ a named function. This is used to discourage creating parallel movb/addb
+ insns since a jump which immediately follows a call can execute in the
+ delay slot of the call.
+
+ It is also used to avoid filling the delay slot of a jump which
+ immediately follows a call since the jump can usually be eliminated
+ completely by modifying RP in the delay slot of the call. */
following_call (insn)
rtx insn;
@@ -5809,7 +5813,8 @@ following_call (insn)
/* Check for CALL_INSNs and millicode calls. */
if (insn
- && (GET_CODE (insn) == CALL_INSN
+ && ((GET_CODE (insn) == CALL_INSN
+ && get_attr_type (insn) != TYPE_DYNCALL)
|| (GET_CODE (insn) == INSN
&& GET_CODE (PATTERN (insn)) != SEQUENCE
&& GET_CODE (PATTERN (insn)) != USE