Commit 04050c69 by Richard Kenner Committed by Richard Kenner

expmed.c (extract_bit_field): No longer pass in alignment.

	* expmed.c (extract_bit_field): No longer pass in alignment.
	(extract_fixed_bit_field, extract_split_bit_field): Likewise.
	(store_bit_field, store_fixed_bit_field, store_split_bit_field):
	Likewise.
	* expr.c (store_constructor, store_constructor_field): Likewise.
	(store_field, emit_group_load, emit_group_store): Likewise.
	* expr.h (emit_group_load, emit_group_store): Delete ALIGN parm.
	(store_bit_field, extract_bit_field): Likewise.
	* calls.c, expr.c, function.c: Change calls to above functions.
	* ifcvt.c, stmt.c: Likewise.

From-SVN: r46926
parent d746694a
Sun Nov 11 05:56:01 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu> Sun Nov 11 05:56:01 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* expmed.c (extract_bit_field): No longer pass in alignment.
(extract_fixed_bit_field, extract_split_bit_field): Likewise.
(store_bit_field, store_fixed_bit_field, store_split_bit_field):
Likewise.
* expr.c (store_constructor, store_constructor_field): Likewise.
(store_field, emit_group_load, emit_group_store): Likewise.
* expr.h (emit_group_load, emit_group_store): Delete ALIGN parm.
(store_bit_field, extract_bit_field): Likewise.
* calls.c, expr.c, function.c: Change calls to above functions.
* ifcvt.c, stmt.c: Likewise.
* alias.c (nonoverlapping_memrefs_p): Not overlapping if one base is * alias.c (nonoverlapping_memrefs_p): Not overlapping if one base is
constant and one is on frame. constant and one is on frame.
If know memref offset, adjust size from decl. If know memref offset, adjust size from decl.
......
...@@ -1037,7 +1037,6 @@ store_unaligned_arguments_into_pseudos (args, num_actuals) ...@@ -1037,7 +1037,6 @@ store_unaligned_arguments_into_pseudos (args, num_actuals)
rtx reg = gen_reg_rtx (word_mode); rtx reg = gen_reg_rtx (word_mode);
rtx word = operand_subword_force (args[i].value, j, BLKmode); rtx word = operand_subword_force (args[i].value, j, BLKmode);
int bitsize = MIN (bytes * BITS_PER_UNIT, BITS_PER_WORD); int bitsize = MIN (bytes * BITS_PER_UNIT, BITS_PER_WORD);
int bitalign = TYPE_ALIGN (TREE_TYPE (args[i].tree_value));
args[i].aligned_regs[j] = reg; args[i].aligned_regs[j] = reg;
...@@ -1057,9 +1056,9 @@ store_unaligned_arguments_into_pseudos (args, num_actuals) ...@@ -1057,9 +1056,9 @@ store_unaligned_arguments_into_pseudos (args, num_actuals)
bytes -= bitsize / BITS_PER_UNIT; bytes -= bitsize / BITS_PER_UNIT;
store_bit_field (reg, bitsize, big_endian_correction, word_mode, store_bit_field (reg, bitsize, big_endian_correction, word_mode,
extract_bit_field (word, bitsize, 0, 1, NULL_RTX, extract_bit_field (word, bitsize, 0, 1, NULL_RTX,
word_mode, word_mode, bitalign, word_mode, word_mode,
BITS_PER_WORD), BITS_PER_WORD),
bitalign, BITS_PER_WORD); BITS_PER_WORD);
} }
} }
} }
...@@ -1736,8 +1735,7 @@ load_register_parameters (args, num_actuals, call_fusage, flags) ...@@ -1736,8 +1735,7 @@ load_register_parameters (args, num_actuals, call_fusage, flags)
if (GET_CODE (reg) == PARALLEL) if (GET_CODE (reg) == PARALLEL)
emit_group_load (reg, args[i].value, emit_group_load (reg, args[i].value,
int_size_in_bytes (TREE_TYPE (args[i].tree_value)), int_size_in_bytes (TREE_TYPE (args[i].tree_value)));
TYPE_ALIGN (TREE_TYPE (args[i].tree_value)));
/* If simple case, just do move. If normal partial, store_one_arg /* If simple case, just do move. If normal partial, store_one_arg
has already loaded the register for us. In all other cases, has already loaded the register for us. In all other cases,
...@@ -3225,8 +3223,7 @@ expand_call (exp, target, ignore) ...@@ -3225,8 +3223,7 @@ expand_call (exp, target, ignore)
if (! rtx_equal_p (target, valreg)) if (! rtx_equal_p (target, valreg))
emit_group_store (target, valreg, emit_group_store (target, valreg,
int_size_in_bytes (TREE_TYPE (exp)), int_size_in_bytes (TREE_TYPE (exp)));
TYPE_ALIGN (TREE_TYPE (exp)));
/* We can not support sibling calls for this case. */ /* We can not support sibling calls for this case. */
sibcall_failure = 1; sibcall_failure = 1;
...@@ -4004,9 +4001,7 @@ emit_library_call_value_1 (retval, orgfun, value, fn_type, outmode, nargs, p) ...@@ -4004,9 +4001,7 @@ emit_library_call_value_1 (retval, orgfun, value, fn_type, outmode, nargs, p)
/* Handle calls that pass values in multiple non-contiguous /* Handle calls that pass values in multiple non-contiguous
locations. The PA64 has examples of this for library calls. */ locations. The PA64 has examples of this for library calls. */
if (reg != 0 && GET_CODE (reg) == PARALLEL) if (reg != 0 && GET_CODE (reg) == PARALLEL)
emit_group_load (reg, val, emit_group_load (reg, val, GET_MODE_SIZE (GET_MODE (val)));
GET_MODE_SIZE (GET_MODE (val)),
GET_MODE_ALIGNMENT (GET_MODE (val)));
else if (reg != 0 && partial == 0) else if (reg != 0 && partial == 0)
emit_move_insn (reg, val); emit_move_insn (reg, val);
......
...@@ -423,11 +423,11 @@ extern void move_block_from_reg PARAMS ((int, rtx, int, int)); ...@@ -423,11 +423,11 @@ extern void move_block_from_reg PARAMS ((int, rtx, int, int));
/* Load a BLKmode value into non-consecutive registers represented by a /* Load a BLKmode value into non-consecutive registers represented by a
PARALLEL. */ PARALLEL. */
extern void emit_group_load PARAMS ((rtx, rtx, int, unsigned int)); extern void emit_group_load PARAMS ((rtx, rtx, int));
/* Store a BLKmode value from non-consecutive registers represented by a /* Store a BLKmode value from non-consecutive registers represented by a
PARALLEL. */ PARALLEL. */
extern void emit_group_store PARAMS ((rtx, rtx, int, unsigned int)); extern void emit_group_store PARAMS ((rtx, rtx, int));
#ifdef TREE_CODE #ifdef TREE_CODE
/* Copy BLKmode object from a set of registers. */ /* Copy BLKmode object from a set of registers. */
...@@ -746,12 +746,11 @@ mode_for_extraction PARAMS ((enum extraction_pattern, int)); ...@@ -746,12 +746,11 @@ mode_for_extraction PARAMS ((enum extraction_pattern, int));
extern rtx store_bit_field PARAMS ((rtx, unsigned HOST_WIDE_INT, extern rtx store_bit_field PARAMS ((rtx, unsigned HOST_WIDE_INT,
unsigned HOST_WIDE_INT, unsigned HOST_WIDE_INT,
enum machine_mode, rtx, enum machine_mode, rtx, HOST_WIDE_INT));
unsigned int, HOST_WIDE_INT));
extern rtx extract_bit_field PARAMS ((rtx, unsigned HOST_WIDE_INT, extern rtx extract_bit_field PARAMS ((rtx, unsigned HOST_WIDE_INT,
unsigned HOST_WIDE_INT, int, rtx, unsigned HOST_WIDE_INT, int, rtx,
enum machine_mode, enum machine_mode, enum machine_mode, enum machine_mode,
unsigned int, HOST_WIDE_INT)); HOST_WIDE_INT));
extern rtx expand_mult PARAMS ((enum machine_mode, rtx, rtx, rtx, int)); extern rtx expand_mult PARAMS ((enum machine_mode, rtx, rtx, rtx, int));
extern rtx expand_mult_add PARAMS ((rtx, rtx, rtx, rtx,enum machine_mode, int)); extern rtx expand_mult_add PARAMS ((rtx, rtx, rtx, rtx,enum machine_mode, int));
extern rtx expand_mult_highpart_adjust PARAMS ((enum machine_mode, rtx, rtx, rtx, rtx, int)); extern rtx expand_mult_highpart_adjust PARAMS ((enum machine_mode, rtx, rtx, rtx, rtx, int));
......
...@@ -3117,8 +3117,7 @@ purge_addressof_1 (loc, insn, force, store, ht) ...@@ -3117,8 +3117,7 @@ purge_addressof_1 (loc, insn, force, store, ht)
start_sequence (); start_sequence ();
store_bit_field (sub, size_x, 0, GET_MODE (x), store_bit_field (sub, size_x, 0, GET_MODE (x),
val, GET_MODE_SIZE (GET_MODE (sub)), val, GET_MODE_SIZE (GET_MODE (sub)));
GET_MODE_ALIGNMENT (GET_MODE (sub)));
/* Make sure to unshare any shared rtl that store_bit_field /* Make sure to unshare any shared rtl that store_bit_field
might have created. */ might have created. */
...@@ -3139,7 +3138,6 @@ purge_addressof_1 (loc, insn, force, store, ht) ...@@ -3139,7 +3138,6 @@ purge_addressof_1 (loc, insn, force, store, ht)
start_sequence (); start_sequence ();
val = extract_bit_field (sub, size_x, 0, 1, NULL_RTX, val = extract_bit_field (sub, size_x, 0, 1, NULL_RTX,
GET_MODE (x), GET_MODE (x), GET_MODE (x), GET_MODE (x),
GET_MODE_SIZE (GET_MODE (sub)),
GET_MODE_SIZE (GET_MODE (sub))); GET_MODE_SIZE (GET_MODE (sub)));
if (! validate_change (insn, loc, val, 0)) if (! validate_change (insn, loc, val, 0))
...@@ -4493,8 +4491,7 @@ assign_parms (fndecl) ...@@ -4493,8 +4491,7 @@ assign_parms (fndecl)
locations. The Irix 6 ABI has examples of this. */ locations. The Irix 6 ABI has examples of this. */
if (GET_CODE (entry_parm) == PARALLEL) if (GET_CODE (entry_parm) == PARALLEL)
emit_group_store (validize_mem (stack_parm), entry_parm, emit_group_store (validize_mem (stack_parm), entry_parm,
int_size_in_bytes (TREE_TYPE (parm)), int_size_in_bytes (TREE_TYPE (parm)));
TYPE_ALIGN (TREE_TYPE (parm)));
else else
move_block_from_reg (REGNO (entry_parm), move_block_from_reg (REGNO (entry_parm),
...@@ -4635,8 +4632,7 @@ assign_parms (fndecl) ...@@ -4635,8 +4632,7 @@ assign_parms (fndecl)
locations. The Irix 6 ABI has examples of this. */ locations. The Irix 6 ABI has examples of this. */
if (GET_CODE (entry_parm) == PARALLEL) if (GET_CODE (entry_parm) == PARALLEL)
emit_group_store (validize_mem (stack_parm), entry_parm, emit_group_store (validize_mem (stack_parm), entry_parm,
int_size_in_bytes (TREE_TYPE (parm)), int_size_in_bytes (TREE_TYPE (parm)));
TYPE_ALIGN (TREE_TYPE (parm)));
else else
move_block_from_reg (REGNO (entry_parm), move_block_from_reg (REGNO (entry_parm),
validize_mem (stack_parm), validize_mem (stack_parm),
...@@ -6909,8 +6905,7 @@ expand_function_end (filename, line, end_bindings) ...@@ -6909,8 +6905,7 @@ expand_function_end (filename, line, end_bindings)
} }
else if (GET_CODE (real_decl_rtl) == PARALLEL) else if (GET_CODE (real_decl_rtl) == PARALLEL)
emit_group_load (real_decl_rtl, decl_rtl, emit_group_load (real_decl_rtl, decl_rtl,
int_size_in_bytes (TREE_TYPE (decl_result)), int_size_in_bytes (TREE_TYPE (decl_result)));
TYPE_ALIGN (TREE_TYPE (decl_result)));
else else
emit_move_insn (real_decl_rtl, decl_rtl); emit_move_insn (real_decl_rtl, decl_rtl);
......
...@@ -580,8 +580,7 @@ noce_emit_move_insn (x, y) ...@@ -580,8 +580,7 @@ noce_emit_move_insn (x, y)
outmode = GET_MODE (outer); outmode = GET_MODE (outer);
inmode = GET_MODE (inner); inmode = GET_MODE (inner);
bitpos = SUBREG_BYTE (outer) * BITS_PER_UNIT; bitpos = SUBREG_BYTE (outer) * BITS_PER_UNIT;
store_bit_field (inner, GET_MODE_BITSIZE (outmode), store_bit_field (inner, GET_MODE_BITSIZE (outmode), bitpos, outmode, y,
bitpos, outmode, y, GET_MODE_BITSIZE (inmode),
GET_MODE_BITSIZE (inmode)); GET_MODE_BITSIZE (inmode));
} }
......
...@@ -3071,8 +3071,7 @@ expand_value_return (val) ...@@ -3071,8 +3071,7 @@ expand_value_return (val)
val = convert_modes (mode, old_mode, val, unsignedp); val = convert_modes (mode, old_mode, val, unsignedp);
#endif #endif
if (GET_CODE (return_reg) == PARALLEL) if (GET_CODE (return_reg) == PARALLEL)
emit_group_load (return_reg, val, int_size_in_bytes (type), emit_group_load (return_reg, val, int_size_in_bytes (type));
TYPE_ALIGN (type));
else else
emit_move_insn (return_reg, val); emit_move_insn (return_reg, val);
} }
...@@ -3253,8 +3252,8 @@ expand_return (retval) ...@@ -3253,8 +3252,8 @@ expand_return (retval)
extract_bit_field (src, bitsize, extract_bit_field (src, bitsize,
bitpos % BITS_PER_WORD, 1, bitpos % BITS_PER_WORD, 1,
NULL_RTX, word_mode, word_mode, NULL_RTX, word_mode, word_mode,
bitsize, BITS_PER_WORD), BITS_PER_WORD),
bitsize, BITS_PER_WORD); BITS_PER_WORD);
} }
/* Find the smallest integer mode large enough to hold the /* Find the smallest integer mode large enough to hold the
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment