https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104616
Bug ID: 104616
Summary: -Wconversion diagnostic on operator `/` with short
ints, only when -fsanitize=undefined is passed
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: oschonrock at gmail dot com
Target Milestone: ---
`-fsanitize=undefined` should not affect -Wconversion behaviour. The behaviour
without -fsanitize=undefined is correct I believe.
https://godbolt.org/z/5663eajW1
int main() {
short sum = 50;
short count = 10;
short avg1 = sum / count;
auto tmp = sum;
tmp /= count;
short avg2 = tmp;
return (avg1 + avg2) & 0xff; // prevent "unused" diagnostics
}
g++ -Wconversion
=> no diagnostics
g++ -fsanitize=undefined -Wconversion
<source>: In function 'int main()':
<source>:5:22: warning: conversion from 'int' to 'short int' may change value
[-Wconversion]
5 | short avg1 = sum / count;
| ~~~~^~~~~~~
<source>:8:12: warning: conversion from 'int' to 'short int' may change value
[-Wconversion]
8 | tmp /= count;
| ^~~~~