diff options
| author | Matthew Simpson <mssimpso@codeaurora.org> | 2017-10-16 22:22:11 +0000 |
|---|---|---|
| committer | Matthew Simpson <mssimpso@codeaurora.org> | 2017-10-16 22:22:11 +0000 |
| commit | 36bbc8ce98b4d0dd4fb0b5d42b3aec032da21a7f (patch) | |
| tree | ef5f3b335d9ddac186437659e43d8bddecf9082e /llvm/lib/IR | |
| parent | b0c9e0d647672f7b6c4f7e01f1b93dedfca7ed1c (diff) | |
| download | bcm5719-llvm-36bbc8ce98b4d0dd4fb0b5d42b3aec032da21a7f.tar.gz bcm5719-llvm-36bbc8ce98b4d0dd4fb0b5d42b3aec032da21a7f.zip | |
Add !callees metadata
This patch adds a new kind of metadata that indicates the possible callees of
indirect calls.
Differential Revision: https://reviews.llvm.org/D37354
llvm-svn: 315944
Diffstat (limited to 'llvm/lib/IR')
| -rw-r--r-- | llvm/lib/IR/LLVMContext.cpp | 1 | ||||
| -rw-r--r-- | llvm/lib/IR/MDBuilder.cpp | 8 |
2 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/IR/LLVMContext.cpp b/llvm/lib/IR/LLVMContext.cpp index 455ffb5ea62..a94da5452b8 100644 --- a/llvm/lib/IR/LLVMContext.cpp +++ b/llvm/lib/IR/LLVMContext.cpp @@ -59,6 +59,7 @@ LLVMContext::LLVMContext() : pImpl(new LLVMContextImpl(*this)) { {MD_section_prefix, "section_prefix"}, {MD_absolute_symbol, "absolute_symbol"}, {MD_associated, "associated"}, + {MD_callees, "callees"}, }; for (auto &MDKind : MDKinds) { diff --git a/llvm/lib/IR/MDBuilder.cpp b/llvm/lib/IR/MDBuilder.cpp index 84bad318591..54783e884e9 100644 --- a/llvm/lib/IR/MDBuilder.cpp +++ b/llvm/lib/IR/MDBuilder.cpp @@ -14,6 +14,7 @@ #include "llvm/IR/MDBuilder.h" #include "llvm/IR/Constants.h" +#include "llvm/IR/Function.h" #include "llvm/IR/Metadata.h" using namespace llvm; @@ -95,6 +96,13 @@ MDNode *MDBuilder::createRange(Constant *Lo, Constant *Hi) { return MDNode::get(Context, {createConstant(Lo), createConstant(Hi)}); } +MDNode *MDBuilder::createCallees(ArrayRef<Function *> Callees) { + SmallVector<Metadata *, 4> Ops; + for (Function *F : Callees) + Ops.push_back(createConstant(F)); + return MDNode::get(Context, Ops); +} + MDNode *MDBuilder::createAnonymousAARoot(StringRef Name, MDNode *Extra) { // To ensure uniqueness the root node is self-referential. auto Dummy = MDNode::getTemporary(Context, None); |

