summaryrefslogtreecommitdiff
path: root/gcc/lra-int.h
diff options
context:
space:
mode:
authorvmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>2014-10-15 15:48:33 +0000
committervmakarov <vmakarov@138bc75d-0d04-0410-961f-82ee72b054a4>2014-10-15 15:48:33 +0000
commitf95727eecaa64ea3f959550af606cf71044798d8 (patch)
tree6f3ad3b8727dfb842a5843b742084318f3fc84c6 /gcc/lra-int.h
parentbdd367a0c1338c6afb88aa16cd2c7052e28d33f9 (diff)
downloadgcc-f95727eecaa64ea3f959550af606cf71044798d8.tar.gz
2014-10-15 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/63448 * lra-int.h (LRA_MAX_CONSTRAINT_ITERATION_NUMBER): Remove. (LRA_MAX_ASSIGNMENT_ITERATION_NUMBER): New. (LRA_MAX_INHERITANCE_PASSES): Use it. (lra_constraint_iter_after_spill): Remove. (lra_assignment_iter): New. (lra_assignment_iter_after_spill): New. * lra-assigns.c (lra_assignment_iter): New. (lra_assignment_iter_after_spill): New. (former_reload_pseudo_spill_p): New. (spill_for): Set up former_reload_pseudo_spill_p. (setup_live_pseudos_and_spill_after_risky): Ditto. (assign_by_spills): Ditto. (lra_assign): Increment lra_assignment_iter. Print the iteration number. Reset former_reload_pseudo_spill_p. Check lra_assignment_iter_after_spill. * lra.c (lra): Remove lra_constraint_iter_after_spill. Initialize lra_assignment_iter and lra_assignment_iter_after_spill. * lra-constraints.c (lra_constraint_iter_after_spill): Remove. (lra_constraints): Remove code with lra_assignment_iter_after_spill. 2014-10-15 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/63448 * gcc.target/i386/pr63448.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@216270 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/lra-int.h')
-rw-r--r--gcc/lra-int.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/lra-int.h b/gcc/lra-int.h
index 28903e1cad8..1337acad0d0 100644
--- a/gcc/lra-int.h
+++ b/gcc/lra-int.h
@@ -251,9 +251,10 @@ typedef struct lra_insn_recog_data *lra_insn_recog_data_t;
#define LRA_LOSER_COST_FACTOR 6
#define LRA_MAX_REJECT 600
-/* Maximum allowed number of constraint pass iterations after the last
- spill pass. It is for preventing LRA cycling in a bug case. */
-#define LRA_MAX_CONSTRAINT_ITERATION_NUMBER 30
+/* Maximum allowed number of assignment pass iterations after the
+ latest spill pass when any former reload pseudo was spilled. It is
+ for preventing LRA cycling in a bug case. */
+#define LRA_MAX_ASSIGNMENT_ITERATION_NUMBER 30
/* The maximal number of inheritance/split passes in LRA. It should
be more 1 in order to perform caller saves transformations and much
@@ -266,7 +267,7 @@ typedef struct lra_insn_recog_data *lra_insn_recog_data_t;
#define LRA_MAX_INHERITANCE_PASSES 2
#if LRA_MAX_INHERITANCE_PASSES <= 0 \
- || LRA_MAX_INHERITANCE_PASSES >= LRA_MAX_CONSTRAINT_ITERATION_NUMBER - 8
+ || LRA_MAX_INHERITANCE_PASSES >= LRA_MAX_ASSIGNMENT_ITERATION_NUMBER - 8
#error wrong LRA_MAX_INHERITANCE_PASSES value
#endif
@@ -331,7 +332,6 @@ extern void lra_init_equiv (void);
extern int lra_constraint_offset (int, enum machine_mode);
extern int lra_constraint_iter;
-extern int lra_constraint_iter_after_spill;
extern bool lra_risky_transformations_p;
extern int lra_inheritance_iter;
extern int lra_undo_inheritance_iter;
@@ -368,6 +368,8 @@ extern void lra_setup_reload_pseudo_preferenced_hard_reg (int, int, int);
/* lra-assigns.c: */
+extern int lra_assignment_iter;
+extern int lra_assignment_iter_after_spill;
extern void lra_setup_reg_renumber (int, int, bool);
extern bool lra_assign (void);