diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2017-03-28 20:55:38 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2017-03-28 20:55:38 +0000 |
commit | e5119fab4f944e9c4bf1198f9408bcd8b002e200 (patch) | |
tree | 0094a5de9eecacd72808d29689265ffa402372e7 /gcc/ira.c | |
parent | 1f599d751ecacf9bcec4fe5ebaaaa1891d1b820e (diff) | |
download | gcc-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.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -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 |