summaryrefslogtreecommitdiff
path: root/gcc/config/ia64
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2003-12-02 01:12:11 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>2003-12-02 01:12:11 +0000
commit0c20c3aac51ceb2f050ba925a1ded78fe3a5f55f (patch)
tree197a8fa6291d38ddb082182ce38b7dce6ab2d49a /gcc/config/ia64
parent047627813008e8d2739687ab85b7883dca08347c (diff)
downloadgcc-0c20c3aac51ceb2f050ba925a1ded78fe3a5f55f.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@74142 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/ia64')
-rw-r--r--gcc/config/ia64/ia64.c5
1 files changed, 3 insertions, 2 deletions
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));
}