diff options
Diffstat (limited to 'gcc/expr.c')
-rw-r--r-- | gcc/expr.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/gcc/expr.c b/gcc/expr.c index e4d97772cc8..8dd9a8678b5 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -54,9 +54,11 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #ifdef PUSH_ROUNDING +#ifndef PUSH_ARGS_REVERSED #if defined (STACK_GROWS_DOWNWARD) != defined (ARGS_GROW_DOWNWARD) #define PUSH_ARGS_REVERSED /* If it's last to first. */ #endif +#endif #endif @@ -3150,11 +3152,7 @@ emit_move_insn_1 (x, y) /* Expand complex moves by moving real part and imag part, if possible. */ else if ((class == MODE_COMPLEX_FLOAT || class == MODE_COMPLEX_INT) - && BLKmode != (submode = mode_for_size ((GET_MODE_UNIT_SIZE (mode) - * BITS_PER_UNIT), - (class == MODE_COMPLEX_INT - ? MODE_INT : MODE_FLOAT), - 0)) + && BLKmode != (submode = GET_MODE_INNER (mode)) && (mov_optab->handlers[(int) submode].insn_code != CODE_FOR_nothing)) { |