aboutsummaryrefslogtreecommitdiff
path: root/gcc/regrename.h
diff options
context:
space:
mode:
authorRobert Suchanek <robert.suchanek@imgtec.com>2015-11-10 09:12:52 +0000
committerRobert Suchanek <rts@gcc.gnu.org>2015-11-10 09:12:52 +0000
commit0d20a76b28b1ea7935412f2778b250aea5d63f22 (patch)
tree6d7c7be18694fc0b82bcf54def8e11de69eb30a8 /gcc/regrename.h
parent66d662de1cc20000cb56a1c19685ad9b6b62d353 (diff)
downloadgcc-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.h4
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;