[Bug tree-optimization/68963] [4.9/5/6 Regression] O3 vs. O2 discards part of loop and terminates early

2016-02-24 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68963 --- Comment #8 from Richard Biener --- Author: rguenth Date: Wed Feb 24 12:03:27 2016 New Revision: 233660 URL: https://gcc.gnu.org/viewcvs?rev=233660=gcc=rev Log: 2016-02-24 Richard Biener PR middle-end/68963

[Bug tree-optimization/68963] [4.9/5/6 Regression] O3 vs. O2 discards part of loop and terminates early

2016-02-24 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68963 --- Comment #7 from Richard Biener --- Ok, I think the issue is really in record_nonwrapping_iv doing wide_int min, max; extreme = fold_convert (unsigned_type, high); if (TREE_CODE (orig_base) == SSA_NAME &&

[Bug tree-optimization/68963] [4.9/5/6 Regression] O3 vs. O2 discards part of loop and terminates early

2016-02-23 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68963 --- Comment #6 from Richard Biener --- Hmm, I think it's rather discover_iteration_bound_by_body_walk that merges the two estimates of 3 iterations from both arms even though those are not based off the same IV. OTOH the estimates itself assume

[Bug tree-optimization/68963] [4.9/5/6 Regression] O3 vs. O2 discards part of loop and terminates early

2016-02-22 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68963 Richard Biener changed: What|Removed |Added Status|NEW |ASSIGNED Assignee|unassigned

[Bug tree-optimization/68963] [4.9/5/6 Regression] O3 vs. O2 discards part of loop and terminates early

2016-02-11 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68963 --- Comment #4 from Jakub Jelinek --- Honza, can you please have a look at this? This looks like pretty important bug to me. We record_estimate of 2 (+1) from both of the a[] accesses, one is using the 1 * BIV as index and another is using 1 *

[Bug tree-optimization/68963] [4.9/5/6 Regression] O3 vs. O2 discards part of loop and terminates early

2016-01-14 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68963 Richard Biener changed: What|Removed |Added Priority|P3 |P2

[Bug tree-optimization/68963] [4.9/5/6 Regression] O3 vs. O2 discards part of loop and terminates early

2015-12-21 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68963 --- Comment #3 from Jakub Jelinek --- Adjusted testcase for testsuite purposes: static const float a[3] = { 1, 2, 3 }; int b = 3; __attribute__((noinline, noclone)) void bar (int x) { if (x != b++) __builtin_abort (); } void foo (float

[Bug tree-optimization/68963] [4.9/5/6 Regression] O3 vs. O2 discards part of loop and terminates early

2015-12-21 Thread jakub at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68963 Jakub Jelinek changed: What|Removed |Added CC||hubicka at gcc dot gnu.org,

[Bug tree-optimization/68963] [4.9/5/6 Regression] O3 vs. O2 discards part of loop and terminates early

2015-12-18 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68963 Richard Biener changed: What|Removed |Added Status|UNCONFIRMED |NEW Known to work|