From 36bbc8ce98b4d0dd4fb0b5d42b3aec032da21a7f Mon Sep 17 00:00:00 2001 From: Matthew Simpson Date: Mon, 16 Oct 2017 22:22:11 +0000 Subject: 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 --- llvm/lib/IR/MDBuilder.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'llvm/lib/IR/MDBuilder.cpp') 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 Callees) { + SmallVector 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); -- cgit v1.2.3