From d20b11909f9014b4fb2988efbbde83bae0de3f56 Mon Sep 17 00:00:00 2001 From: Eric Botcazou Date: Tue, 21 Dec 2004 08:49:58 +0100 Subject: 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 --- gcc/expr.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'gcc/expr.c') diff --git a/gcc/expr.c b/gcc/expr.c index bfc6b68..3a09222 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -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)); -- cgit v1.1