From 8ec3c5c2f80dd6d2561899354c2d9d1d66551f12 Mon Sep 17 00:00:00 2001 From: dalecki Date: Tue, 31 Jan 2006 04:44:14 +0000 Subject: [PATCH] 2006-01-30 Marcin Dalecki * expr.h (expand_normal): new inline function. * builtins.c: use it, use EXPAND_NORMAL explicitely. * dojump.c: use it. * dwarf2out.c: use it. * expr.c: use it. * calls.c: use it. * expmed.c: use it. * except.c: use it. * config/sparc/sparc.c: use it. * config/i386/i386.c: use it. * config/rs6000/rs6000.c: use it. * config/arm/arm.c: use it. * config/mips/mips.c: use it. * stmt.c: use it, use EXPAND_NORMAL explicitely. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@110428 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 17 ++++++++++ gcc/builtins.c | 64 ++++++++++++++++++------------------- gcc/calls.c | 10 +++--- gcc/config/arm/arm.c | 32 +++++++++---------- gcc/config/i386/i386.c | 66 +++++++++++++++++++------------------- gcc/config/mips/mips.c | 2 +- gcc/config/rs6000/rs6000.c | 68 +++++++++++++++++++-------------------- gcc/config/sparc/sparc.c | 2 +- gcc/dojump.c | 14 ++++---- gcc/dwarf2out.c | 2 +- gcc/except.c | 2 +- gcc/expmed.c | 2 +- gcc/expr.c | 74 ++++++++++++++++++++---------------------- gcc/expr.h | 8 ++++- gcc/stmt.c | 80 +++++++++++++++++----------------------------- 15 files changed, 218 insertions(+), 225 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4e59d8dc8b1..9dd204de106 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,20 @@ +2006-01-30 Marcin Dalecki + + * expr.h (expand_normal): new inline function. + * builtins.c: use it, use EXPAND_NORMAL explicitely. + * dojump.c: use it. + * dwarf2out.c: use it. + * expr.c: use it. + * calls.c: use it. + * expmed.c: use it. + * except.c: use it. + * config/sparc/sparc.c: use it. + * config/i386/i386.c: use it. + * config/rs6000/rs6000.c: use it. + * config/arm/arm.c: use it. + * config/mips/mips.c: use it. + * stmt.c: use it, use EXPAND_NORMAL explicitely. + 2006-01-30 Roger Sayle * config/i386/cygwin.h (GCC_DRIVER_HOST_INITIALIZATION): Cast diff --git a/gcc/builtins.c b/gcc/builtins.c index 896fc48a4de..bb113dc7f7b 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -700,7 +700,7 @@ expand_builtin_setjmp (tree arglist, rtx target) || REGNO (target) < FIRST_PSEUDO_REGISTER) target = gen_reg_rtx (TYPE_MODE (integer_type_node)); - buf_addr = expand_expr (TREE_VALUE (arglist), NULL_RTX, VOIDmode, 0); + buf_addr = expand_normal (TREE_VALUE (arglist)); next_lab = gen_label_rtx (); cont_lab = gen_label_rtx (); @@ -842,9 +842,9 @@ expand_builtin_nonlocal_goto (tree arglist) arglist = TREE_CHAIN (arglist); t_save_area = TREE_VALUE (arglist); - r_label = expand_expr (t_label, NULL_RTX, VOIDmode, 0); + r_label = expand_normal (t_label); r_label = convert_memory_address (Pmode, r_label); - r_save_area = expand_expr (t_save_area, NULL_RTX, VOIDmode, 0); + r_save_area = expand_normal (t_save_area); r_save_area = convert_memory_address (Pmode, r_save_area); r_fp = gen_rtx_MEM (Pmode, r_save_area); r_sp = gen_rtx_MEM (STACK_SAVEAREA_MODE (SAVE_NONLOCAL), @@ -975,7 +975,7 @@ expand_builtin_prefetch (tree arglist) error ("second argument to %<__builtin_prefetch%> must be a constant"); arg1 = integer_zero_node; } - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + op1 = expand_normal (arg1); /* Argument 1 must be either zero or one. */ if (INTVAL (op1) != 0 && INTVAL (op1) != 1) { @@ -990,7 +990,7 @@ expand_builtin_prefetch (tree arglist) error ("third argument to %<__builtin_prefetch%> must be a constant"); arg2 = integer_zero_node; } - op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0); + op2 = expand_normal (arg2); /* Argument 2 must be 0, 1, 2, or 3. */ if (INTVAL (op2) < 0 || INTVAL (op2) > 3) { @@ -2019,8 +2019,8 @@ expand_builtin_mathfn_2 (tree exp, rtx target, rtx subtarget) if (! stable) exp = build_function_call_expr (fndecl, arglist); - op0 = expand_expr (arg0, subtarget, VOIDmode, 0); - op1 = expand_expr (arg1, 0, VOIDmode, 0); + op0 = expand_expr (arg0, subtarget, VOIDmode, EXPAND_NORMAL); + op1 = expand_normal (arg1); start_sequence (); @@ -2193,9 +2193,9 @@ expand_builtin_sincos (tree exp) target1 = gen_reg_rtx (mode); target2 = gen_reg_rtx (mode); - op0 = expand_expr (arg, NULL_RTX, VOIDmode, 0); - op1 = expand_expr (build_fold_indirect_ref (sinp), NULL_RTX, VOIDmode, 0); - op2 = expand_expr (build_fold_indirect_ref (cosp), NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg); + op1 = expand_normal (build_fold_indirect_ref (sinp)); + op2 = expand_normal (build_fold_indirect_ref (cosp)); /* Compute into target1 and target2. Set TARGET to wherever the result comes back. */ @@ -2857,7 +2857,7 @@ expand_builtin_memcpy (tree exp, rtx target, enum machine_mode mode) dest_mem = get_memory_rtx (dest, len); set_mem_align (dest_mem, dest_align); - len_rtx = expand_expr (len, NULL_RTX, VOIDmode, 0); + len_rtx = expand_normal (len); src_str = c_getstr (src); /* If SRC is a string constant and block move would be done @@ -2944,7 +2944,7 @@ expand_builtin_mempcpy (tree arglist, tree type, rtx target, enum machine_mode m if (! host_integerp (len, 1)) return 0; - len_rtx = expand_expr (len, NULL_RTX, VOIDmode, 0); + len_rtx = expand_normal (len); src_str = c_getstr (src); /* If SRC is a string constant and block move would be done @@ -3215,7 +3215,7 @@ expand_builtin_stpcpy (tree exp, rtx target, enum machine_mode mode) if (TREE_CODE (len) == INTEGER_CST) { - rtx len_rtx = expand_expr (len, NULL_RTX, VOIDmode, 0); + rtx len_rtx = expand_normal (len); if (GET_CODE (len_rtx) == CONST_INT) { @@ -3396,7 +3396,7 @@ expand_builtin_memset (tree arglist, rtx target, enum machine_mode mode, return expand_expr (dest, target, mode, EXPAND_NORMAL); } - len_rtx = expand_expr (len, NULL_RTX, VOIDmode, 0); + len_rtx = expand_normal (len); dest_mem = get_memory_rtx (dest, len); if (TREE_CODE (val) != INTEGER_CST) @@ -3404,7 +3404,7 @@ expand_builtin_memset (tree arglist, rtx target, enum machine_mode mode, rtx val_rtx; val = fold_build1 (CONVERT_EXPR, unsigned_char_type_node, val); - val_rtx = expand_expr (val, NULL_RTX, VOIDmode, 0); + val_rtx = expand_normal (val); /* Assume that we can memset by pieces if we can store the * the coefficients by pieces (in the required modes). @@ -3550,7 +3550,7 @@ expand_builtin_memcmp (tree exp ATTRIBUTE_UNUSED, tree arglist, rtx target, arg1_rtx = get_memory_rtx (arg1, len); arg2_rtx = get_memory_rtx (arg2, len); - arg3_rtx = expand_expr (len, NULL_RTX, VOIDmode, 0); + arg3_rtx = expand_normal (len); /* Set MEM_SIZE as appropriate. */ if (GET_CODE (arg3_rtx) == CONST_INT) @@ -3709,7 +3709,7 @@ expand_builtin_strcmp (tree exp, rtx target, enum machine_mode mode) return 0; /* Stabilize the arguments in case gen_cmpstrnsi fails. */ - arg3_rtx = expand_expr (len, NULL_RTX, VOIDmode, 0); + arg3_rtx = expand_normal (len); /* Make a place to write the result of the instruction. */ result = target; @@ -3849,7 +3849,7 @@ expand_builtin_strncmp (tree exp, rtx target, enum machine_mode mode) arg1_rtx = get_memory_rtx (arg1, len); arg2_rtx = get_memory_rtx (arg2, len); - arg3_rtx = expand_expr (len, NULL_RTX, VOIDmode, 0); + arg3_rtx = expand_normal (len); insn = gen_cmpstrnsi (result, arg1_rtx, arg2_rtx, arg3_rtx, GEN_INT (MIN (arg1_align, arg2_align))); if (insn) @@ -4516,7 +4516,7 @@ expand_builtin_alloca (tree arglist, rtx target) return 0; /* Compute the argument. */ - op0 = expand_expr (TREE_VALUE (arglist), NULL_RTX, VOIDmode, 0); + op0 = expand_normal (TREE_VALUE (arglist)); /* Allocate the desired space. */ result = allocate_dynamic_stack_space (op0, target, BITS_PER_UNIT); @@ -4774,10 +4774,10 @@ expand_builtin_copysign (tree arglist, rtx target, rtx subtarget) return 0; arg = TREE_VALUE (arglist); - op0 = expand_expr (arg, subtarget, VOIDmode, 0); + op0 = expand_expr (arg, subtarget, VOIDmode, EXPAND_NORMAL); arg = TREE_VALUE (TREE_CHAIN (arglist)); - op1 = expand_expr (arg, NULL, VOIDmode, 0); + op1 = expand_normal (arg); return expand_copysign (op0, op1, target); } @@ -5174,9 +5174,9 @@ expand_builtin_init_trampoline (tree arglist) arglist = TREE_CHAIN (arglist); t_chain = TREE_VALUE (arglist); - r_tramp = expand_expr (t_tramp, NULL_RTX, VOIDmode, 0); - r_func = expand_expr (t_func, NULL_RTX, VOIDmode, 0); - r_chain = expand_expr (t_chain, NULL_RTX, VOIDmode, 0); + r_tramp = expand_normal (t_tramp); + r_func = expand_normal (t_func); + r_chain = expand_normal (t_chain); /* Generate insns to initialize the trampoline. */ r_tramp = round_trampoline_addr (r_tramp); @@ -5200,7 +5200,7 @@ expand_builtin_adjust_trampoline (tree arglist) if (!validate_arglist (arglist, POINTER_TYPE, VOID_TYPE)) return NULL_RTX; - tramp = expand_expr (TREE_VALUE (arglist), NULL_RTX, VOIDmode, 0); + tramp = expand_normal (TREE_VALUE (arglist)); tramp = round_trampoline_addr (tramp); #ifdef TRAMPOLINE_ADJUST_ADDRESS TRAMPOLINE_ADJUST_ADDRESS (tramp); @@ -5247,7 +5247,7 @@ expand_builtin_signbit (tree exp, rtx target) return expand_expr (arg, target, VOIDmode, EXPAND_NORMAL); } - temp = expand_expr (arg, NULL_RTX, VOIDmode, 0); + temp = expand_normal (arg); if (GET_MODE_SIZE (fmode) <= UNITS_PER_WORD) { imode = int_mode_for_mode (fmode); @@ -5726,7 +5726,7 @@ expand_builtin (tree exp, rtx target, rtx subtarget, enum machine_mode mode, rtx ops[3]; for (t = arglist, i = 0; t; t = TREE_CHAIN (t), i++) - ops[i] = expand_expr (TREE_VALUE (t), NULL_RTX, VOIDmode, 0); + ops[i] = expand_normal (TREE_VALUE (t)); return expand_builtin_apply (ops[0], ops[1], ops[2]); } @@ -5736,8 +5736,7 @@ expand_builtin (tree exp, rtx target, rtx subtarget, enum machine_mode mode, memory returned by __builtin_apply. */ case BUILT_IN_RETURN: if (validate_arglist (arglist, POINTER_TYPE, VOID_TYPE)) - expand_builtin_return (expand_expr (TREE_VALUE (arglist), - NULL_RTX, VOIDmode, 0)); + expand_builtin_return (expand_normal (TREE_VALUE (arglist))); return const0_rtx; case BUILT_IN_SAVEREGS: @@ -5970,9 +5969,8 @@ expand_builtin (tree exp, rtx target, rtx subtarget, enum machine_mode mode, else { rtx buf_addr = expand_expr (TREE_VALUE (arglist), subtarget, - VOIDmode, 0); - rtx value = expand_expr (TREE_VALUE (TREE_CHAIN (arglist)), - NULL_RTX, VOIDmode, 0); + VOIDmode, EXPAND_NORMAL); + rtx value = expand_normal (TREE_VALUE (TREE_CHAIN (arglist))); if (value != const1_rtx) { @@ -5996,7 +5994,7 @@ expand_builtin (tree exp, rtx target, rtx subtarget, enum machine_mode mode, if (validate_arglist (arglist, POINTER_TYPE, VOID_TYPE)) { rtx buf_addr - = expand_expr (TREE_VALUE (arglist), NULL_RTX, VOIDmode, 0); + = expand_normal (TREE_VALUE (arglist)); expand_builtin_update_setjmp_buf (buf_addr); return const0_rtx; diff --git a/gcc/calls.c b/gcc/calls.c index 2cc15fc2e81..e8ae80919c8 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -659,8 +659,7 @@ precompute_register_parameters (int num_actuals, struct arg_data *args, if (args[i].value == 0) { push_temp_slots (); - args[i].value = expand_expr (args[i].tree_value, NULL_RTX, - VOIDmode, 0); + args[i].value = expand_normal (args[i].tree_value); preserve_temp_slots (args[i].value); pop_temp_slots (); } @@ -1250,7 +1249,7 @@ precompute_arguments (int flags, int num_actuals, struct arg_data *args) gcc_assert (!TREE_ADDRESSABLE (TREE_TYPE (args[i].tree_value))); args[i].initial_value = args[i].value - = expand_expr (args[i].tree_value, NULL_RTX, VOIDmode, 0); + = expand_normal (args[i].tree_value); mode = TYPE_MODE (TREE_TYPE (args[i].tree_value)); if (mode != args[i].mode) @@ -1433,7 +1432,7 @@ rtx_for_function_call (tree fndecl, tree addr) /* Generate an rtx (probably a pseudo-register) for the address. */ { push_temp_slots (); - funexp = expand_expr (addr, NULL_RTX, VOIDmode, 0); + funexp = expand_normal (addr); pop_temp_slots (); /* FUNEXP can't be BLKmode. */ } return funexp; @@ -2545,8 +2544,7 @@ expand_call (tree exp, rtx target, int ignore) precompute_register_parameters (num_actuals, args, ®_parm_seen); if (TREE_OPERAND (exp, 2)) - static_chain_value = expand_expr (TREE_OPERAND (exp, 2), - NULL_RTX, VOIDmode, 0); + static_chain_value = expand_normal (TREE_OPERAND (exp, 2)); else static_chain_value = 0; diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 23f64aee38b..96ae449184b 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -12540,8 +12540,8 @@ arm_expand_binop_builtin (enum insn_code icode, rtx pat; tree arg0 = TREE_VALUE (arglist); tree arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - rtx op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); + rtx op1 = expand_normal (arg1); enum machine_mode tmode = insn_data[icode].operand[0].mode; enum machine_mode mode0 = insn_data[icode].operand[1].mode; enum machine_mode mode1 = insn_data[icode].operand[2].mode; @@ -12578,7 +12578,7 @@ arm_expand_unop_builtin (enum insn_code icode, { rtx pat; tree arg0 = TREE_VALUE (arglist); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); enum machine_mode tmode = insn_data[icode].operand[0].mode; enum machine_mode mode0 = insn_data[icode].operand[1].mode; @@ -12651,8 +12651,8 @@ arm_expand_builtin (tree exp, arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); tmode = insn_data[icode].operand[0].mode; mode0 = insn_data[icode].operand[1].mode; mode1 = insn_data[icode].operand[2].mode; @@ -12684,9 +12684,9 @@ arm_expand_builtin (tree exp, arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); - op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); + op2 = expand_normal (arg2); tmode = insn_data[icode].operand[0].mode; mode0 = insn_data[icode].operand[1].mode; mode1 = insn_data[icode].operand[2].mode; @@ -12715,14 +12715,14 @@ arm_expand_builtin (tree exp, case ARM_BUILTIN_SETWCX: arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - op0 = force_reg (SImode, expand_expr (arg0, NULL_RTX, VOIDmode, 0)); - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + op0 = force_reg (SImode, expand_normal (arg0)); + op1 = expand_normal (arg1); emit_insn (gen_iwmmxt_tmcr (op1, op0)); return 0; case ARM_BUILTIN_GETWCX: arg0 = TREE_VALUE (arglist); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); target = gen_reg_rtx (SImode); emit_insn (gen_iwmmxt_tmrc (target, op0)); return target; @@ -12731,8 +12731,8 @@ arm_expand_builtin (tree exp, icode = CODE_FOR_iwmmxt_wshufh; arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); tmode = insn_data[icode].operand[0].mode; mode1 = insn_data[icode].operand[1].mode; mode2 = insn_data[icode].operand[2].mode; @@ -12786,9 +12786,9 @@ arm_expand_builtin (tree exp, arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); - op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); + op2 = expand_normal (arg2); tmode = insn_data[icode].operand[0].mode; mode0 = insn_data[icode].operand[1].mode; mode1 = insn_data[icode].operand[2].mode; diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 55670ba13da..c9029f0090d 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -15275,8 +15275,8 @@ ix86_expand_binop_builtin (enum insn_code icode, tree arglist, rtx target) rtx pat, xops[3]; tree arg0 = TREE_VALUE (arglist); tree arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - rtx op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); + rtx op1 = expand_normal (arg1); enum machine_mode tmode = insn_data[icode].operand[0].mode; enum machine_mode mode0 = insn_data[icode].operand[1].mode; enum machine_mode mode1 = insn_data[icode].operand[2].mode; @@ -15343,8 +15343,8 @@ ix86_expand_store_builtin (enum insn_code icode, tree arglist) rtx pat; tree arg0 = TREE_VALUE (arglist); tree arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - rtx op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); + rtx op1 = expand_normal (arg1); enum machine_mode mode0 = insn_data[icode].operand[0].mode; enum machine_mode mode1 = insn_data[icode].operand[1].mode; @@ -15368,7 +15368,7 @@ ix86_expand_unop_builtin (enum insn_code icode, tree arglist, { rtx pat; tree arg0 = TREE_VALUE (arglist); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); enum machine_mode tmode = insn_data[icode].operand[0].mode; enum machine_mode mode0 = insn_data[icode].operand[1].mode; @@ -15403,7 +15403,7 @@ ix86_expand_unop1_builtin (enum insn_code icode, tree arglist, rtx target) { rtx pat; tree arg0 = TREE_VALUE (arglist); - rtx op1, op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); + rtx op1, op0 = expand_normal (arg0); enum machine_mode tmode = insn_data[icode].operand[0].mode; enum machine_mode mode0 = insn_data[icode].operand[1].mode; @@ -15439,8 +15439,8 @@ ix86_expand_sse_compare (const struct builtin_description *d, tree arglist, rtx pat; tree arg0 = TREE_VALUE (arglist); tree arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - rtx op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); + rtx op1 = expand_normal (arg1); rtx op2; enum machine_mode tmode = insn_data[d->icode].operand[0].mode; enum machine_mode mode0 = insn_data[d->icode].operand[1].mode; @@ -15491,8 +15491,8 @@ ix86_expand_sse_comi (const struct builtin_description *d, tree arglist, rtx pat; tree arg0 = TREE_VALUE (arglist); tree arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - rtx op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); + rtx op1 = expand_normal (arg1); rtx op2; enum machine_mode mode0 = insn_data[d->icode].operand[0].mode; enum machine_mode mode1 = insn_data[d->icode].operand[1].mode; @@ -15576,7 +15576,7 @@ ix86_expand_vec_init_builtin (tree type, tree arglist, rtx target) for (i = 0; i < n_elt; ++i, arglist = TREE_CHAIN (arglist)) { - rtx x = expand_expr (TREE_VALUE (arglist), NULL_RTX, VOIDmode, 0); + rtx x = expand_normal (TREE_VALUE (arglist)); RTVEC_ELT (v, i) = gen_lowpart (inner_mode, x); } @@ -15604,7 +15604,7 @@ ix86_expand_vec_ext_builtin (tree arglist, rtx target) arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); elt = get_element_number (TREE_TYPE (arg0), arg1); tmode = TYPE_MODE (TREE_TYPE (TREE_TYPE (arg0))); @@ -15696,9 +15696,9 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, arg1 = TREE_VALUE (arglist); arg2 = TREE_VALUE (TREE_CHAIN (arglist)); arg0 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); - op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); + op2 = expand_normal (arg2); mode0 = insn_data[icode].operand[0].mode; mode1 = insn_data[icode].operand[1].mode; mode2 = insn_data[icode].operand[2].mode; @@ -15741,8 +15741,8 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, : CODE_FOR_sse2_loadlpd); arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); tmode = insn_data[icode].operand[0].mode; mode0 = insn_data[icode].operand[1].mode; mode1 = insn_data[icode].operand[2].mode; @@ -15765,8 +15765,8 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, : CODE_FOR_sse_storelps); arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); mode0 = insn_data[icode].operand[0].mode; mode1 = insn_data[icode].operand[1].mode; @@ -15785,7 +15785,7 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, return ix86_expand_store_builtin (CODE_FOR_sse_movntdi, arglist); case IX86_BUILTIN_LDMXCSR: - op0 = expand_expr (TREE_VALUE (arglist), NULL_RTX, VOIDmode, 0); + op0 = expand_normal (TREE_VALUE (arglist)); target = assign_386_stack_local (SImode, SLOT_TEMP); emit_move_insn (target, op0); emit_insn (gen_sse_ldmxcsr (target)); @@ -15804,9 +15804,9 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); - op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); + op2 = expand_normal (arg2); tmode = insn_data[icode].operand[0].mode; mode0 = insn_data[icode].operand[1].mode; mode1 = insn_data[icode].operand[2].mode; @@ -15843,8 +15843,8 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, : CODE_FOR_mmx_pshufw); arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); tmode = insn_data[icode].operand[0].mode; mode1 = insn_data[icode].operand[1].mode; mode2 = insn_data[icode].operand[2].mode; @@ -15873,8 +15873,8 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, : CODE_FOR_sse2_lshrti3); arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); tmode = insn_data[icode].operand[0].mode; mode1 = insn_data[icode].operand[1].mode; mode2 = insn_data[icode].operand[2].mode; @@ -15991,7 +15991,7 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, case IX86_BUILTIN_CLFLUSH: arg0 = TREE_VALUE (arglist); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); icode = CODE_FOR_sse2_clflush; if (! (*insn_data[icode].operand[0].predicate) (op0, Pmode)) op0 = copy_to_mode_reg (Pmode, op0); @@ -16015,9 +16015,9 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); - op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); + op2 = expand_normal (arg2); if (!REG_P (op0)) op0 = copy_to_mode_reg (SImode, op0); if (!REG_P (op1)) @@ -16030,8 +16030,8 @@ ix86_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, case IX86_BUILTIN_MWAIT: arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); if (!REG_P (op0)) op0 = copy_to_mode_reg (SImode, op0); if (!REG_P (op1)) diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index fea14a7af40..d96ae8f8e1d 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -10209,7 +10209,7 @@ mips_prepare_builtin_arg (enum insn_code icode, rtx value; enum machine_mode mode; - value = expand_expr (TREE_VALUE (*arglist), NULL_RTX, VOIDmode, 0); + value = expand_normal (TREE_VALUE (*arglist)); mode = insn_data[icode].operand[op].mode; if (!insn_data[icode].operand[op].predicate (value, mode)) { diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index a2c314bd5ea..bb5e6359d4d 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -6562,7 +6562,7 @@ rs6000_expand_unop_builtin (enum insn_code icode, tree arglist, rtx target) { rtx pat; tree arg0 = TREE_VALUE (arglist); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); enum machine_mode tmode = insn_data[icode].operand[0].mode; enum machine_mode mode0 = insn_data[icode].operand[1].mode; @@ -6611,7 +6611,7 @@ altivec_expand_abs_builtin (enum insn_code icode, tree arglist, rtx target) { rtx pat, scratch1, scratch2; tree arg0 = TREE_VALUE (arglist); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); enum machine_mode tmode = insn_data[icode].operand[0].mode; enum machine_mode mode0 = insn_data[icode].operand[1].mode; @@ -6644,8 +6644,8 @@ rs6000_expand_binop_builtin (enum insn_code icode, tree arglist, rtx target) rtx pat; tree arg0 = TREE_VALUE (arglist); tree arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - rtx op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); + rtx op1 = expand_normal (arg1); enum machine_mode tmode = insn_data[icode].operand[0].mode; enum machine_mode mode0 = insn_data[icode].operand[1].mode; enum machine_mode mode1 = insn_data[icode].operand[2].mode; @@ -6719,8 +6719,8 @@ altivec_expand_predicate_builtin (enum insn_code icode, const char *opcode, tree cr6_form = TREE_VALUE (arglist); tree arg0 = TREE_VALUE (TREE_CHAIN (arglist)); tree arg1 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - rtx op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); + rtx op1 = expand_normal (arg1); enum machine_mode tmode = SImode; enum machine_mode mode0 = insn_data[icode].operand[1].mode; enum machine_mode mode1 = insn_data[icode].operand[2].mode; @@ -6797,8 +6797,8 @@ altivec_expand_lv_builtin (enum insn_code icode, tree arglist, rtx target) enum machine_mode tmode = insn_data[icode].operand[0].mode; enum machine_mode mode0 = Pmode; enum machine_mode mode1 = Pmode; - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - rtx op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); + rtx op1 = expand_normal (arg1); if (icode == CODE_FOR_nothing) /* Builtin not supported on this processor. */ @@ -6840,9 +6840,9 @@ spe_expand_stv_builtin (enum insn_code icode, tree arglist) tree arg0 = TREE_VALUE (arglist); tree arg1 = TREE_VALUE (TREE_CHAIN (arglist)); tree arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - rtx op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); - rtx op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); + rtx op1 = expand_normal (arg1); + rtx op2 = expand_normal (arg2); rtx pat; enum machine_mode mode0 = insn_data[icode].operand[0].mode; enum machine_mode mode1 = insn_data[icode].operand[1].mode; @@ -6873,9 +6873,9 @@ altivec_expand_stv_builtin (enum insn_code icode, tree arglist) tree arg0 = TREE_VALUE (arglist); tree arg1 = TREE_VALUE (TREE_CHAIN (arglist)); tree arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - rtx op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); - rtx op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); + rtx op1 = expand_normal (arg1); + rtx op2 = expand_normal (arg2); rtx pat, addr; enum machine_mode tmode = insn_data[icode].operand[0].mode; enum machine_mode mode1 = Pmode; @@ -6915,9 +6915,9 @@ rs6000_expand_ternop_builtin (enum insn_code icode, tree arglist, rtx target) tree arg0 = TREE_VALUE (arglist); tree arg1 = TREE_VALUE (TREE_CHAIN (arglist)); tree arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - rtx op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); - rtx op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); + rtx op1 = expand_normal (arg1); + rtx op2 = expand_normal (arg2); enum machine_mode tmode = insn_data[icode].operand[0].mode; enum machine_mode mode0 = insn_data[icode].operand[1].mode; enum machine_mode mode1 = insn_data[icode].operand[2].mode; @@ -7002,7 +7002,7 @@ altivec_expand_ld_builtin (tree exp, rtx target, bool *expandedp) *expandedp = true; arg0 = TREE_VALUE (arglist); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); tmode = insn_data[icode].operand[0].mode; mode0 = insn_data[icode].operand[1].mode; @@ -7055,8 +7055,8 @@ altivec_expand_st_builtin (tree exp, rtx target ATTRIBUTE_UNUSED, arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); mode0 = insn_data[icode].operand[0].mode; mode1 = insn_data[icode].operand[1].mode; @@ -7097,9 +7097,9 @@ altivec_expand_dst_builtin (tree exp, rtx target ATTRIBUTE_UNUSED, arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); - op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); + op1 = expand_normal (arg1); + op2 = expand_normal (arg2); mode0 = insn_data[d->icode].operand[0].mode; mode1 = insn_data[d->icode].operand[1].mode; mode2 = insn_data[d->icode].operand[2].mode; @@ -7147,7 +7147,7 @@ altivec_expand_vec_init_builtin (tree type, tree arglist, rtx target) for (i = 0; i < n_elt; ++i, arglist = TREE_CHAIN (arglist)) { - rtx x = expand_expr (TREE_VALUE (arglist), NULL_RTX, VOIDmode, 0); + rtx x = expand_normal (TREE_VALUE (arglist)); RTVEC_ELT (v, i) = gen_lowpart (inner_mode, x); } @@ -7222,7 +7222,7 @@ altivec_expand_vec_ext_builtin (tree arglist, rtx target) arg0 = TREE_VALUE (arglist); arg1 = TREE_VALUE (TREE_CHAIN (arglist)); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); elt = get_element_number (TREE_TYPE (arg0), arg1); tmode = TYPE_MODE (TREE_TYPE (TREE_TYPE (arg0))); @@ -7308,7 +7308,7 @@ altivec_expand_builtin (tree exp, rtx target, bool *expandedp) case ALTIVEC_BUILTIN_MTVSCR: icode = CODE_FOR_altivec_mtvscr; arg0 = TREE_VALUE (arglist); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); mode0 = insn_data[icode].operand[0].mode; /* If we got invalid arguments bail out before generating bad rtl. */ @@ -7331,7 +7331,7 @@ altivec_expand_builtin (tree exp, rtx target, bool *expandedp) icode = CODE_FOR_altivec_dss; arg0 = TREE_VALUE (arglist); STRIP_NOPS (arg0); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); mode0 = insn_data[icode].operand[0].mode; /* If we got invalid arguments bail out before generating bad rtl. */ @@ -7565,7 +7565,7 @@ spe_expand_builtin (tree exp, rtx target, bool *expandedp) case SPE_BUILTIN_MTSPEFSCR: icode = CODE_FOR_spe_mtspefscr; arg0 = TREE_VALUE (arglist); - op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); + op0 = expand_normal (arg0); mode0 = insn_data[icode].operand[0].mode; if (arg0 == error_mark_node) @@ -7593,8 +7593,8 @@ spe_expand_predicate_builtin (enum insn_code icode, tree arglist, rtx target) tree form = TREE_VALUE (arglist); tree arg0 = TREE_VALUE (TREE_CHAIN (arglist)); tree arg1 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - rtx op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); + rtx op1 = expand_normal (arg1); enum machine_mode mode0 = insn_data[icode].operand[1].mode; enum machine_mode mode1 = insn_data[icode].operand[2].mode; int form_int; @@ -7702,10 +7702,10 @@ spe_expand_evsel_builtin (enum insn_code icode, tree arglist, rtx target) tree arg1 = TREE_VALUE (TREE_CHAIN (arglist)); tree arg2 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (arglist))); tree arg3 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (arglist)))); - rtx op0 = expand_expr (arg0, NULL_RTX, VOIDmode, 0); - rtx op1 = expand_expr (arg1, NULL_RTX, VOIDmode, 0); - rtx op2 = expand_expr (arg2, NULL_RTX, VOIDmode, 0); - rtx op3 = expand_expr (arg3, NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (arg0); + rtx op1 = expand_normal (arg1); + rtx op2 = expand_normal (arg2); + rtx op3 = expand_normal (arg3); enum machine_mode mode0 = insn_data[icode].operand[1].mode; enum machine_mode mode1 = insn_data[icode].operand[2].mode; diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 59ff2e17b86..ee75e2007d6 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -7885,7 +7885,7 @@ sparc_expand_builtin (tree exp, rtx target, rtx subtarget ATTRIBUTE_UNUSED, arg_count++; mode[arg_count] = insn_data[icode].operand[arg_count].mode; - op[arg_count] = expand_expr (arg, NULL_RTX, VOIDmode, 0); + op[arg_count] = expand_normal (arg); if (! (*insn_data[icode].operand[arg_count].predicate) (op[arg_count], mode[arg_count])) diff --git a/gcc/dojump.c b/gcc/dojump.c index d65347ec67c..e214091510e 100644 --- a/gcc/dojump.c +++ b/gcc/dojump.c @@ -584,7 +584,7 @@ do_jump (tree exp, rtx if_false_label, rtx if_true_label) /* Fall through and generate the normal code. */ default: normal: - temp = expand_expr (exp, NULL_RTX, VOIDmode, 0); + temp = expand_normal (exp); do_pending_stack_adjust (); if (GET_CODE (temp) == CONST_INT @@ -636,8 +636,8 @@ static void do_jump_by_parts_greater (tree exp, int swap, rtx if_false_label, rtx if_true_label) { - rtx op0 = expand_expr (TREE_OPERAND (exp, swap), NULL_RTX, VOIDmode, 0); - rtx op1 = expand_expr (TREE_OPERAND (exp, !swap), NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (TREE_OPERAND (exp, swap)); + rtx op1 = expand_normal (TREE_OPERAND (exp, !swap)); enum machine_mode mode = TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0))); int unsignedp = TYPE_UNSIGNED (TREE_TYPE (TREE_OPERAND (exp, 0))); @@ -702,8 +702,8 @@ do_jump_by_parts_greater_rtx (enum machine_mode mode, int unsignedp, rtx op0, static void do_jump_by_parts_equality (tree exp, rtx if_false_label, rtx if_true_label) { - rtx op0 = expand_expr (TREE_OPERAND (exp, 0), NULL_RTX, VOIDmode, 0); - rtx op1 = expand_expr (TREE_OPERAND (exp, 1), NULL_RTX, VOIDmode, 0); + rtx op0 = expand_normal (TREE_OPERAND (exp, 0)); + rtx op1 = expand_normal (TREE_OPERAND (exp, 1)); enum machine_mode mode = TYPE_MODE (TREE_TYPE (TREE_OPERAND (exp, 0))); int nwords = (GET_MODE_SIZE (mode) / UNITS_PER_WORD); int i; @@ -923,11 +923,11 @@ do_compare_and_jump (tree exp, enum rtx_code signed_code, enum rtx_code code; /* Don't crash if the comparison was erroneous. */ - op0 = expand_expr (TREE_OPERAND (exp, 0), NULL_RTX, VOIDmode, 0); + op0 = expand_normal (TREE_OPERAND (exp, 0)); if (TREE_CODE (TREE_OPERAND (exp, 0)) == ERROR_MARK) return; - op1 = expand_expr (TREE_OPERAND (exp, 1), NULL_RTX, VOIDmode, 0); + op1 = expand_normal (TREE_OPERAND (exp, 1)); if (TREE_CODE (TREE_OPERAND (exp, 1)) == ERROR_MARK) return; diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 87d92e833e1..f45375e675b 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -424,7 +424,7 @@ expand_builtin_init_dwarf_reg_sizes (tree address) { int i; enum machine_mode mode = TYPE_MODE (char_type_node); - rtx addr = expand_expr (address, NULL_RTX, VOIDmode, 0); + rtx addr = expand_normal (address); rtx mem = gen_rtx_MEM (BLKmode, addr); bool wrote_return_column = false; diff --git a/gcc/except.c b/gcc/except.c index 19aeac8ee7f..7f04f703433 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -3474,7 +3474,7 @@ output_ttype (tree type, int tt_format, int tt_format_size) struct cgraph_varpool_node *node; type = lookup_type_for_runtime (type); - value = expand_expr (type, NULL_RTX, VOIDmode, EXPAND_INITIALIZER); + value = expand_normal (type); /* Let cgraph know that the rtti decl is used. Not all of the paths below go through assemble_integer, which would take diff --git a/gcc/expmed.c b/gcc/expmed.c index 1ad0949fc60..a12c65d1444 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -2169,7 +2169,7 @@ expand_shift (enum tree_code code, enum machine_mode mode, rtx shifted, and shifted in the other direction; but that does not work on all machines. */ - op1 = expand_expr (amount, NULL_RTX, VOIDmode, 0); + op1 = expand_normal (amount); if (SHIFT_COUNT_TRUNCATED) { diff --git a/gcc/expr.c b/gcc/expr.c index b15b43cb7d9..e10171f9181 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -1381,7 +1381,7 @@ emit_block_move_via_libcall (rtx dst, rtx src, rtx size, bool tailcall) call_expr, arg_list, NULL_TREE); CALL_EXPR_TAILCALL (call_expr) = tailcall; - retval = expand_expr (call_expr, NULL_RTX, VOIDmode, 0); + retval = expand_normal (call_expr); return retval; } @@ -2528,7 +2528,7 @@ clear_storage_via_libcall (rtx object, rtx size, bool tailcall) call_expr, arg_list, NULL_TREE); CALL_EXPR_TAILCALL (call_expr) = tailcall; - retval = expand_expr (call_expr, NULL_RTX, VOIDmode, 0); + retval = expand_normal (call_expr); return retval; } @@ -3926,7 +3926,7 @@ expand_assignment (tree to, tree from) if (TREE_CODE (to) == ERROR_MARK) { - result = expand_expr (from, NULL_RTX, VOIDmode, 0); + result = expand_normal (from); return; } @@ -3952,7 +3952,7 @@ expand_assignment (tree to, tree from) /* If we are going to use store_bit_field and extract_bit_field, make sure to_rtx will be safe for multiple use. */ - to_rtx = expand_expr (tem, NULL_RTX, VOIDmode, 0); + to_rtx = expand_normal (tem); if (offset != 0) { @@ -4060,7 +4060,7 @@ expand_assignment (tree to, tree from) rtx value; push_temp_slots (); - value = expand_expr (from, NULL_RTX, VOIDmode, 0); + value = expand_normal (from); if (to_rtx == 0) to_rtx = expand_expr (to, NULL_RTX, VOIDmode, EXPAND_WRITE); @@ -4121,7 +4121,7 @@ expand_assignment (tree to, tree from) push_temp_slots (); size = expr_size (from); - from_rtx = expand_expr (from, NULL_RTX, VOIDmode, 0); + from_rtx = expand_normal (from); emit_library_call (memmove_libfunc, LCT_NORMAL, VOIDmode, 3, XEXP (to_rtx, 0), Pmode, @@ -4868,7 +4868,7 @@ store_constructor (tree exp, rtx target, int cleared, HOST_WIDE_INT size) make_tree (TREE_TYPE (exp), target)); - offset_rtx = expand_expr (offset, NULL_RTX, VOIDmode, 0); + offset_rtx = expand_normal (offset); gcc_assert (MEM_P (to_rtx)); #ifdef POINTERS_EXTEND_UNSIGNED @@ -5091,7 +5091,7 @@ store_constructor (tree exp, rtx target, int cleared, HOST_WIDE_INT size) rtx loop_end = gen_label_rtx (); tree exit_cond; - expand_expr (hi_index, NULL_RTX, VOIDmode, 0); + expand_normal (hi_index); unsignedp = TYPE_UNSIGNED (domain); index = build_decl (VAR_DECL, NULL_TREE, domain); @@ -5115,7 +5115,7 @@ store_constructor (tree exp, rtx target, int cleared, HOST_WIDE_INT size) convert (ssizetype, TYPE_SIZE_UNIT (elttype))); - pos_rtx = expand_expr (position, 0, VOIDmode, 0); + pos_rtx = expand_normal (position); xtarget = offset_address (target, pos_rtx, highest_pow2_factor (position)); xtarget = adjust_address (xtarget, mode, 0); @@ -5161,7 +5161,7 @@ store_constructor (tree exp, rtx target, int cleared, HOST_WIDE_INT size) convert (ssizetype, TYPE_SIZE_UNIT (elttype))); xtarget = offset_address (target, - expand_expr (position, 0, VOIDmode, 0), + expand_normal (position), highest_pow2_factor (position)); xtarget = adjust_address (xtarget, mode, 0); store_expr (value, xtarget, 0); @@ -5287,7 +5287,7 @@ store_constructor (tree exp, rtx target, int cleared, HOST_WIDE_INT size) vectors in the case of BLKmode vectors. */ gcc_assert (TREE_CODE (TREE_TYPE (value)) != VECTOR_TYPE); RTVEC_ELT (vector, eltpos) - = expand_expr (value, NULL_RTX, VOIDmode, 0); + = expand_normal (value); } else { @@ -5425,7 +5425,7 @@ store_field (rtx target, HOST_WIDE_INT bitsize, HOST_WIDE_INT bitpos, } } - temp = expand_expr (exp, NULL_RTX, VOIDmode, 0); + temp = expand_normal (exp); /* If BITSIZE is narrower than the size of the type of EXP we will be narrowing TEMP. Normally, what's wanted are the @@ -7944,27 +7944,24 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, if (TREE_CODE (TREE_OPERAND (exp, 1)) == INTEGER_CST) expand_operands (TREE_OPERAND (TREE_OPERAND (exp, 0), 0), TREE_OPERAND (exp, 1), - NULL_RTX, &op0, &op1, 0); + NULL_RTX, &op0, &op1, EXPAND_NORMAL); else expand_operands (TREE_OPERAND (TREE_OPERAND (exp, 0), 0), TREE_OPERAND (TREE_OPERAND (exp, 1), 0), - NULL_RTX, &op0, &op1, 0); + NULL_RTX, &op0, &op1, EXPAND_NORMAL); goto binop3; } else if (other_optab->handlers[(int) mode].insn_code != CODE_FOR_nothing && innermode == word_mode) { rtx htem, hipart; - op0 = expand_expr (TREE_OPERAND (TREE_OPERAND (exp, 0), 0), - NULL_RTX, VOIDmode, 0); + op0 = expand_normal (TREE_OPERAND (TREE_OPERAND (exp, 0), 0)); if (TREE_CODE (TREE_OPERAND (exp, 1)) == INTEGER_CST) op1 = convert_modes (innermode, mode, - expand_expr (TREE_OPERAND (exp, 1), - NULL_RTX, VOIDmode, 0), + expand_normal (TREE_OPERAND (exp, 1)), unsignedp); else - op1 = expand_expr (TREE_OPERAND (TREE_OPERAND (exp, 1), 0), - NULL_RTX, VOIDmode, 0); + op1 = expand_normal (TREE_OPERAND (TREE_OPERAND (exp, 1), 0)); temp = expand_binop (mode, other_optab, op0, op1, target, unsignedp, OPTAB_LIB_WIDEN); hipart = gen_highpart (innermode, temp); @@ -8014,14 +8011,14 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, gcc_unreachable (); /* Not used for C. */ case FIX_TRUNC_EXPR: - op0 = expand_expr (TREE_OPERAND (exp, 0), NULL_RTX, VOIDmode, 0); + op0 = expand_normal (TREE_OPERAND (exp, 0)); if (target == 0 || modifier == EXPAND_STACK_PARM) target = gen_reg_rtx (mode); expand_fix (target, op0, unsignedp); return target; case FLOAT_EXPR: - op0 = expand_expr (TREE_OPERAND (exp, 0), NULL_RTX, VOIDmode, 0); + op0 = expand_normal (TREE_OPERAND (exp, 0)); if (target == 0 || modifier == EXPAND_STACK_PARM) target = gen_reg_rtx (mode); /* expand_float can't figure out what to do if FROM has VOIDmode. @@ -8457,8 +8454,8 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, case COMPLEX_EXPR: /* Get the rtx code of the operands. */ - op0 = expand_expr (TREE_OPERAND (exp, 0), 0, VOIDmode, 0); - op1 = expand_expr (TREE_OPERAND (exp, 1), 0, VOIDmode, 0); + op0 = expand_normal (TREE_OPERAND (exp, 0)); + op1 = expand_normal (TREE_OPERAND (exp, 1)); if (!target) target = gen_reg_rtx (TYPE_MODE (TREE_TYPE (exp))); @@ -8470,11 +8467,11 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, return target; case REALPART_EXPR: - op0 = expand_expr (TREE_OPERAND (exp, 0), 0, VOIDmode, 0); + op0 = expand_normal (TREE_OPERAND (exp, 0)); return read_complex_part (op0, false); case IMAGPART_EXPR: - op0 = expand_expr (TREE_OPERAND (exp, 0), 0, VOIDmode, 0); + op0 = expand_normal (TREE_OPERAND (exp, 0)); return read_complex_part (op0, true); case RESX_EXPR: @@ -8545,8 +8542,8 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, rtx op2; this_optab = optab_for_tree_code (code, type); - expand_operands (oprnd0, oprnd1, NULL_RTX, &op0, &op1, 0); - op2 = expand_expr (oprnd2, NULL_RTX, VOIDmode, 0); + expand_operands (oprnd0, oprnd1, NULL_RTX, &op0, &op1, EXPAND_NORMAL); + op2 = expand_normal (oprnd2); temp = expand_ternary_op (mode, this_optab, op0, op1, op2, target, unsignedp); gcc_assert (temp); @@ -8560,8 +8557,8 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, tree oprnd2 = TREE_OPERAND (exp, 2); rtx op2; - expand_operands (oprnd0, oprnd1, NULL_RTX, &op0, &op1, 0); - op2 = expand_expr (oprnd2, NULL_RTX, VOIDmode, 0); + expand_operands (oprnd0, oprnd1, NULL_RTX, &op0, &op1, EXPAND_NORMAL); + op2 = expand_normal (oprnd2); target = expand_widen_pattern_expr (exp, op0, op1, op2, target, unsignedp); return target; @@ -8582,7 +8579,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode, case REDUC_MIN_EXPR: case REDUC_PLUS_EXPR: { - op0 = expand_expr (TREE_OPERAND (exp, 0), NULL_RTX, VOIDmode, 0); + op0 = expand_normal (TREE_OPERAND (exp, 0)); this_optab = optab_for_tree_code (code, type); temp = expand_unop (mode, this_optab, op0, target, unsignedp); gcc_assert (temp); @@ -9077,13 +9074,13 @@ try_casesi (tree index_type, tree index_expr, tree minval, tree range, if (GET_MODE_BITSIZE (TYPE_MODE (index_type)) > GET_MODE_BITSIZE (index_mode)) { enum machine_mode omode = TYPE_MODE (index_type); - rtx rangertx = expand_expr (range, NULL_RTX, VOIDmode, 0); + rtx rangertx = expand_normal (range); /* We must handle the endpoints in the original mode. */ index_expr = build2 (MINUS_EXPR, index_type, index_expr, minval); minval = integer_zero_node; - index = expand_expr (index_expr, NULL_RTX, VOIDmode, 0); + index = expand_normal (index_expr); emit_cmp_and_jump_insns (rangertx, index, LTU, NULL_RTX, omode, 1, default_label); /* Now we can safely truncate. */ @@ -9098,7 +9095,7 @@ try_casesi (tree index_type, tree index_expr, tree minval, tree range, index_type = TREE_TYPE (index_expr); } - index = expand_expr (index_expr, NULL_RTX, VOIDmode, 0); + index = expand_normal (index_expr); } do_pending_stack_adjust (); @@ -9108,7 +9105,7 @@ try_casesi (tree index_type, tree index_expr, tree minval, tree range, (index, op_mode)) index = copy_to_mode_reg (op_mode, index); - op1 = expand_expr (minval, NULL_RTX, VOIDmode, 0); + op1 = expand_normal (minval); op_mode = insn_data[(int) CODE_FOR_casesi].operand[1].mode; op1 = convert_modes (op_mode, TYPE_MODE (TREE_TYPE (minval)), @@ -9117,7 +9114,7 @@ try_casesi (tree index_type, tree index_expr, tree minval, tree range, (op1, op_mode)) op1 = copy_to_mode_reg (op_mode, op1); - op2 = expand_expr (range, NULL_RTX, VOIDmode, 0); + op2 = expand_normal (range); op_mode = insn_data[(int) CODE_FOR_casesi].operand[2].mode; op2 = convert_modes (op_mode, TYPE_MODE (TREE_TYPE (range)), @@ -9223,14 +9220,13 @@ try_tablejump (tree index_type, tree index_expr, tree minval, tree range, index_expr = fold_build2 (MINUS_EXPR, index_type, convert (index_type, index_expr), convert (index_type, minval)); - index = expand_expr (index_expr, NULL_RTX, VOIDmode, 0); + index = expand_normal (index_expr); do_pending_stack_adjust (); do_tablejump (index, TYPE_MODE (index_type), convert_modes (TYPE_MODE (index_type), TYPE_MODE (TREE_TYPE (range)), - expand_expr (range, NULL_RTX, - VOIDmode, 0), + expand_normal (range), TYPE_UNSIGNED (TREE_TYPE (range))), table_label, default_label); return 1; diff --git a/gcc/expr.h b/gcc/expr.h index 6d09644a048..b7387cf20fd 100644 --- a/gcc/expr.h +++ b/gcc/expr.h @@ -158,7 +158,7 @@ do { \ /* Convert the implicit sum in a `struct args_size' into an rtx. */ #define ARGS_SIZE_RTX(SIZE) \ ((SIZE).var == 0 ? GEN_INT ((SIZE).constant) \ - : expand_expr (ARGS_SIZE_TREE (SIZE), NULL_RTX, VOIDmode, 0)) + : expand_normal (ARGS_SIZE_TREE (SIZE))) /* Supply a default definition for FUNCTION_ARG_PADDING: usually pad upward, but pad short args downward on @@ -493,6 +493,12 @@ expand_expr (tree exp, rtx target, enum machine_mode mode, return expand_expr_real (exp, target, mode, modifier, NULL); } +static inline rtx +expand_normal (tree exp) +{ + return expand_expr_real (exp, NULL_RTX, VOIDmode, EXPAND_NORMAL, NULL); +} + extern void expand_var (tree); /* At the start of a function, record that we have no previously-pushed diff --git a/gcc/stmt.c b/gcc/stmt.c index e2ceaf578c5..da2f7505b72 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -182,7 +182,7 @@ emit_jump (rtx label) void expand_computed_goto (tree exp) { - rtx x = expand_expr (exp, NULL_RTX, VOIDmode, 0); + rtx x = expand_normal (exp); x = convert_memory_address (Pmode, x); @@ -1354,8 +1354,7 @@ expand_expr_stmt (tree exp) /* Compare the value with itself to reference it. */ emit_cmp_and_jump_insns (value, value, EQ, - expand_expr (TYPE_SIZE (type), - NULL_RTX, VOIDmode, 0), + expand_normal (TYPE_SIZE (type)), BLKmode, 0, lab); emit_label (lab); } @@ -1547,7 +1546,7 @@ expand_return (tree retval) /* If function wants no value, give it none. */ if (TREE_CODE (TREE_TYPE (TREE_TYPE (current_function_decl))) == VOID_TYPE) { - expand_expr (retval, NULL_RTX, VOIDmode, 0); + expand_normal (retval); expand_null_return (); return; } @@ -1594,7 +1593,7 @@ expand_return (tree retval) = MIN (TYPE_ALIGN (TREE_TYPE (retval_rhs)), BITS_PER_WORD); rtx *result_pseudos = alloca (sizeof (rtx) * n_regs); rtx result_reg, src = NULL_RTX, dst = NULL_RTX; - rtx result_val = expand_expr (retval_rhs, NULL_RTX, VOIDmode, 0); + rtx result_val = expand_normal (retval_rhs); enum machine_mode tmpmode, result_reg_mode; if (bytes == 0) @@ -1939,7 +1938,7 @@ expand_decl (tree decl) /* Compute the variable's size, in bytes. This will expand any needed SAVE_EXPRs for the first time. */ - size = expand_expr (DECL_SIZE_UNIT (decl), NULL_RTX, VOIDmode, 0); + size = expand_normal (DECL_SIZE_UNIT (decl)); free_temp_slots (); /* Allocate space on the stack for the variable. Note that @@ -2239,11 +2238,11 @@ emit_case_bit_tests (tree index_type, tree index_expr, tree minval, index_expr = fold_build2 (MINUS_EXPR, index_type, fold_convert (index_type, index_expr), fold_convert (index_type, minval)); - index = expand_expr (index_expr, NULL_RTX, VOIDmode, 0); + index = expand_normal (index_expr); do_pending_stack_adjust (); mode = TYPE_MODE (index_type); - expr = expand_expr (range, NULL_RTX, VOIDmode, 0); + expr = expand_normal (range); emit_cmp_and_jump_insns (index, expr, GTU, NULL_RTX, mode, 1, default_label); @@ -2449,7 +2448,7 @@ expand_case (tree exp) only go this way. */ || (!HAVE_casesi && !HAVE_tablejump)) { - index = expand_expr (index_expr, NULL_RTX, VOIDmode, 0); + index = expand_normal (index_expr); /* If the index is a short or char that we do not have an insn to handle comparisons directly, convert it to @@ -2940,8 +2939,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, do_jump_if_equal (index, convert_modes (mode, imode, - expand_expr (node->low, NULL_RTX, - VOIDmode, 0), + expand_normal (node->low), unsignedp), label_rtx (node->code_label), unsignedp); @@ -2958,8 +2956,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, emit_cmp_and_jump_insns (index, convert_modes (mode, imode, - expand_expr (node->high, NULL_RTX, - VOIDmode, 0), + expand_normal (node->high), unsignedp), GT, NULL_RTX, mode, unsignedp, label_rtx (node->right->code_label)); @@ -2971,8 +2968,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, emit_cmp_and_jump_insns (index, convert_modes (mode, imode, - expand_expr (node->high, NULL_RTX, - VOIDmode, 0), + expand_normal (node->high), unsignedp), LT, NULL_RTX, mode, unsignedp, label_rtx (node->left->code_label)); @@ -2996,9 +2992,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, wants. */ do_jump_if_equal (index, convert_modes (mode, imode, - expand_expr (node->right->low, - NULL_RTX, - VOIDmode, 0), + expand_normal (node->right->low), unsignedp), label_rtx (node->right->code_label), unsignedp); @@ -3007,9 +3001,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, wants. */ do_jump_if_equal (index, convert_modes (mode, imode, - expand_expr (node->left->low, - NULL_RTX, - VOIDmode, 0), + expand_normal (node->left->low), unsignedp), label_rtx (node->left->code_label), unsignedp); @@ -3026,8 +3018,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, emit_cmp_and_jump_insns (index, convert_modes (mode, imode, - expand_expr (node->high, NULL_RTX, - VOIDmode, 0), + expand_normal (node->high), unsignedp), GT, NULL_RTX, mode, unsignedp, label_rtx (test_label)); @@ -3062,8 +3053,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, emit_cmp_and_jump_insns (index, convert_modes (mode, imode, - expand_expr (node->high, NULL_RTX, - VOIDmode, 0), + expand_normal (node->high), unsignedp), LT, NULL_RTX, mode, unsignedp, default_label); @@ -3078,8 +3068,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, do_jump_if_equal (index, convert_modes (mode, imode, - expand_expr (node->right->low, NULL_RTX, - VOIDmode, 0), + expand_normal (node->right->low), unsignedp), label_rtx (node->right->code_label), unsignedp); } @@ -3095,8 +3084,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, emit_cmp_and_jump_insns (index, convert_modes (mode, imode, - expand_expr (node->high, NULL_RTX, - VOIDmode, 0), + expand_normal (node->high), unsignedp), GT, NULL_RTX, mode, unsignedp, default_label); @@ -3111,8 +3099,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, do_jump_if_equal (index, convert_modes (mode, imode, - expand_expr (node->left->low, NULL_RTX, - VOIDmode, 0), + expand_normal (node->left->low), unsignedp), label_rtx (node->left->code_label), unsignedp); } @@ -3138,8 +3125,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, emit_cmp_and_jump_insns (index, convert_modes (mode, imode, - expand_expr (node->high, NULL_RTX, - VOIDmode, 0), + expand_normal (node->high), unsignedp), GT, NULL_RTX, mode, unsignedp, label_rtx (node->right->code_label)); @@ -3152,8 +3138,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, emit_cmp_and_jump_insns (index, convert_modes (mode, imode, - expand_expr (node->high, NULL_RTX, - VOIDmode, 0), + expand_normal (node->high), unsignedp), GT, NULL_RTX, mode, unsignedp, label_rtx (test_label)); @@ -3164,8 +3149,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, emit_cmp_and_jump_insns (index, convert_modes (mode, imode, - expand_expr (node->low, NULL_RTX, - VOIDmode, 0), + expand_normal (node->low), unsignedp), GE, NULL_RTX, mode, unsignedp, label_rtx (node->code_label)); @@ -3195,8 +3179,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, emit_cmp_and_jump_insns (index, convert_modes (mode, imode, - expand_expr (node->low, NULL_RTX, - VOIDmode, 0), + expand_normal (node->low), unsignedp), LT, NULL_RTX, mode, unsignedp, default_label); @@ -3207,8 +3190,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, emit_cmp_and_jump_insns (index, convert_modes (mode, imode, - expand_expr (node->high, NULL_RTX, - VOIDmode, 0), + expand_normal (node->high), unsignedp), LE, NULL_RTX, mode, unsignedp, label_rtx (node->code_label)); @@ -3225,8 +3207,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, emit_cmp_and_jump_insns (index, convert_modes (mode, imode, - expand_expr (node->high, NULL_RTX, - VOIDmode, 0), + expand_normal (node->high), unsignedp), GT, NULL_RTX, mode, unsignedp, default_label); @@ -3237,8 +3218,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, emit_cmp_and_jump_insns (index, convert_modes (mode, imode, - expand_expr (node->low, NULL_RTX, - VOIDmode, 0), + expand_normal (node->low), unsignedp), GE, NULL_RTX, mode, unsignedp, label_rtx (node->code_label)); @@ -3259,8 +3239,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, emit_cmp_and_jump_insns (index, convert_modes (mode, imode, - expand_expr (node->high, NULL_RTX, - VOIDmode, 0), + expand_normal (node->high), unsignedp), GT, NULL_RTX, mode, unsignedp, default_label); @@ -3271,8 +3250,7 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, emit_cmp_and_jump_insns (index, convert_modes (mode, imode, - expand_expr (node->low, NULL_RTX, - VOIDmode, 0), + expand_normal (node->low), unsignedp), LT, NULL_RTX, mode, unsignedp, default_label); @@ -3287,13 +3265,13 @@ emit_case_nodes (rtx index, case_node_ptr node, rtx default_label, /* Instead of doing two branches, emit one unsigned branch for (index-low) > (high-low). */ - low_rtx = expand_expr (low, NULL_RTX, mode, 0); + low_rtx = expand_expr (low, NULL_RTX, mode, EXPAND_NORMAL); new_index = expand_simple_binop (mode, MINUS, index, low_rtx, NULL_RTX, unsignedp, OPTAB_WIDEN); new_bound = expand_expr (fold_build2 (MINUS_EXPR, type, high, low), - NULL_RTX, mode, 0); + NULL_RTX, mode, EXPAND_NORMAL); emit_cmp_and_jump_insns (new_index, new_bound, GT, NULL_RTX, mode, 1, default_label); -- 2.11.0