From 1466e38701d72d8f9655a467ca140fb2b8a10dab Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 1 Dec 2004 10:13:31 -0800 Subject: re PR rtl-optimization/15289 (reload error with non-lowpart subregs) PR rtl-opt/15289 * emit-rtl.c (gen_complex_constant_part): Remove. (gen_realpart, gen_imagpart): Remove. * rtl.h (gen_realpart, gen_imagpart): Remove. * expmed.c (extract_bit_field): Remove CONCAT hack catering to gen_realpart/gen_imagpart. * expr.c (write_complex_part, read_complex_part): New. (emit_move_via_alt_mode, emit_move_via_integer, emit_move_resolve_push, emit_move_complex_push, emit_move_complex, emit_move_ccmode, emit_move_multi_word): Split out from ... (emit_move_insn_1): ... here. (expand_expr_real_1) : Use write_complex_part. : Use read_complex_part. * function.c (assign_parm_setup_reg): Hard-code transformations instead of using gen_realpart/gen_imagpart. From-SVN: r91571 --- gcc/function.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'gcc/function.c') diff --git a/gcc/function.c b/gcc/function.c index 1021fc2..046a4ad 100644 --- a/gcc/function.c +++ b/gcc/function.c @@ -2869,10 +2869,11 @@ assign_parm_setup_reg (struct assign_parm_data_all *all, tree parm, { enum machine_mode submode = GET_MODE_INNER (GET_MODE (parmreg)); - int regnor = REGNO (gen_realpart (submode, parmreg)); - int regnoi = REGNO (gen_imagpart (submode, parmreg)); - rtx stackr = gen_realpart (submode, data->stack_parm); - rtx stacki = gen_imagpart (submode, data->stack_parm); + int regnor = REGNO (XEXP (parmreg, 0)); + int regnoi = REGNO (XEXP (parmreg, 1)); + rtx stackr = adjust_address_nv (data->stack_parm, submode, 0); + rtx stacki = adjust_address_nv (data->stack_parm, submode, + GET_MODE_SIZE (submode)); /* Scan backwards for the set of the real and imaginary parts. */ -- cgit v1.1