http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50189
--- Comment #13 from rguenther at suse dot de <rguenther at suse dot de> 2011-10-12 14:15:56 UTC --- On Wed, 12 Oct 2011, pkoning at gcc dot gnu.org wrote: > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50189 > > --- Comment #12 from Paul Koning <pkoning at gcc dot gnu.org> 2011-10-12 > 14:04:30 UTC --- > You said "GCC treats types compatible when they have the same precision". > That's where the problem lies, because enums with -fstrict-enums have their > precision set to just enough bits to hold the range of values, rather than the > precision of the base integer type. So in the test case in question, the > variable's precision is 32 bits while the right hand side precision is 2 bits. Well. At least we lose the conversion then here: const unsigned int D.2189; position_t D.2188; <bb 2>: D.2189_2 = this_1(D)->m_timestamp; D.2188_3 = MIN_EXPR <D.2189_2, 3>; return D.2188_3; I'll look into that. Richard.