[Bug sanitizer/65365] New: false positive signed negation
joerg.richter@pdv-fs.de
gcc-bugzilla@gcc.gnu.org
Mon Mar 9 20:31:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65365
Bug ID: 65365
Summary: false positive signed negation
Product: gcc
Version: 4.9.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: sanitizer
Assignee: unassigned at gcc dot gnu.org
Reporter: joerg.richter@pdv-fs.de
CC: dodji at gcc dot gnu.org, dvyukov at gcc dot gnu.org,
jakub at gcc dot gnu.org, kcc at gcc dot gnu.org
cat > t.c <<EOF
int neg( unsigned v )
{
return -(int)(v-1)-1;
}
int main( int, char** )
{
neg( 2147483648u );
return 0;
}
EOF
g++ -o t t.c -fsanitize=undefined
./t
Gives this output:
t.c:3:22: runtime error: negation of -2147483648 cannot be represented in type
'int'; cast to an unsigned type to negate this value to itself
AFAIKS all operations are defined.
If the subtraction with "-1" is removed the error about negation disappears.
More information about the Gcc-bugs
mailing list