[Bug c/86046] [9 Regression] ICE in execute_todo, at passes.c:2043
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jun 5 08:22:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86046
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |ASSIGNED
Last reconfirmed| |2018-06-05
Target Milestone|--- |9.0
Ever confirmed|0 |1
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed. After CCP:
No longer having address taken: D.1960
but then we fail to rewrite it.
VIEW_CONVERT_EXPR<int[1]>(D.1960)[1] = 0;
Ah, so the issue seems to be that D.1960 is already DECL_GIMPLE_REG_P but
it is just TREE_ADDRESSABLE avoiding the rewriting need. But
update_address_taken simply clears TREE_ADDRESSABLE but leaves
DECL_GIMPLE_REG_P
in place thinking it cannot be set.
The issue may be premature setting of DECL_GIMPLE_REG_P but we can work around
this in update_address_taken.
There's a missed optimization as well, we expect to rewrite the array-ref into
a bitfield ref during gimplification. Ah, but we avoid doing that for
the out-of-bound access this is.
More information about the Gcc-bugs
mailing list