summaryrefslogtreecommitdiff
path: root/gcc/calls.c
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1994-11-14 23:46:08 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>1994-11-14 23:46:08 +0000
commit541d8ad535fa9062790b2f7d4c5c41f92d497df6 (patch)
treea3b7e76f47ac0ea37a6051c02353d36179d50ad4 /gcc/calls.c
parent549f5efcd8166402e182be87f62fac3b7dc119d6 (diff)
downloadgcc-541d8ad535fa9062790b2f7d4c5c41f92d497df6.tar.gz
(expand_call): If IS_CONST and VALREG == 0, end our sequence and emit
the insns. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@8431 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/calls.c')
-rw-r--r--gcc/calls.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index 2d58770f67a..b168e85c3eb 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -1624,10 +1624,11 @@ expand_call (exp, target, ignore)
&& args[i].mode != BLKmode
&& rtx_cost (args[i].value, SET) > 2
#ifdef SMALL_REGISTER_CLASSES
- && (reg_parm_seen || preserve_subexpressions_p ()))
+ && (reg_parm_seen || preserve_subexpressions_p ())
#else
- && preserve_subexpressions_p ())
+ && preserve_subexpressions_p ()
#endif
+ )
args[i].value = copy_to_mode_reg (args[i].mode, args[i].value);
}
@@ -1909,6 +1910,14 @@ expand_call (exp, target, ignore)
valreg = temp;
}
+ else if (is_const)
+ {
+ /* Otherwise, just write out the sequence without a note. */
+ rtx insns = get_insns ();
+
+ end_sequence ();
+ emit_insns (insns);
+ }
/* For calls to `setjmp', etc., inform flow.c it should complain
if nonvolatile values are live. */