expr.h (expand_normal): new inline function.
2006-01-30 Marcin Dalecki <martin@dalecki.de> * 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. From-SVN: r110428
This commit is contained in:
parent
4536bcac65
commit
842173466d
15 changed files with 218 additions and 225 deletions
|
@ -1,3 +1,20 @@
|
|||
2006-01-30 Marcin Dalecki <martin@dalecki.de>
|
||||
|
||||
* 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 <roger@eyesopen.com>
|
||||
|
||||
* config/i386/cygwin.h (GCC_DRIVER_HOST_INITIALIZATION): Cast
|
||||
|
|
|
@ -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;
|
||||
|
|
10
gcc/calls.c
10
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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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))
|
||||
{
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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]))
|
||||
|
|
14
gcc/dojump.c
14
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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
74
gcc/expr.c
74
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;
|
||||
|
|
|
@ -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
|
||||
|
|
80
gcc/stmt.c
80
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);
|
||||
|
|
Loading…
Add table
Reference in a new issue