(assign_temp): Add extra arg, DONT_PROMOTE.
authorRichard Kenner <kenner@gcc.gnu.org>
Mon, 1 Jan 1996 02:26:06 +0000 (21:26 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Mon, 1 Jan 1996 02:26:06 +0000 (21:26 -0500)
Don't return (const_int 0) for VOIDmode.

From-SVN: r10923

gcc/function.c

index 7d103c33f367cd7cc17b95bca56e438573a70225..66ff42091b626b3253fbb8002eac98fcc247f576 100644 (file)
@@ -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);