https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84155
--- Comment #16 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- The statements are removed upon conversion to gimple: --- Falsch/a.f90.004t.gimple 2018-02-03 15:08:29.370147886 +0100 +++ Korrekt/a.f90.004t.gimple 2018-02-03 15:07:16.428178637 +0100 @@ -893,6 +893,9 @@ [a.f90:24:0] _22 = [a.f90:24:0] [a.f90:24:0] container.array.offset; [a.f90:24:0] _23 = _22 + 1; [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] MEM[(struct array_t[0:] *)_21][_23].child.dtype = {}; + [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] MEM[(struct array_t[0:] *)_21][_23].child.dtype.elem_len = 4; + [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] MEM[(struct array_t[0:] *)_21][_23].child.dtype.rank = 1; + [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] MEM[(struct array_t[0:] *)_21][_23].child.dtype.type = 1; [a.f90:24:0] overflow.22 = 0; [a.f90:24:0] if (overflow.22 != 0) goto <D.4128>; else goto <D.4129>; <D.4128>: --- Falsch/a.f90.006t.omplower 2018-02-03 15:08:29.370147886 +0100 +++ Korrekt/a.f90.006t.omplower 2018-02-03 15:07:16.428178637 +0100 @@ -914,6 +914,9 @@ [a.f90:24:0] _22 = [a.f90:24:0] [a.f90:24:0] container.array.offset; [a.f90:24:0] _23 = _22 + 1; [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] MEM[(struct array_t[0:] *)_21][_23].child.dtype = {}; + [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] MEM[(struct array_t[0:] *)_21][_23].child.dtype.elem_len = 4; + [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] MEM[(struct array_t[0:] *)_21][_23].child.dtype.rank = 1; + [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] [a.f90:24:0] MEM[(struct array_t[0:] *)_21][_23].child.dtype.type = 1; [a.f90:24:0] overflow.22 = 0; [a.f90:24:0] if (overflow.22 != 0) goto <D.4128>; else goto <D.4129>; <D.4128>: Looks like a middle-end bug to me.