aboutsummaryrefslogtreecommitdiff
path: root/gcc/ira.c
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2017-03-28 20:55:38 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2017-03-28 20:55:38 +0000
commite5119fab4f944e9c4bf1198f9408bcd8b002e200 (patch)
tree0094a5de9eecacd72808d29689265ffa402372e7 /gcc/ira.c
parent1f599d751ecacf9bcec4fe5ebaaaa1891d1b820e (diff)
downloadgcc-e5119fab4f944e9c4bf1198f9408bcd8b002e200.zip
gcc-e5119fab4f944e9c4bf1198f9408bcd8b002e200.tar.gz
gcc-e5119fab4f944e9c4bf1198f9408bcd8b002e200.tar.bz2
re PR rtl-optimization/80193 (ICE on valid (but hairy) C code at -O3 on x86_64-linux-gnu: in check_allocation, at ira.c:2563)
2017-03-28 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/80193 * ira.c (ira): Do not check allocation for LRA. 2017-03-28 Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/80193 * gcc.target/i386/pr80193.c: New. From-SVN: r246554
Diffstat (limited to 'gcc/ira.c')
-rw-r--r--gcc/ira.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ira.c b/gcc/ira.c
index b41c480..7079573 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -5334,7 +5334,6 @@ ira (FILE *f)
reg_alternate_class (old_regno),
reg_allocno_class (old_regno));
}
-
}
else
{
@@ -5370,7 +5369,14 @@ ira (FILE *f)
calculate_allocation_cost ();
#ifdef ENABLE_IRA_CHECKING
- if (ira_conflicts_p)
+ if (ira_conflicts_p && ! ira_use_lra_p)
+ /* Opposite to reload pass, LRA does not use any conflict info
+ from IRA. We don't rebuild conflict info for LRA (through
+ ira_flattening call) and can not use the check here. We could
+ rebuild this info for LRA in the check mode but there is a risk
+ that code generated with the check and without it will be a bit
+ different. Calling ira_flattening in any mode would be a
+ wasting CPU time. So do not check the allocation for LRA. */
check_allocation ();
#endif