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
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
&&
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
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68963
Richard Biener changed:
What|Removed |Added
Status|NEW |ASSIGNED
Assignee|unassigned
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 *
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68963
Richard Biener changed:
What|Removed |Added
Priority|P3 |P2
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
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68963
Jakub Jelinek changed:
What|Removed |Added
CC||hubicka 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|