This is the mail archive of the gcc-bugs@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]

[Bug tree-optimization/30911] VRP fails to eliminate range checks in Ada code



------- Comment #50 from baldrick at free dot fr  2008-03-28 22:42 -------
Subject: Re:  VRP fails to eliminate range checks in Ada code

>   T' sub;
>   T  x;
> 
>   x = sub;      (1)
>   sub = (T')x;  (2)
>   x = VIEW_CONVERT_EXPR <T>(sub);  (3)
> 
> where VRP for the simple copy (1) does not restrict x value range based
> on the T's TYPE_MIN/MAX_VALUE (but it should).  For (2) the same is
> true (though the conversion is _not_ truncating for out of bound values,
> so I am not sure if this doesn't break something).

Ada never does (2) unless the value of x is in the range of sub, so this
should be ok for assignments coming straight out of the Ada f-e.  It might
be that fold, for example, generates problematic versions of (2) however.
I have no idea if this can happen.

> I don't know if this is really the best setup to optimize Ada range checks,

It seems reasonable.  Only using range info for function arguments would
side-step the fold-doesn't-use-base-types problem though.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30911


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