aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1995-12-31 21:26:06 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1995-12-31 21:26:06 -0500
commitb55d9ff81426a8eaf68fbd962e5e41f788c82102 (patch)
tree450e329cb677e4dda5ea84fcab7d388740885f4a /gcc/function.c
parenteb7102fe24d45f561bba70a655e93ce5f0ff5d42 (diff)
downloadgcc-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.c13
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);