diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1995-12-31 21:26:06 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1995-12-31 21:26:06 -0500 |
commit | b55d9ff81426a8eaf68fbd962e5e41f788c82102 (patch) | |
tree | 450e329cb677e4dda5ea84fcab7d388740885f4a /gcc/function.c | |
parent | eb7102fe24d45f561bba70a655e93ce5f0ff5d42 (diff) | |
download | gcc-b55d9ff81426a8eaf68fbd962e5e41f788c82102.zip gcc-b55d9ff81426a8eaf68fbd962e5e41f788c82102.tar.gz gcc-b55d9ff81426a8eaf68fbd962e5e41f788c82102.tar.bz2 |
(assign_temp): Add extra arg, DONT_PROMOTE.
Don't return (const_int 0) for VOIDmode.
From-SVN: r10923
Diffstat (limited to 'gcc/function.c')
-rw-r--r-- | gcc/function.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/gcc/function.c b/gcc/function.c index 7d103c3..66ff420 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -922,13 +922,16 @@ assign_stack_temp (mode, size, keep) /* Assign a temporary of given TYPE. KEEP is as for assign_stack_temp. MEMORY_REQUIRED is 1 if the result must be addressable stack memory; - it is 0 if a register is OK. */ + it is 0 if a register is OK. + DONT_PROMOTE is 1 if we should not promote values in register + to wider modes. */ rtx -assign_temp (type, keep, memory_required) +assign_temp (type, keep, memory_required, dont_promote) tree type; int keep; int memory_required; + int dont_promote; { enum machine_mode mode = TYPE_MODE (type); int unsignedp = TREE_UNSIGNED (type); @@ -952,11 +955,9 @@ assign_temp (type, keep, memory_required) return tmp; } - if (mode == VOIDmode) - return const0_rtx; - #ifndef PROMOTE_FOR_CALL_ONLY - mode = promote_mode (type, mode, &unsignedp, 0); + if (! dont_promote) + mode = promote_mode (type, mode, &unsignedp, 0); #endif return gen_reg_rtx (mode); |