[llvm-dev] Store unswitch

Hongbin Zheng via llvm-dev llvm-dev at lists.llvm.org
Wed Apr 26 00:19:06 PDT 2017


Looks like this do not work:

// Type your code here, or load an example.
int a[10];

void unswitch2(int i, int x, int y0, int y1) {
  if (x) {
    a[i] = y0;
    a[i + 1] = y1;
  } else {
    a[i + 1] = y0;
    a[i] = y1;
  }
}

https://godbolt.org/g/Ldd5qV

On Tue, Apr 25, 2017 at 10:22 PM, Hongbin Zheng <etherzhhb at gmail.com> wrote:

> Thanks,
>
> Looks like inst combine do the job
>
> On Tue, Apr 25, 2017 at 9:36 PM, Davide Italiano <davide at freebsd.org>
> wrote:
>
>> On Tue, Apr 25, 2017 at 9:24 PM, Hongbin Zheng via llvm-dev
>> <llvm-dev at lists.llvm.org> wrote:
>> > Hi,
>> >
>> > Is there a pass in LLVM that can optimize:
>> >
>> > if (x)
>> >   a[i] = y0;
>> > else
>> >   a[i] = y1;
>> >
>> > to
>> >
>> > a[i] = x ? y0 : y1?
>> >
>> > I tried opt (3.9) with -O3 but looks like such an optimization do not
>> > happened.
>> >
>>
>> The same IR at -O3 for both cases on this example.
>> https://godbolt.org/g/Tk2MM8
>>
>> --
>> Davide
>>
>> "There are no solved problems; there are only problems that are more
>> or less solved" -- Henri Poincare
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170426/549f8ee2/attachment.html>


More information about the llvm-dev mailing list