https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82528
Bug ID: 82528 Summary: Warning for conversion from bool to enum Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: fw at gcc dot gnu.org Target Milestone: --- I think this program should emit a warning in C mode: #define TRUE ((_Bool) 1) #define FALSE ((_Bool) 0) typedef enum { a, b, c } result; result f (int flag) { if (flag) return TRUE; else return FALSE; } Likewise, this should warn as well: #include <stdbool.h> typedef enum { a, b, c } result; result f (int flag) { if (flag) return true; else return false; } This may require the definition of __true and __false as compiler built-ins, similar to what exists for NULL in the C++ front end, so that the compiler can keep up the fiction that true and false are the integer constants 1 and 0 (apparently, false is a valid NULL pointer constant, but warning about false where NULL could be used seems reasonable to me).