[Bug c++/80129] wrong code with ternary struct assignment to const
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Mar 21 12:18:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80129
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Segfaults since r137361, before it has been rejected, so indeed not a
regression.
I think the bug is during gimplification, *.original:
<<cleanup_point bool b = 0;>>;
const struct pair x;
<<cleanup_point <<< Unknown tree: expr_stmt
(void) (x = b ? TARGET_EXPR <D.2040, {.first=1, .second=1}> : TARGET_EXPR
<D.2050, {.first=0, .second=0}>) >>>>>;
looks sane to me, but *.gimple:
static const struct pair x = {.first=1, .second=1};
b = 0;
if (b != 0) goto <D.2077>; else goto <D.2078>;
<D.2077>:
goto <D.2079>;
<D.2078>:
x.first = 0;
x.second = 0;
<D.2079>:
is not due to the const (at least if the VAR_DECL is TREE_READONLY).
More information about the Gcc-bugs
mailing list