]> git.ipfire.org Git - thirdparty/gcc.git/commit
ira.c validate_equiv_mem
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 30 Apr 2016 00:00:22 +0000 (00:00 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 30 Apr 2016 00:00:22 +0000 (00:00 +0000)
commit7563075646be336acb5094b61bdb0c2204712e54
treea725f9a222e218eee12c6290bad3b78c73e16c97
parent0327cdb06d2e564321ae16b218dcb99614680198
ira.c validate_equiv_mem

This function is used to validate REG_EQUIV notes generated by ira,
and to validate potential insn combines performed by ira.  The two
conditions are not exactly the same, with reload being more
restrictive.  Separate them so more combines/moves can occur.

For example, this sequence from cfgexpand.c:expand_gimple_cond
callq  _Z18update_bb_for_insnP15basic_block_def
mov    0x10(%rbx),%rdi
mov    0x0(%rip),%rbp        # x_rtl+0x34
callq  _Z9safe_as_aIP8rtx_insn7rtx_defET_PT0_
mov    %r13,%rdx
mov    %rbp,%rsi
mov    %rax,%rdi
callq  _Z18create_basic_blockP7rtx_defS0_P15basic_block_def

becomes
callq  _Z18update_bb_for_insnP15basic_block_def
mov    0x10(%rbx),%rdi
callq  _Z9safe_as_aIP8rtx_insn7rtx_defET_PT0_
mov    0x0(%rip),%rsi        # x_rtl+0x34
mov    %r13,%rdx
mov    %rax,%rdi
callq  _Z18create_basic_blockP7rtx_defS0_P15basic_block_def

* ira.c (enum valid_equiv): New.
(validate_equiv_mem): Return enum.
(update_equiv_mem): Create replacement in more cases.
(add_store_equivs): Update validate_equiv_mem call.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@235661 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/ira.c