re PR target/8407 ([IA-64] ICE in simplify_gen_subreg, at simplify-rtx.c:2711 with...
authorJames E Wilson <wilson@specifixinc.com>
Tue, 2 Dec 2003 01:12:11 +0000 (01:12 +0000)
committerJim Wilson <wilson@gcc.gnu.org>
Tue, 2 Dec 2003 01:12:11 +0000 (17:12 -0800)
PR target/8407
* config/ia64/ia64.c (ia64_function_arg): For single-reg HFA, call
gen_rtx_REG to create new reg with argument mode.

From-SVN: r74142

gcc/ChangeLog
gcc/config/ia64/ia64.c

index 0507e0d..9fec01b 100644 (file)
@@ -1,3 +1,9 @@
+2003-12-01  James E Wilson  <wilson@specifixinc.com>
+
+       PR target/8407
+       * config/ia64/ia64.c (ia64_function_arg): For single-reg HFA, call
+       gen_rtx_REG to create new reg with argument mode.
+
 2003-12-01  Steven Bosscher  <stevenb@suse.de>
 
        * ggc.h (struct alloc_zone): Move forward declaration up.
index efbee69..8023bbf 100644 (file)
@@ -3527,9 +3527,10 @@ ia64_function_arg (CUMULATIVE_ARGS *cum, enum machine_mode mode, tree type,
                      ? 1 : GET_MODE_SIZE (gr_mode) / UNITS_PER_WORD;
        }
 
-      /* If we ended up using just one location, just return that one loc.  */
+      /* If we ended up using just one location, just return that one loc, but
+        change the mode back to the argument mode.  */
       if (i == 1)
-       return XEXP (loc[0], 0);
+       return gen_rtx_REG (mode, REGNO (XEXP (loc[0], 0)));
       else
        return gen_rtx_PARALLEL (mode, gen_rtvec_v (i, loc));
     }