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.

Reply via email to