+Sat Sep 18 01:07:21 1999 Jeffrey A Law (law@cygnus.com)
+
+ * pa.h (INSN_SETS_ARE_DELAYED): Delete.
+ * pa.c (insn_refs_are_delayed): Renamed from
+ insn_sets_and_refs_are_delayed.
+
Fri Sep 17 15:19:01 1999 Mark Mitchell <mark@codesourcery.com>
* functiion.h (struct function): Add x_whole_function_mode_p.
return 1;
}
-/* Return nonzero if sets and references for INSN are delayed.
+/* Return nonzero if references for INSN are delayed.
Millicode insns are actually function calls with some special
constraints on arguments and register usage.
filter out things it will not accept -- SEQUENCE, USE and CLOBBER insns
in particular. */
int
-insn_sets_and_refs_are_delayed (insn)
+insn_refs_are_delayed (insn)
rtx insn;
{
return ((GET_CODE (insn) == INSN
are expected to clobber their arguments, %r1, %r29, and %r31 and
nothing else.
- These macros tell reorg that the references to arguments and
- register clobbers for millicode calls do not appear to happen
- until after the millicode call. This allows reorg to put insns
- which set the argument registers into the delay slot of the millicode
- call -- thus they act more like traditional CALL_INSNs.
+ This macro tells reorg that the references to arguments and
+ millicode calls do not appear to happen until after the millicode call.
+ This allows reorg to put insns which set the argument registers into the
+ delay slot of the millicode call -- thus they act more like traditional
+ CALL_INSNs.
+
+ Note we can not consider side effects of the insn to be delayed because
+ the branch and link insn will clobber the return pointer. If we happened
+ to use the return pointer in the delay slot of the call, then we lose.
get_attr_type will try to recognize the given insn, so make sure to
filter out things it will not accept -- SEQUENCE, USE and CLOBBER insns
in particular. */
-#define INSN_SETS_ARE_DELAYED(X) (insn_sets_and_refs_are_delayed (X))
-#define INSN_REFERENCES_ARE_DELAYED(X) (insn_sets_and_refs_are_delayed (X))
+#define INSN_REFERENCES_ARE_DELAYED(X) (insn_refs_are_delayed (X))
\f
/* Control the assembler format that we output. */