summaryrefslogtreecommitdiff
path: root/gcc/lra-remat.c
diff options
context:
space:
mode:
authorvmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>2015-04-04 14:35:59 +0000
committervmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>2015-04-04 14:35:59 +0000
commitfa4f0b4ea29543315d5d6e4dee0a9c7806f3e144 (patch)
treecc574b4eb2853d00fe21a06d5c86561ed8401c46 /gcc/lra-remat.c
parent7a66d0cf98230d1b48a07c55d297b3507567d357 (diff)
downloadgcc-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.c10
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);