Commit a4971e68 by Vladimir Makarov Committed by Vladimir Makarov

re PR target/60675 ([aarch64] internal compiler error: Max. number of generated…

re PR target/60675 ([aarch64] internal compiler error: Max. number of generated reload insns per insn is achieved (90))

2014-03-28  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/60675
	* lra-assigns.c (find_hard_regno_for): Remove unavailable hard
	regs from checking multi-reg pseudos.

2014-03-28  Vladimir Makarov  <vmakarov@redhat.com>

	PR target/60675
	* gcc.target/aarch64/pr60675.C: New.

From-SVN: r208900
parent 2486c24a
2014-03-28 Vladimir Makarov <vmakarov@redhat.com>
PR target/60675
* lra-assigns.c (find_hard_regno_for): Remove unavailable hard
regs from checking multi-reg pseudos.
2014-03-28 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com> 2014-03-28 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
* config/arm/t-aprofile (MULTILIB_MATCHES): Correct A12 rule. * config/arm/t-aprofile (MULTILIB_MATCHES): Correct A12 rule.
......
...@@ -473,7 +473,7 @@ find_hard_regno_for (int regno, int *cost, int try_only_hard_regno, ...@@ -473,7 +473,7 @@ find_hard_regno_for (int regno, int *cost, int try_only_hard_regno,
enum reg_class rclass; enum reg_class rclass;
bitmap_iterator bi; bitmap_iterator bi;
bool *rclass_intersect_p; bool *rclass_intersect_p;
HARD_REG_SET impossible_start_hard_regs; HARD_REG_SET impossible_start_hard_regs, available_regs;
COPY_HARD_REG_SET (conflict_set, lra_no_alloc_regs); COPY_HARD_REG_SET (conflict_set, lra_no_alloc_regs);
rclass = regno_allocno_class_array[regno]; rclass = regno_allocno_class_array[regno];
...@@ -586,6 +586,8 @@ find_hard_regno_for (int regno, int *cost, int try_only_hard_regno, ...@@ -586,6 +586,8 @@ find_hard_regno_for (int regno, int *cost, int try_only_hard_regno,
biggest_nregs = hard_regno_nregs[hard_regno][biggest_mode]; biggest_nregs = hard_regno_nregs[hard_regno][biggest_mode];
nregs_diff = (biggest_nregs nregs_diff = (biggest_nregs
- hard_regno_nregs[hard_regno][PSEUDO_REGNO_MODE (regno)]); - hard_regno_nregs[hard_regno][PSEUDO_REGNO_MODE (regno)]);
COPY_HARD_REG_SET (available_regs, reg_class_contents[rclass]);
AND_COMPL_HARD_REG_SET (available_regs, lra_no_alloc_regs);
for (i = 0; i < rclass_size; i++) for (i = 0; i < rclass_size; i++)
{ {
if (try_only_hard_regno >= 0) if (try_only_hard_regno >= 0)
...@@ -601,9 +603,9 @@ find_hard_regno_for (int regno, int *cost, int try_only_hard_regno, ...@@ -601,9 +603,9 @@ find_hard_regno_for (int regno, int *cost, int try_only_hard_regno,
&& (nregs_diff == 0 && (nregs_diff == 0
|| (WORDS_BIG_ENDIAN || (WORDS_BIG_ENDIAN
? (hard_regno - nregs_diff >= 0 ? (hard_regno - nregs_diff >= 0
&& TEST_HARD_REG_BIT (reg_class_contents[rclass], && TEST_HARD_REG_BIT (available_regs,
hard_regno - nregs_diff)) hard_regno - nregs_diff))
: TEST_HARD_REG_BIT (reg_class_contents[rclass], : TEST_HARD_REG_BIT (available_regs,
hard_regno + nregs_diff)))) hard_regno + nregs_diff))))
{ {
if (hard_regno_costs_check[hard_regno] if (hard_regno_costs_check[hard_regno]
......
2014-03-28 Vladimir Makarov <vmakarov@redhat.com>
PR target/60675
* gcc.target/aarch64/pr60675.C: New.
2014-03-28 Andreas Krebbel <Andreas.Krebbel@de.ibm.com> 2014-03-28 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* gcc.dg/tree-ssa/ssa-dom-thread-4.c: Remove s390 special * gcc.dg/tree-ssa/ssa-dom-thread-4.c: Remove s390 special
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment