https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98357
Andrew Macleod <amacleod at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |aldyh at redhat dot com,
| |amacleod at redhat dot com
--- Comment #3 from Andrew Macleod <amacleod at redhat dot com> ---
We should be able to handle this in GCC 12 . The WIP relation support in ranger
currently is showing:
<bb 2> :
_1 = i_6(D) < len_7(D);
_2 = i_6(D) >= j_8(D);
_3 = _1 & _2;
if (_3 != 0)
goto <bb 3>; [INV]
else
goto <bb 6>; [INV]
=========== BB 3 ============
len_7(D) size_t [1, +INF]
j_8(D) size_t VARYING
Relational : (i_6(D) >= j_8(D))
Relational : (i_6(D) < len_7(D))
<bb 3> :
if (len_7(D) > j_8(D))
goto <bb 4>; [INV]
else
goto <bb 5>; [INV]
So once I get the transitive queries of relations working, we should be able to
recognize
len_7 > i_6 >= j_8
and then the condition will fold trivially eliminating the call to exit().