[PATCH] Constant fold llvm.expect(c, ...) -> c
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...
More information about the llvm-commits