diff options
author | vmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-04-04 14:35:59 +0000 |
---|---|---|
committer | vmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4> | 2015-04-04 14:35:59 +0000 |
commit | fa4f0b4ea29543315d5d6e4dee0a9c7806f3e144 (patch) | |
tree | cc574b4eb2853d00fe21a06d5c86561ed8401c46 /gcc/lra-remat.c | |
parent | 7a66d0cf98230d1b48a07c55d297b3507567d357 (diff) | |
download | gcc-fa4f0b4ea29543315d5d6e4dee0a9c7806f3e144.tar.gz |
2015-04-04 Vladimir Makarov <vmakarov@redhat.com>
PR target/65647
* lra-int.h (LRA_MAX_REMATERIALIZATION_PASSES): New. Add its
value checking.
(lra_rematerialization_iter): New.
* lra.c (lra): Initialize lra_rematerialization_iter.
Stop updating lra_constraint_new_regno_start after switching of
inheritance and rematerialization.
* lra-remat.c (lra_rematerialization_iter): New.
(lra_remat): Add printing pass iteration. Do rematerialization
only first LRA_MAX_REMATERIALIZATION_PASSES iterations.
2015-04-04 Vladimir Makarov <vmakarov@redhat.com>
PR target/65647
* gcc.target/arm/pr65647.c: New.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221867 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lra-remat.c')
-rw-r--r-- | gcc/lra-remat.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/lra-remat.c b/gcc/lra-remat.c index ac827795713..36ea79282de 100644 --- a/gcc/lra-remat.c +++ b/gcc/lra-remat.c @@ -1259,6 +1259,9 @@ do_remat (void) +/* Current number of rematerialization iteration. */ +int lra_rematerialization_iter; + /* Entry point of the rematerialization sub-pass. Return true if we did any rematerialization. */ bool @@ -1270,6 +1273,13 @@ lra_remat (void) if (! flag_lra_remat) return false; + lra_rematerialization_iter++; + if (lra_rematerialization_iter > LRA_MAX_REMATERIALIZATION_PASSES) + return false; + if (lra_dump_file != NULL) + fprintf (lra_dump_file, + "\n******** Rematerialization #%d: ********\n\n", + lra_rematerialization_iter); timevar_push (TV_LRA_REMAT); insn_to_cand = XCNEWVEC (cand_t, get_max_uid ()); regno_cands = XCNEWVEC (cand_t, max_regno); |