From 4582b84915e6c7c3eed9daf55d8bc1839249203f Mon Sep 17 00:00:00 2001 From: James E Wilson Date: Tue, 2 Dec 2003 01:12:11 +0000 Subject: [PATCH] re PR target/8407 ([IA-64] ICE in simplify_gen_subreg, at simplify-rtx.c:2711 with very simple code) 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 | 6 ++++++ gcc/config/ia64/ia64.c | 5 +++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0507e0d6791..9fec01b06df 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-12-01 James E Wilson + + 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 * ggc.h (struct alloc_zone): Move forward declaration up. diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index efbee69b779..8023bbff945 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -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)); } -- 2.30.2