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. Thanks Hongbin -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170425/6ddb8d7e/attachment.html>
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
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/20170425/1984620f/attachment.html>