https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85855
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |NEW Target Milestone|--- |7.4 Summary|[7 Regression] (Maybe) |[7/8/9 Regression] (Maybe) |uninitialized descriptor |uninitialized descriptor |fields of an allocatable |fields of an allocatable |array component of a |array component of a |function result |function result --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- FE issue. It emits reduce (struct __class_test_Grid_t & restrict g) { struct grid res; res.mask.data = 0B; { ... D.3608 = (integer(kind=4)[0:] * restrict) g->_data->mask.data; D.3609 = g->_data->mask.offset; D.3610 = g->_data->mask.dim[0].lbound; D.3611 = g->_data->mask.dim[0].ubound; D.3612 = g->_data->mask.dim[1].lbound; D.3613 = g->_data->mask.dim[1].ubound; D.3614 = g->_data->mask.dim[2].lbound; D.3615 = g->_data->mask.dim[2].ubound; D.3616 = (integer(kind=4)[0:] * restrict) res.mask.data; D.3617 = res.mask.offset; D.3618 = res.mask.dim[0].lbound; D.3619 = res.mask.dim[0].ubound; D.3620 = res.mask.dim[1].lbound; D.3621 = res.mask.dim[1].ubound; D.3622 = res.mask.dim[2].lbound; D.3623 = res.mask.dim[2].ubound; D.3624 = D.3618 - D.3610; D.3625 = D.3620 - D.3612; D.3626 = D.3622 - D.3614; thus loads res.mask.dim[] and computes things with it before initializing. That also means on archs with NaT (IA64) it might even trap.