diff options
author | Robert Suchanek <robert.suchanek@imgtec.com> | 2015-11-10 09:12:52 +0000 |
---|---|---|
committer | Robert Suchanek <rts@gcc.gnu.org> | 2015-11-10 09:12:52 +0000 |
commit | 0d20a76b28b1ea7935412f2778b250aea5d63f22 (patch) | |
tree | 6d7c7be18694fc0b82bcf54def8e11de69eb30a8 /gcc/regrename.h | |
parent | 66d662de1cc20000cb56a1c19685ad9b6b62d353 (diff) | |
download | gcc-0d20a76b28b1ea7935412f2778b250aea5d63f22.zip gcc-0d20a76b28b1ea7935412f2778b250aea5d63f22.tar.gz gcc-0d20a76b28b1ea7935412f2778b250aea5d63f22.tar.bz2 |
Tie chains for move instructions.
gcc/
* regrename.c (create_new_chain): Initialize renamed and tied_chain.
(build_def_use): Initialize terminated_this_insn.
(find_best_rename_reg): Pick and check register from the tied chain.
(regrename_do_replace): Mark head as renamed.
(struct du_head *terminated_this_insn). New static variable.
(scan_rtx_reg): Tie chains in move insns. Set terminated_this_insn.
* regrename.h (struct du_head): Add tied_chain, renamed members.
From-SVN: r230087
Diffstat (limited to 'gcc/regrename.h')
-rw-r--r-- | gcc/regrename.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/regrename.h b/gcc/regrename.h index bbe156d..77cc2fe 100644 --- a/gcc/regrename.h +++ b/gcc/regrename.h @@ -28,6 +28,8 @@ struct du_head struct du_head *next_chain; /* The first and last elements of this chain. */ struct du_chain *first, *last; + /* The chain that this chain is tied to. */ + struct du_head *tied_chain; /* Describes the register being tracked. */ unsigned regno; int nregs; @@ -45,6 +47,8 @@ struct du_head such as the SET_DEST of a CALL_INSN or an asm operand that used to be a hard register. */ unsigned int cannot_rename:1; + /* Nonzero if the chain has already been renamed. */ + unsigned int renamed:1; }; typedef struct du_head *du_head_p; |