* expr.h (store_bit_field, extract_bit_field): Remove last argument.
* expmed.c (store_bit_field, extract_bit_field): Remove last
argument.
* builtins.c (expand_builtin_signbit): Adjust callers.
* optabs.c (expand_vector_binop, expand_vector_unop): Likewise.
* calls.c (store_unaligned_arguments_into_pseudos): Likewise.
* ifcvt.c (noce_emit_move_insn): Likewise.
* stmt.c (expand_return): Likewise.
* expr.c (emit_group_load, emit_group_store, copy_blkmode_from_reg,
store_field, expand_expr_real_1): Likewise.
From-SVN: r84447
+2004-07-10 Jakub Jelinek <jakub@redhat.com>
+
+ * expr.h (store_bit_field, extract_bit_field): Remove last argument.
+ * expmed.c (store_bit_field, extract_bit_field): Remove last
+ argument.
+ * builtins.c (expand_builtin_signbit): Adjust callers.
+ * optabs.c (expand_vector_binop, expand_vector_unop): Likewise.
+ * calls.c (store_unaligned_arguments_into_pseudos): Likewise.
+ * ifcvt.c (noce_emit_move_insn): Likewise.
+ * stmt.c (expand_return): Likewise.
+ * expr.c (emit_group_load, emit_group_store, copy_blkmode_from_reg,
+ store_field, expand_expr_real_1): Likewise.
+
2004-07-10 Richard Henderson <rth@redhat.com>
* builtins.c (std_gimplify_va_arg_expr): Fix borked BIT_AND_EXPR.
bitpos = GET_MODE_BITSIZE (imode) - 1 - bitpos;
temp = copy_to_mode_reg (imode, temp);
temp = extract_bit_field (temp, 1, bitpos, 1,
- NULL_RTX, rmode, rmode,
- GET_MODE_SIZE (imode));
+ NULL_RTX, rmode, rmode);
}
else
{
args[i].aligned_regs[j] = reg;
word = extract_bit_field (word, bitsize, 0, 1, NULL_RTX,
- word_mode, word_mode, BITS_PER_WORD);
+ word_mode, word_mode);
/* There is no need to restrict this code to loading items
in TYPE_ALIGN sized hunks. The bitfield instructions can
bytes -= bitsize / BITS_PER_UNIT;
store_bit_field (reg, bitsize, endian_correction, word_mode,
- word, BITS_PER_WORD);
+ word);
}
}
}
rtx
store_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
unsigned HOST_WIDE_INT bitnum, enum machine_mode fieldmode,
- rtx value, HOST_WIDE_INT total_size)
+ rtx value)
{
unsigned int unit
= (MEM_P (str_rtx)) ? BITS_PER_UNIT : BITS_PER_WORD;
enum machine_mode op_mode = mode_for_extraction (EP_insv, 3);
- /* Discount the part of the structure before the desired byte.
- We need to know how many bytes are safe to reference after it. */
- if (total_size >= 0)
- total_size -= (bitpos / BIGGEST_ALIGNMENT
- * (BIGGEST_ALIGNMENT / BITS_PER_UNIT));
-
while (GET_CODE (op0) == SUBREG)
{
/* The following line once was done only if WORDS_BIG_ENDIAN,
store_bit_field (op0, MIN (BITS_PER_WORD,
bitsize - i * BITS_PER_WORD),
bitnum + bit_offset, word_mode,
- operand_subword_force (value, wordnum, fieldmode),
- total_size);
+ operand_subword_force (value, wordnum, fieldmode));
}
return value;
}
/* Fetch that unit, store the bitfield in it, then store
the unit. */
tempreg = copy_to_reg (op0);
- store_bit_field (tempreg, bitsize, bitpos, fieldmode, value,
- total_size);
+ store_bit_field (tempreg, bitsize, bitpos, fieldmode, value);
emit_move_insn (op0, tempreg);
return value;
}
rtx
extract_bit_field (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
unsigned HOST_WIDE_INT bitnum, int unsignedp, rtx target,
- enum machine_mode mode, enum machine_mode tmode,
- HOST_WIDE_INT total_size)
+ enum machine_mode mode, enum machine_mode tmode)
{
unsigned int unit
= (MEM_P (str_rtx)) ? BITS_PER_UNIT : BITS_PER_WORD;
enum machine_mode mode1;
int byte_offset;
- /* Discount the part of the structure before the desired byte.
- We need to know how many bytes are safe to reference after it. */
- if (total_size >= 0)
- total_size -= (bitpos / BIGGEST_ALIGNMENT
- * (BIGGEST_ALIGNMENT / BITS_PER_UNIT));
-
if (tmode == VOIDmode)
tmode = mode;
= extract_bit_field (op0, MIN (BITS_PER_WORD,
bitsize - i * BITS_PER_WORD),
bitnum + bit_offset, 1, target_part, mode,
- word_mode, total_size);
+ word_mode);
if (target_part == 0)
abort ();
&& (!REG_P (tmps[i]) || GET_MODE (tmps[i]) != mode))
tmps[i] = extract_bit_field (tmps[i], bytelen * BITS_PER_UNIT,
(bytepos % slen0) * BITS_PER_UNIT,
- 1, NULL_RTX, mode, mode, ssize);
+ 1, NULL_RTX, mode, mode);
}
else if (bytepos == 0)
{
else
tmps[i] = extract_bit_field (src, bytelen * BITS_PER_UNIT,
bytepos * BITS_PER_UNIT, 1, NULL_RTX,
- mode, mode, ssize);
+ mode, mode);
if (shift)
tmps[i] = expand_shift (LSHIFT_EXPR, mode, tmps[i],
emit_move_insn (adjust_address (dest, mode, bytepos), tmps[i]);
else
store_bit_field (dest, bytelen * BITS_PER_UNIT, bytepos * BITS_PER_UNIT,
- mode, tmps[i], ssize);
+ mode, tmps[i]);
}
emit_queue ();
store_bit_field (dst, bitsize, bitpos % BITS_PER_WORD, word_mode,
extract_bit_field (src, bitsize,
xbitpos % BITS_PER_WORD, 1,
- NULL_RTX, word_mode, word_mode,
- BITS_PER_WORD),
- BITS_PER_WORD);
+ NULL_RTX, word_mode, word_mode));
}
return tgtblk;
}
/* Store the value in the bitfield. */
- store_bit_field (target, bitsize, bitpos, mode, temp,
- int_size_in_bytes (type));
+ store_bit_field (target, bitsize, bitpos, mode, temp);
if (value_mode != VOIDmode)
{
}
return extract_bit_field (target, bitsize, bitpos, unsignedp,
- NULL_RTX, value_mode, VOIDmode,
- int_size_in_bytes (type));
+ NULL_RTX, value_mode, VOIDmode);
}
return const0_rtx;
}
op0 = extract_bit_field (op0, bitsize, bitpos, unsignedp,
(modifier == EXPAND_STACK_PARM
? NULL_RTX : target),
- ext_mode, ext_mode,
- int_size_in_bytes (TREE_TYPE (tem)));
+ ext_mode, ext_mode);
/* If the result is a record type and BITSIZE is narrower than
the mode of OP0, an integral mode, and this is a big endian
mode_for_extraction (enum extraction_pattern, int);
extern rtx store_bit_field (rtx, unsigned HOST_WIDE_INT,
- unsigned HOST_WIDE_INT, enum machine_mode, rtx,
- HOST_WIDE_INT);
+ unsigned HOST_WIDE_INT, enum machine_mode, rtx);
extern rtx extract_bit_field (rtx, unsigned HOST_WIDE_INT,
unsigned HOST_WIDE_INT, int, rtx,
- enum machine_mode, enum machine_mode,
- HOST_WIDE_INT);
+ enum machine_mode, enum machine_mode);
extern rtx expand_mult (enum machine_mode, rtx, rtx, rtx, int);
extern bool const_mult_add_overflow_p (rtx, rtx, rtx, enum machine_mode, int);
extern rtx expand_mult_add (rtx, rtx, rtx, rtx,enum machine_mode, int);
outmode = GET_MODE (outer);
inmode = GET_MODE (inner);
bitpos = SUBREG_BYTE (outer) * BITS_PER_UNIT;
- store_bit_field (inner, GET_MODE_BITSIZE (outmode), bitpos, outmode, y,
- GET_MODE_BITSIZE (inmode));
+ store_bit_field (inner, GET_MODE_BITSIZE (outmode), bitpos, outmode, y);
}
/* Return sequence of instructions generated by if conversion. This
a = simplify_gen_subreg (submode, op0, mode, i * subsize);
else
a = extract_bit_field (op0, subbitsize, i * subbitsize, unsignedp,
- NULL_RTX, submode, submode, size);
+ NULL_RTX, submode, submode);
if (CONSTANT_P (op1))
b = simplify_gen_subreg (submode, op1, mode, i * subsize);
else
b = extract_bit_field (op1, subbitsize, i * subbitsize, unsignedp,
- NULL_RTX, submode, submode, size);
+ NULL_RTX, submode, submode);
if (binoptab->code == DIV)
{
if (t)
emit_move_insn (t, res);
else
- store_bit_field (target, subbitsize, i * subbitsize, submode, res,
- size);
+ store_bit_field (target, subbitsize, i * subbitsize, submode, res);
}
break;
a = simplify_gen_subreg (submode, op0, mode, i * subsize);
else
a = extract_bit_field (op0, subbitsize, i * subbitsize, unsignedp,
- t, submode, submode, size);
+ t, submode, submode);
res = expand_unop (submode, unoptab, a, t, unsignedp);
if (t)
emit_move_insn (t, res);
else
- store_bit_field (target, subbitsize, i * subbitsize, submode, res,
- size);
+ store_bit_field (target, subbitsize, i * subbitsize, submode, res);
}
seq = get_insns ();
store_bit_field (dst, bitsize, xbitpos % BITS_PER_WORD, word_mode,
extract_bit_field (src, bitsize,
bitpos % BITS_PER_WORD, 1,
- NULL_RTX, word_mode, word_mode,
- BITS_PER_WORD),
- BITS_PER_WORD);
+ NULL_RTX, word_mode, word_mode));
}
tmpmode = GET_MODE (result_rtl);