diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1994-11-14 18:46:08 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1994-11-14 18:46:08 -0500 |
commit | 4f48d56aa72831182c3d4ece0f8065865b36daf9 (patch) | |
tree | a3b7e76f47ac0ea37a6051c02353d36179d50ad4 /gcc | |
parent | e80316129f08a13630a1751c9eb9fea4d5888d35 (diff) | |
download | gcc-4f48d56aa72831182c3d4ece0f8065865b36daf9.zip gcc-4f48d56aa72831182c3d4ece0f8065865b36daf9.tar.gz gcc-4f48d56aa72831182c3d4ece0f8065865b36daf9.tar.bz2 |
(expand_call): If IS_CONST and VALREG == 0, end our sequence and emit
the insns.
From-SVN: r8431
Diffstat (limited to 'gcc')
-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 2d58770..b168e85 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. */ |