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; | ^~~~~