http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59963
Bug ID: 59963 Summary: Wrong column number for warning -Woverflow Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: chengniansun at gmail dot com Gcc emits constant overflow warnings with incorrect column numbers. The column always starts from the beginning of the statement or expression in which overflow occurs. $: cat imprecise-column-no-overflow.c extern int f(short a, short b); int g() { return f(0xFFFFFFFFL, 0xFFFFFFFFL) && f(0xFFFFFFFFL, 0xFFFFFFFFL) ; } $: gcc-trunk -c -Woverflow imprecise-column-no-overflow.c imprecise-column-no-overflow.c: In function āgā: imprecise-column-no-overflow.c:3:3: warning: overflow in implicit constant conversion [-Woverflow] return f(0xFFFFFFFFL, 0xFFFFFFFFL) && f(0xFFFFFFFFL, 0xFFFFFFFFL) ; ^ imprecise-column-no-overflow.c:3:3: warning: overflow in implicit constant conversion [-Woverflow] imprecise-column-no-overflow.c:3:3: warning: overflow in implicit constant conversion [-Woverflow] imprecise-column-no-overflow.c:3:3: warning: overflow in implicit constant conversion [-Woverflow] $: gcc-trunk -v Using built-in specs. COLLECT_GCC=gcc-trunk COLLECT_LTO_WRAPPER=/home/chengniansun/tools/gcc-trunk-binaries/libexec/gcc/x86_64-unknown-linux-gnu/4.9.0/lto-wrapper Target: x86_64-unknown-linux-gnu Configured with: ../gcc-trunk/configure --enable-languages=c,c++ --disable-multilib --prefix=/home/chengniansun/tools/gcc-trunk-binaries : (reconfigured) ../gcc-trunk/configure --enable-languages=c,c++ --disable-multilib --prefix=/home/chengniansun/tools/gcc-trunk-binaries Thread model: posix gcc version 4.9.0 20140127 (experimental) (GCC) $: clang-trunk -c -Woverflow imprecise-column-no-overflow.c imprecise-column-no-overflow.c:3:12: warning: implicit conversion from 'long' to 'short' changes value from 4294967295 to -1 [-Wconstant-conversion] return f(0xFFFFFFFFL, 0xFFFFFFFFL) && f(0xFFFFFFFFL, 0xFFFFFFFFL) ; ~ ^~~~~~~~~~~ imprecise-column-no-overflow.c:3:25: warning: implicit conversion from 'long' to 'short' changes value from 4294967295 to -1 [-Wconstant-conversion] return f(0xFFFFFFFFL, 0xFFFFFFFFL) && f(0xFFFFFFFFL, 0xFFFFFFFFL) ; ~ ^~~~~~~~~~~ imprecise-column-no-overflow.c:3:43: warning: implicit conversion from 'long' to 'short' changes value from 4294967295 to -1 [-Wconstant-conversion] return f(0xFFFFFFFFL, 0xFFFFFFFFL) && f(0xFFFFFFFFL, 0xFFFFFFFFL) ; ~ ^~~~~~~~~~~ imprecise-column-no-overflow.c:3:56: warning: implicit conversion from 'long' to 'short' changes value from 4294967295 to -1 [-Wconstant-conversion] return f(0xFFFFFFFFL, 0xFFFFFFFFL) && f(0xFFFFFFFFL, 0xFFFFFFFFL) ; ~ ^~~~~~~~~~~ 4 warnings generated.