| Summary: | [7 Regression] ICE in verify_ssa with -O3 -march=broadwell/skylake-avx512 | ||
|---|---|---|---|
| Product: | gcc | Reporter: | Vsevolod Livinskii <vsevolod.livinskiy> |
| Component: | tree-optimization | Assignee: | Bill Schmidt <bill.schmidt> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | bill.schmidt |
| Priority: | P1 | Keywords: | ice-on-valid-code |
| Version: | 7.0.1 | ||
| Target Milestone: | 7.0 | ||
| Host: | Target: | ||
| Build: | Known to work: | 6.3.1 | |
| Known to fail: | Last reconfirmed: | 2017-03-16 00:00:00 | |
| Bug Depends on: | |||
| Bug Blocks: | 103035 | ||
| Attachments: | Reproducer. | ||
|
Description
Vsevolod Livinskii
2017-03-15 17:13:04 UTC
Confirmed. SLSR is at fault. OK, I'll have a look. Reproducible on ppc64le without any -march. PRE creates a situation where a conditional SLSR candidate depends on a PHI that occurs prior to the basis for the candidate. SLSR doesn't notice this and eventually creates a phi basis that is not dominated by the true basis, leading to a use of an undefined variable. The fix will be to test whether the basis dominates all PHIs and their PHI argument definitions, and avoid the optimization in such cases. Testing now. Author: wschmidt Date: Mon Mar 20 20:04:25 2017 New Revision: 246290 URL: https://gcc.gnu.org/viewcvs?rev=246290&root=gcc&view=rev Log: [gcc] 2017-03-20 Bill Schmidt <wschmidt@linux.vnet.ibm.com> PR tree-optimization/80054 * gimple-ssa-strength-reduction.c (all_phi_incrs_profitable): Fail the optimization if a PHI or any of its arguments is not dominated by the candidate's basis. Use gphi* rather than gimple* as appropriate. (replace_profitable_candidates): Clean up a gimple* variable that should be a gphi* variable. [gcc/testsuite] 2017-03-20 Bill Schmidt <wschmidt@linux.vnet.ibm.com> PR tree-optimization/80054 * g++.dg/torture/pr80054.C: New file. Added: trunk/gcc/testsuite/g++.dg/torture/pr80054.C Modified: trunk/gcc/ChangeLog trunk/gcc/gimple-ssa-strength-reduction.c trunk/gcc/testsuite/ChangeLog Fixed. |