[Bug c/63710] New: Incorrect column number for -Wconversion

chengniansun at gmail dot com gcc-bugzilla@gcc.gnu.org
Sun Nov 2 08:01:00 GMT 2014


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63710

            Bug ID: 63710
           Summary: Incorrect column number for -Wconversion
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: chengniansun at gmail dot com

The column information can be improved by pinpointing the exact location where
the conversion happens. Taking the following code as an example, in the
expression "unsigned long r1 = ul + l", the variable "l" of type char is
promoted to "unsigned long", so IMHO the warning should point at this variable
instead of the operator '+'. 

============================================
=========       Test Case     ==============
============================================
$: cat s.c
unsigned long f1(unsigned long ul, char l) {
  unsigned long r1 = ul + l;
  unsigned long r2 = l + ul;
  return r1 + r2;
}
$: 
$: gcc-trunk -c -Wconversion s.c
s.c: In function ‘f1’:
s.c:2:25: warning: conversion to ‘long unsigned int’ from ‘char’ may change the
sign of the result [-Wsign-conversion]
   unsigned long r1 = ul + l;
                         ^
s.c:3:24: warning: conversion to ‘long unsigned int’ from ‘char’ may change the
sign of the result [-Wsign-conversion]
   unsigned long r2 = l + ul;
                        ^
$: 
$: clang-trunk -c -Wconversion s.c
s.c:2:27: warning: implicit conversion changes signedness: 'char' to
      'unsigned long' [-Wsign-conversion]
  unsigned long r1 = ul + l;
                        ~ ^
s.c:3:22: warning: implicit conversion changes signedness: 'char' to
      'unsigned long' [-Wsign-conversion]
  unsigned long r2 = l + ul;
                     ^ ~
2 warnings generated.


More information about the Gcc-bugs mailing list