[PATCH] Constant fold llvm.expect(c, ...) -> c

Pete Cooper peter_cooper at apple.com
Mon Jan 26 11:54:38 PST 2015

> On Jan 26, 2015, at 11:32 AM, Chandler Carruth <chandlerc at google.com> wrote:
> On Mon, Jan 26, 2015 at 11:29 AM, Pete Cooper <peter_cooper at apple.com <mailto:peter_cooper at apple.com>> wrote:
> That would be nice.  I expect (ha!) that we’d do this in IRGen.  I might look in to this, although i’m not too familiar with clang.
> If you’re interested, i’ve worked out why I see this benefit at all in this patch.  I LTO my Debug LLVM.  This results in -O0 on the bitcode produced by LLVM, but then the linker LTO’s with optimizations enabled.  And because LTO doesn’t have LowerExpect in its pipeline, I see many cases of 'call i64 @llvm.expect.i64(i64 1, i64 1)’ in my IR.
> So, getting the front-end to generate metadata would certainly fix this.  As would calling LowerExpect in libLTO or in populateFunctionPassManager even when on -O0.  Or we could just say that a Debug LTO build should live with this issue, although I’d prefer one of the other options to this one.
> First problem: why are we generating these at -O0 at all? We should just turn that part of Clang off.
Sounds good.  Please see http://reviews.llvm.org/D7183
> Second problem: ... nope, no second problem. ;]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150126/6d72910d/attachment.html>

More information about the llvm-commits mailing list