https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110259
Bug ID: 110259 Summary: Wrong warning 'conversion to unsigned int' with enum and comma Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: roland.illig at gmx dot de Target Milestone: --- ~~~c enum e { e1, e2, }; int side_effect(void); enum e demo(_Bool, enum e); enum e demo(_Bool cond, enum e c1) { enum e var = cond ? c1 : ( side_effect(), e2 ); return var; } ~~~ gcc-12.2.0 gcc -O2 -Wconversion -c indent.c indent.c: In function ‘demo’: indent.c:16:22: warning: conversion to ‘unsigned int’ from ‘int’ may change the sign of the result [-Wsign-conversion] 16 | : | ^ Same result for -ansi, -std=c99, -std=c2x, as well as for GCC 10.4.0. Removing the 'side_effect(),' makes the warning disappear. The comma operator has the type of its right operand, therefore I don't see where the 'unsigned' might come from.