https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123929
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
We are warning here:
arrayTags[i] = hasOption(i);
Because hasOption has a bounds check inlined in. There is jump threading.
Since i.i is unknown in its range but with the jump threading things go down
hill.
I am not sure what can be done to prove that is dead code either because the
initialization of i.i is hidden and getFloat is hidden so it could in theory
increment i.i too.
I am also not sure if this reduced testcase is represenative of the original
code. Especially the wrapping code.