http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59939
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Chengnian Sun from comment #3) > (In reply to Andrew Pinski from comment #1) > > IIRC this was done so that code which uses macros and have conditional code > > like: > > > > MACRO1 || fn1(a, b) > > Sorry, I do not understand. Can you elaborate more? Why it is related to > macros > and what is the rational behind this design. Lets say 1 was really MACRO1 defined by: #define MACRO1 0 or #define MACRO1 1 and you have some typedefs which And then you use that macro below and you get the warning.