summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorTom Roeder <tmroeder@google.com>2014-06-05 19:29:43 +0000
committerTom Roeder <tmroeder@google.com>2014-06-05 19:29:43 +0000
commit5d0f7af3dc42d7bc843858317fba3bb91c44d68f (patch)
treec525924c6e517a0e74dc7c5329096c68c6a27a2f /docs
parent4db3ad47fc58e3cc2b8227b4e6ea0c126338463e (diff)
downloadllvm-5d0f7af3dc42d7bc843858317fba3bb91c44d68f.tar.gz
llvm-5d0f7af3dc42d7bc843858317fba3bb91c44d68f.tar.bz2
llvm-5d0f7af3dc42d7bc843858317fba3bb91c44d68f.tar.xz
Add a new attribute called 'jumptable' that creates jump-instruction tables for functions marked with this attribute.
It includes a pass that rewrites all indirect calls to jumptable functions to pass through these tables. This also adds backend support for generating the jump-instruction tables on ARM and X86. Note that since the jumptable attribute creates a second function pointer for a function, any function marked with jumptable must also be marked with unnamed_addr. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210280 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs')
-rw-r--r--docs/LangRef.rst8
1 files changed, 8 insertions, 0 deletions
diff --git a/docs/LangRef.rst b/docs/LangRef.rst
index d76fc0d3af..6beb9652ed 100644
--- a/docs/LangRef.rst
+++ b/docs/LangRef.rst
@@ -1020,6 +1020,14 @@ example:
inlining this function is desirable (such as the "inline" keyword in
C/C++). It is just a hint; it imposes no requirements on the
inliner.
+``jumptable``
+ This attribute indicates that the function should be added to a
+ jump-instruction table at code-generation time, and that all address-taken
+ references to this function should be replaced with a reference to the
+ appropriate jump-instruction-table function pointer. Note that this creates
+ a new pointer for the original function, which means that code that depends
+ on function-pointer identity can break. So, any function annotated with
+ ``jumptable`` must also be ``unnamed_addr``.
``minsize``
This attribute suggests that optimization passes and code generator
passes make choices that keep the code size of this function as small