https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100994
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The difference after IPA between r12-433 and r12-434 is:
--- pr100994.c.092t.fixup_cfg3_ 2021-06-09 14:26:08.000000000 -0400
+++ pr100994.c.092t.fixup_cfg3 2021-06-09 14:26:28.000000000 -0400
@@ -3,7 +3,6 @@
int main ()
{
- const struct a l;
const <unnamed-unsigned:9> l$c;
int g.0_4;
int f.3_5;
@@ -14,8 +13,7 @@ int main ()
int e.5_10;
<bb 2> [local count: 1073741824]:
- l = d;
- l$c_3 = l.c;
+ l$c_3 = 0;
<bb 3> [local count: 9761289362]:
g.0_4 = g;
@@ -37,8 +35,8 @@ int main ()
goto <bb 6>; [50.00%]
<bb 6> [local count: 4343773769]:
- l.c = l$c_3;
- _6 = BIT_FIELD_REF <l, 8, 0>;
+ d.c = l$c_3;
+ _6 = 0;
_7 = _6 & 15;
if (_7 != 0)
goto <bb 8>; [50.00%]
Note, d is a TREE_STATIC const variable where both members are 0,
so I guess l$c_3 = 0; is ok, but the l.c = l$c_3 to d.c = l$c_3; change is not,
that is what segfaults there.