This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/60500] [4.7/4.8/4.9 Regression] Spurious warning on derived type initialization
- From: "rguenth at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 31 Mar 2014 09:39:08 +0000
- Subject: [Bug fortran/60500] [4.7/4.8/4.9 Regression] Spurious warning on derived type initialization
- Auto-submitted: auto-generated
- References: <bug-60500-4 at http dot gcc dot gnu dot org/bugzilla/>
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.