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

            Bug ID: 95892
           Summary: Wrong line number in "-Wsign-conversion" warning
                    message
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: haoxintu at gmail dot com
                CC: mpolacek at gcc dot gnu.org
  Target Milestone: ---

This code, bug.cc, GCC might give the wrong line number in -Wsign-conversion
warning message.

$cat bug.cc
unsigned int var = 10;
void foo ( 
    int a = var, 
    int b = var,
    int c = var )   
{    }

$g++ -c -Wsign-conversion bug.cc 
bug.cc:5:17: warning: conversion to 'int' from 'unsigned int' may change the
sign of the result [-Wsign-conversion]
    5 |     int c = var )
      |                 ^
bug.cc:5:17: warning: conversion to 'int' from 'unsigned int' may change the
sign of the result [-Wsign-conversion]
bug.cc:5:17: warning: conversion to 'int' from 'unsigned int' may change the
sign of the result [-Wsign-conversion]

While in clang
$clang++ -c -Wsign-conversion bug.cc 
bug.cc:3:13: warning: implicit conversion changes signedness: 'unsigned int' to
'int' [-Wsign-conversion]
    int a = var, 
          ~ ^~~
bug.cc:4:13: warning: implicit conversion changes signedness: 'unsigned int' to
'int' [-Wsign-conversion]
    int b = var,
          ~ ^~~
bug.cc:5:13: warning: implicit conversion changes signedness: 'unsigned int' to
'int' [-Wsign-conversion]
    int c = var )   
          ~ ^~~
3 warnings generated.

My GCC version is
$g++ --version
g++ (GCC) 11.0.0 20200605 (experimental)
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Reply via email to