[Bug c++/55772] New: "Jump crosses initialization" error spurious when var is unused
matthias at urlichs dot de
gcc-bugzilla@gcc.gnu.org
Fri Dec 21 07:53:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55772
Bug #: 55772
Summary: "Jump crosses initialization" error spurious when var
is unused
Classification: Unclassified
Product: gcc
Version: 4.7.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: matthias@urlichs.de
This is not an error if the variable in question is not accessed below the jump
target. The optimizer should detect this condition and not issue the warning.
Also, -fpermissive is ineffective because the third line is not affected.
This code works when I rename foo.cpp to foo.c.
$ >cat foo.cpp <<_END
int bar(int);
void foo(int check)
{
if(check) goto end;
int x = 123;
x=bar(x);
x=bar(x);
end:
bar(999);
}
_END
$ gcc -Wall -O3 -o foo.o -c foo.cpp
foo.cpp: In function ‘void foo(int)’:
foo.cpp:9:2: error: jump to label ‘end’ [-fpermissive]
foo.cpp:5:17: error: from here [-fpermissive]
foo.cpp:6:6: error: crosses initialization of ‘int x’
$ gcc -Wall -O3 -o foo.o -c foo.cpp -fpermissive
foo.cpp: In function ‘void foo(int)’:
foo.cpp:9:2: warning: jump to label ‘end’ [-fpermissive]
foo.cpp:5:17: warning: from here [-fpermissive]
foo.cpp:6:6: error: crosses initialization of ‘int x’
$ echo $?
1
$
More information about the Gcc-bugs
mailing list