Add a new function attribute, nonlazybind, which inhibits lazy-loading
authorJohn McCall <rjmccall@apple.com>
Wed, 15 Jun 2011 20:36:13 +0000 (20:36 +0000)
committerJohn McCall <rjmccall@apple.com>
Wed, 15 Jun 2011 20:36:13 +0000 (20:36 +0000)
commit3a3465b71db858723988f61d72b7135e6dff329b
tree591e6ae22b2beba1e9466c96cc891664e0904d3c
parente97c7da59d65bbbd5e0d67b3ef9d742794437e2f
Add a new function attribute, nonlazybind, which inhibits lazy-loading
optimizations when emitting calls to the function;  instead those calls may
use faster relocations which require the function to be immediately resolved
upon loading the dynamic object featuring the call.  This is useful when it
is known that the function will be called frequently and pervasively and
therefore there is no merit in delaying binding of the function.

Currently only implemented for x86-64, where it turns into a call through
the global offset table.

Patch by Dan Gohman, who assures me that he's going to add LangRef documentation
for this once it's committed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133080 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Attributes.h
lib/AsmParser/LLLexer.cpp
lib/AsmParser/LLParser.cpp
lib/AsmParser/LLToken.h
lib/Target/X86/X86ISelLowering.cpp
lib/VMCore/Attributes.cpp
test/CodeGen/X86/non-lazy-bind.ll [new file with mode: 0644]
test/Feature/paramattrs.ll
utils/llvm.grm