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

--- Comment #1 from Chengnian Sun <chengniansun at gmail dot com> ---
I find the following test case, which seems related to this bug. The locations
of both warnings point to the condition instead of the expressions which
require conversion. 


$: cat t.c
unsigned f(long l, char c) {
  return l ? l : c;
}
$: 
$: gcc-trunk -Wconversion t.c -c
t.c: In function ‘f’:
t.c:2:10: warning: conversion to ‘unsigned int’ from ‘char’ may change the sign
of the result [-Wsign-conversion]
   return l ? l : c;
          ^
t.c:2:10: warning: conversion to ‘unsigned int’ from ‘long int’ may alter its
value [-Wconversion]
$: 
$: 
$: clang-trunk -Wconversion t.c -c
t.c:2:18: warning: operand of ? changes signedness: 'char' to 'unsigned int'
[-Wsign-conversion]
  return l ? l : c;
  ~~~~~~         ^
t.c:2:14: warning: implicit conversion loses integer precision: 'long' to
'unsigned int' [-Wshorten-64-to-32]
  return l ? l : c;
  ~~~~~~     ^
2 warnings generated.

Reply via email to