diff options
author | Eric Botcazou <ebotcazou@libertysurf.fr> | 2004-12-21 08:49:58 +0100 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2004-12-21 07:49:58 +0000 |
commit | d20b11909f9014b4fb2988efbbde83bae0de3f56 (patch) | |
tree | 3badf38ecf51207fae3960ad1b6aa8eef4aefaf2 /gcc | |
parent | bd340349092b1d189d798f8d3654244b4141da45 (diff) | |
download | gcc-d20b11909f9014b4fb2988efbbde83bae0de3f56.zip gcc-d20b11909f9014b4fb2988efbbde83bae0de3f56.tar.gz gcc-d20b11909f9014b4fb2988efbbde83bae0de3f56.tar.bz2 |
expr.c (emit_group_load_1): Return the source if the move is a regular move between complex values.
* expr.c (emit_group_load_1): Return the source if the move
is a regular move between complex values.
From-SVN: r92455
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/expr.c | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cbcd64f..188b7ec 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2004-12-21 Eric Botcazou <ebotcazou@libertysurf.fr> + + * expr.c (emit_group_load_1): Return the source if the move + is a regular move between complex values. + 2004-12-20 Roger Sayle <roger@eyesopen.com> PR middle-end/18683 @@ -1650,6 +1650,11 @@ emit_group_load_1 (rtx *tmps, rtx dst, rtx orig_src, tree type, int ssize) tmps[i] = gen_reg_rtx (mode); emit_move_insn (tmps[i], adjust_address (src, mode, bytepos)); } + else if (COMPLEX_MODE_P (mode) + && GET_MODE (src) == mode + && bytelen == GET_MODE_SIZE (mode)) + /* Let emit_move_complex do the bulk of the work. */ + tmps[i] = src; else if (GET_CODE (src) == CONCAT) { unsigned int slen = GET_MODE_SIZE (GET_MODE (src)); |