[LLVMdev] Safe loads

Eli Friedman eli.friedman at gmail.com
Tue Jan 24 12:56:43 PST 2012


On Mon, Jan 23, 2012 at 4:22 AM, Roman Leshchinskiy <rl at cse.unsw.edu.au> wrote:
> Hello,
>
> For the Glasgow Haskell Compiler's backend, we would like to let LLVM know
> that certain loads are safe to execute speculatively and hence to hoist
> out of loops. At the moment, there doesn't seem to be a mechanism for
> doing so. There seem to be two ways of implementing this: either allow
> arbitrary instructions to be marked as safe and have
> Instruction::isSafeToSpeculativelyExecute return true for those or mark
> memory regions and extend Value::isDereferenceablePointer to return true
> for those. Is either of these a good idea? Or is there some other way to
> do this? FWIW, I quickly prototyped instruction marking using metadata and
> that seemed to work well enough for us.

BTW, we already have metadata for marking a load as invariant; see
http://llvm.org/docs/LangRef.html#tbaa .

-Eli



More information about the llvm-dev mailing list