Age | Commit message (Collapse) | Author | Files | Lines |
|
From-SVN: r3532
|
|
From-SVN: r3468
|
|
(combine_instructions): Add calls to setup_incoming_promotions.
From-SVN: r3451
|
|
set things up so that we can call get_last value; call
record_dead_and_set_regs in loop.
(set_nonzero_bits_and_sign_copies): Handle paradoxical SET.
From-SVN: r3444
|
|
From-SVN: r3398
|
|
`gen_rtx_combine' is called before `try_combine'.
From-SVN: r3359
|
|
From-SVN: r3317
|
|
From-SVN: r3275
|
|
instead use POS_RTX unless it is nonzero.
(make_extraction): Don't use POS < 0 as a flag that POS_RTX is to be
used; instead use POS_RTX unless it is nonzero. If POS_RTX is a
constant, set POS and clear POS_RTX.
(make_compound_operation, make_field_assignment): Pass 0 for POS
instead of -1 when POS_RTX is nonzero.
From-SVN: r3178
|
|
(subst, simplify_and_const_int, nonzero_bits, num_sign_bit_copies): Use them.
(subst, case SET): Make a SIGN_EXTEND instead of paradoxical SUBREG if
BYTE_LOADS_SIGN_EXTEND; previously only made ZERO_EXTEND.
From-SVN: r3160
|
|
Rename references to `significant' bits to be `nonzero' bits;
specifically the following, but also local vars and comments:
(reg_nonzero_bits): Renamed from reg_significant.
(nonzero_bits): Renamed from significant_bits.
(nonzero_sign_valid): Renamed from significant_valid.
(set_nonzero_bits_and_sign_copies): Renamed from set_significant.
From-SVN: r2975
|
|
equivalent call to num_sign_bit_copies.
From-SVN: r2972
|
|
UNDOBUF.OTHER_INSN.
From-SVN: r2933
|
|
(subst, comparison cases): Expand any compound operation that is an
operand; rerun subst on simplified result in one new case.
From-SVN: r2922
|
|
restricted circumstances.
From-SVN: r2914
|
|
unconditional jump when it is the last nonnote insn.
From-SVN: r2881
|
|
a split if it does not overlap any inputs of NEWPAT.
From-SVN: r2857
|
|
set once.
From-SVN: r2856
|
|
Fix typo in last change; return 1 on failure, not BITWIDTH.
From-SVN: r2827
|
|
significant_bits...
(subst, make_field_assignment, num_sign_bit_copies): Protect calls to
significant_bits; unless we only care if the result is a power of two,
don't call if mode size is wider than HOST_BITS_PER_WIDE_INT.
(extended_count, simplify_shift_const, simplify_comparison): Likewise.
From-SVN: r2824
|
|
From-SVN: r2807
|
|
use inner_mode, not is_mode.
(num_sign_bit_copies): Inhibit x-1 special case
when x is a paradoxical subreg.
From-SVN: r2802
|
|
returns BLKmode on error, not VOIDmode.
From-SVN: r2761
|
|
For a subreg, require subreg_lowpart_p and not paradoxical.
From-SVN: r2664
|
|
From-SVN: r2652
|
|
containing a register that will be clobbered in I3.
From-SVN: r2631
|
|
for BYTES_BIG_ENDIAN adjustment to offset for non-bitfield case.
Update is_mode when stripping subreg from around a mem.
From-SVN: r2556
|
|
From-SVN: r2426
|
|
which might make it a PARALLEL.
From-SVN: r2411
|
|
From-SVN: r2409
|
|
a define_split.
From-SVN: r2406
|
|
pointer.
From-SVN: r2381
|
|
variables.
From-SVN: r2215
|
|
{SIGN,ZERO}_EXTRACT depend on UNSIGNEDP.
From-SVN: r2202
|
|
From-SVN: r2196
|
|
just in split case.
(subst): Move sign extension inside arithmetic when we have a constant
computation inside another computation.
From-SVN: r2194
|
|
BYTE_LOADS_SIGN_EXTEND just like BYTE_LOADS_ZERO_EXTEND.
(subst, simplify_and_const_int, significant_bits): Treat
BYTE_LOADS_SIGN_EXTEND just like BYTE_LOADS_ZERO_EXTEND.
(num_sign_bit_copies, case MEM): New case for BYTE_LOADS_SIGN_EXTEND.
(num_sign_bit_copies, case SUBREG): Handle just like significant_bits.
From-SVN: r2189
|
|
Likewise, when making new REG_DEAD notes for distribute_notes.
(remove_death, move_deaths): Update reg_n_deaths.
(distribute_notes): When placing second REG_DEAD or REG_UNUSED note or
ignoring such a note, update reg_n_deaths.
(simplify_comparison, case ASHIFT): Fix typo.
(try_combine): The insns made by a DEFINE_SPLIT might contain a PARALLEL and
the call to recog_for_combine might add it.
(combine_instructions): Clear significant_valid at end of combine pass for
a function.
(find_split_point, case MEM): See if first operand of the PLUS that makes
up an address is complex.
(subst): Add missing arg to recursive calls when IF_THEN_ELSE is an arg
of an operator.
(subst, case IF_THEN_ELSE): Generalize code to propagate comparison result
into arms by using known_cond.
If an arm is the first operand of the comparison, make it the true arm.
Remove unneeded comparison when arms are identical.
Try to convert IF_THEN_ELSE to ABS, (neg (abs X)), [US]MIN, [US]MAX.
Convert (if_then_else (ne A 0) (OP X C) X) to (OP X (mult A C)).
(subst, case SET): If we don't have conditional moves, convert IF_THEN_ELSE
into logical operations.
(subst, case AND): Always make conditional moves, even if we don't support
them on the machine.
(known_cond, extended_count): New functions.
(gen_binary): For commutative operations, put constant last.
From-SVN: r2182
|
|
code.
From-SVN: r2059
|
|
(make_compound_operation, case ASHIFTRT): Add new code to
handle (ashiftrt (neg (ashift FOO C1) C2)) just like we currently
handle (ashiftrt (OP (ashiftrt FOO C1) C2) C2).
From-SVN: r2028
|
|
instead of using SUBST due to sharing.
(simplify_comparison): Correct test for sign extension when trying to
widen comparison.
From-SVN: r1938
|
|
If we restart, clear OP0_MODE since we don't know it.
From-SVN: r1926
|
|
From-SVN: r1905
|
|
From-SVN: r1903
|
|
From-SVN: r1895
|
|
comparison in a wider mode.
(distribute_notes, REG_EQUAL): Don't put back a note with a
non-constant expression since it may no longer be valid.
From-SVN: r1894
|
|
From-SVN: r1886
|
|
(SUBST, SUBST_INT, undo_all, gen_rtx_combine): Make consistent with
new definitions.
From-SVN: r1870
|
|
value.
From-SVN: r1857
|
|
(combine_instructions): Initialize it.
(set_significant): Set it.
(try_combine): Set subst_low_cuid immediately before calling `subst' to
the INSN_CUID of the lowest insn involved in the call. Change XOR with
out-of-range constant to (not (xor ...)).
Call both split_insns and find_split_point; pass extra parm to
find_split_point.
Record I2DEST's value if I2 now sets it; similarly for I1DEST.
(find_split_point): Add new arg INSN.
If AND'ing with a large single-bit constant and we only care about
equality with zero, replace with bit extraction.
Make two shifts for ZERO_EXTRACTs unless very narrow.
(subst): Move RESTART label earlier.
If we have a simple operation applied to IF_THEN_ELSE, move the operation
inside the two arms.
(subst, case SUBREG): Use force_to_mode.
(subst, case NOT): Change (not (xor X C)) to (xor X ~C).
(subst, case NEG): Remove (neg (abs X)); redundant.
Convert (neg (xor A 1)) to (plus A -1) if A is known to be 0 or 1.
(subst, case IF_THEN_ELSE): Simplify if an arm contains a register being
tested by substiting the known value.
Put constant integer in last arm if can reverse comparison.
(subst, case SET): Use gen_lowpart_for_combine.
(subst, case AND): Make IF_THEN_ELSE when appropriate.
(subst, case IOR): (ior A C) can sometimes be just C.
(subst, case XOR): Go back and restart when canonicalizing.
(subst, case ABS): Use num_sign_bit_copies.
(make_extraction): Call force_to_mode.
(make_compound_operation): Look at optabs rather that explicitly checking
for operations and assuming we have SImode.
Handle (ashiftrt (OP (ashift foo C1) C3) C2).
(force_to_mode): Only change mode of arithmetic if optab says we have
operation in that mode.
Remove unneeded ASHIFTRT; add handling for IF_THEN_ELSE.
(significant_bits, case NEG): Call num_sign_bit_copies.
(significant_bits, case ABS, case [US]{MIN,MAX}, IF_THEN_ELSE): New.
(num_sign_bit_copies): New function.
(simplify_shift_const): Remove ASHIFTRT if value is known -1 or 0.
Use num_sign_bit_copies to simplify (ashiftrt (ashift ...) ...)
and (ashiftrt (neg ...) ...).
Remove now redundant case when VAROP is a PLUS.
(simplify_comparison): If A is known to be -1 or 0, A != -1 is A == 0.
Simplify unsigned tests that really check the sign bit.
(simplify_comparison, case ASHIFTRT): Convert to LSHIFTRT if equality
comparison with zero.
(get_last_value): Check if the desired register is set in the
insn before the one whose INSN_CUID is subst_low_cuid.
From-SVN: r1746
|