http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60500
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |wrong-code Component|middle-end |fortran --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- The value is used uninitialized on the work1.data == NULL error path: work1.data = (void * restrict) __builtin_malloc (MAX_EXPR <D.2352, 1>); if (work1.data == 0B) { stat.0 = 5014; } } } } if ((logical(kind=4)) __builtin_expect ((integer(kind=8)) (stat.0 == 0), 1, 33)) { work1.dtype = 297; work1.dim[0].lbound = 1; work1.dim[0].ubound = (integer(kind=8)) *n1; work1.dim[0].stride = 1; work1.offset = -1; } if ((logical(kind=4)) __builtin_expect ((integer(kind=8)) (stat.0 != 0), 0, 33)) goto L.1; L.1:; *st = stat.0; { struct ntype D.2358; struct ntype ntype.3; integer(kind=8) D.2356; integer(kind=8) D.2355; integer(kind=8) D.2354; struct ntype[0:] * restrict D.2353; D.2353 = (struct ntype[0:] * restrict) work1.data; D.2354 = work1.offset; D.2355 = work1.dim[0].lbound; D.2356 = work1.dim[0].ubound; ntype.3.level = 1; D.2358 = ntype.3; { integer(kind=8) S.4; S.4 = D.2355; while (1) { if (S.4 > D.2356) goto L.3; (*D.2353)[S.4 + D.2354] = D.2358; S.4 = S.4 + 1; } L.3:; possibly the L.1 label is misplaced? At least the result would crash if malloc returned NULL. Frontend wrong-code bug.