diff options
author | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-11-14 23:46:08 +0000 |
---|---|---|
committer | kenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4> | 1994-11-14 23:46:08 +0000 |
commit | 541d8ad535fa9062790b2f7d4c5c41f92d497df6 (patch) | |
tree | a3b7e76f47ac0ea37a6051c02353d36179d50ad4 /gcc/calls.c | |
parent | 549f5efcd8166402e182be87f62fac3b7dc119d6 (diff) | |
download | gcc-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.c | 13 |
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. */ |