This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH RFC: Ensure TREE_TYPE (TYPE_MIN_VALUE (t)) == t


Richard Henderson <rth@redhat.com> writes:

> On Fri, Apr 27, 2007 at 10:56:30AM -0700, Ian Lance Taylor wrote:
> > VRP currently assumes that TREE_TYPE (TYPE_MIN_VALUE (t)) == t.
> 
> I'd say that this is a bug in the same way that any other
> direct type comparison is flawed.  I'd suggest that
> 
>   TYPE_MAIN_VARIANT (TREE_TYPE (TYPE_MIN_VALUE (t)))
>     == TYPE_MAIN_VARIANT (t)
> 
> is the correct test.  That certainly handles your typedef case.

Well, VRP never actually does the type comparison that I wrote.  The
real question is whether, given a NEGATE_EXPR applied to 'max', this
test is flawed:

    if (max != TYPE_MIN_VALUE (TREE_TYPE (max)))

Before the patch I just committed (but will revert if it seems wrong),
that test in VRP was unreliable for a typedef: because TREE_TYPE (max)
and TYPE_MIN_VALUE (TREE_TYPE (max)) were different, max and
TYPE_MIN_VALUE (...) could have the same value but not be ==.

Ian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]