Commit 864bcaa7 by Jeff Law

cse.c (canon_hash): Handle PRE_MODIFY/POST_MODIFY.

        * cse.c (canon_hash): Handle PRE_MODIFY/POST_MODIFY.
        (cse_insn): Likewise.
        (addr_affects_sp_p): Likewise.
        * expr.c (move_by_pieces): Likewise.
        (clear_by_pieces): Likewise.
        * gcse.c (oprs_unchanged_p): Likewise.
        * haifa-sched.c (sched_analyze_2): Likewise.
        * recog.c (offsettable_address_p): Likewise.
        * regclass.c (record_address_regs): Likewise.
        * reload.c (find_reusable_reload): Likewise.
        (push_reload): Likewise.
        (operands_match_p): Likewise.
        (decompose): Likewise.
        (find_reloads_address_1): Likewise.
        (find_inc_amount): Likewise.
        * reload1.c (elimination_effects): Likewise.
        * resource.c (mark_set_resources): Likewise.
        * flow.c (attempt_auto_inc): New function; mostly broken out
        of find_auto_inc.
        (find_auto_inc): Split into two functions and enhanced to
        generate POST_MODIFY.
        * rtl.def (PRE_MODIFY, POST_MODIFY): Adjust comment.
        * rtl.h (count_all_occurrences):  Declare.
        (HAVE_{PRE,POST}_MODIFY_{DISP,REG}): Provide default of 0 if not
        defined.
        * rtlanal.c (count_all_occurrences): New function.
        * tm.texi (HAVE_POST_MODIFY_DISP, HAVE_PRE_MODIFY_DISP,
        HAVE_POST_MODIFY_REG, HAVE_PRE_MODIFY_REG): Document.

        * config/ia64/ia64-protos.h (destination_operand): Declare.
        * config/ia64/ia64.c (destination_operand): New function.
        (ia64_print_operand): Handle POST_MODIFY.
        (rtx_needs_barrier): Likewise.
        * config/ia64/ia64.h (HAVE_POST_MODIFY_DISP): Define to 1.
        (HAVE_POST_MODIFY_REG): Define to 1.
        (MAX_REGS_PER_ADDRESS): Change to 2.
        (GO_IF_LEGITIMATE_ADDRESS): Accept POST_MODIFY too.
        (LEGITIMATE_ADDRESS_REG): New helper macro.
        (LEGITIMATE_ADDRESS_DISP): Likewise.
        (PREDICATE_CODES): Add entry for destination_operand.
        * config/ia64/ia64.md (all mov patterns): Use destination_operand
        predicate for operand 0.
Restoring tm.texi after corruption.

From-SVN: r35713
parent 980e2067
...@@ -4289,6 +4289,26 @@ A C expression that is nonzero the machine supports post-increment addressing. ...@@ -4289,6 +4289,26 @@ A C expression that is nonzero the machine supports post-increment addressing.
@itemx HAVE_PRE_DECREMENT @itemx HAVE_PRE_DECREMENT
Similar for other kinds of addressing. Similar for other kinds of addressing.
@findex HAVE_POST_MODIFY_DISP
@item HAVE_POST_MODIFY_DISP
Define this macro if the machine supports post-modify addressing
with a constant displacement.
@findex HAVE_PRE_MODIFY_DISP
@item HAVE_PRE_MODIFY_DISP
Define this macro if the machine supports pre-modify addressing
with a constant displacement.
@findex HAVE_POST_MODIFY_REG
@item HAVE_POST_MODIFY_REG
Define this macro if the machine supports post-modify addressing
by the contents of a register.
@findex HAVE_PRE_MODIFY_REG
@item HAVE_PRE_MODIFY_REG
Define this macro if the machine supports pre-modify addressing
by the contents of a register.
@findex CONSTANT_ADDRESS_P @findex CONSTANT_ADDRESS_P
@item CONSTANT_ADDRESS_P (@var{x}) @item CONSTANT_ADDRESS_P (@var{x})
A C expression that is 1 if the RTX @var{x} is a constant which A C expression that is 1 if the RTX @var{x} is a constant which
......
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