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.

Reply via email to