[llvm-dev] TryToShrinkGlobalToBoolean in GlobalOpt.cpp issue

Ryan Taylor via llvm-dev llvm-dev at lists.llvm.org
Tue Aug 30 14:43:30 PDT 2016


Thanks Chris.

-Ryan

On Tue, Aug 30, 2016 at 5:19 PM, Chris Lattner <clattner at apple.com> wrote:

> On Aug 30, 2016, at 1:01 PM, Ryan Taylor via llvm-dev <
> llvm-dev at lists.llvm.org> wrote:
> >
> > Given some code:
> >
> > static int x = 100;
> >
> > int main() {
> >    x = 101;
> >    printf("%d\n", x);
> > }
> >
> > results in:
> >
> > %0 = load i1
> > %1 = select %0, 101, 100
> > ...
> > ...
> >
> > 1) What architecture(s) does this benefit?
>
> Probably none of them.
>
> The intent of this (very very old) optimization is to expose more value
> information to the mid-level optimizer, which enables secondary
> simplification.  If this simplification doesn’t happen, then this is
> probably almost always a loss.
>
> A better way to handle this is for GlobalOpt.cpp to tag the loads with the
> “new” range metadata: http://llvm.org/docs/LangRef.html#range-metadata
>
> In addition to this not pessimizing code, this would allow the analysis to
> be more general: instead of identifying 1 or 2 constants, it could be
> generalized to N ranges.
>
> -Chris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160830/107efa5f/attachment.html>


More information about the llvm-dev mailing list