From 9515a8f88a597e78c32c797e4946ebf7648512c0 Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Wed, 4 Jun 2008 16:31:12 +0000 Subject: [PATCH] Add CallSite::hasArgument to allow for seeing if a call passes a certain value as an argument quickly. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51946 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/CallSite.h | 4 ++++ lib/VMCore/Instructions.cpp | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/include/llvm/Support/CallSite.h b/include/llvm/Support/CallSite.h index f118680d6fc..513269fb5f8 100644 --- a/include/llvm/Support/CallSite.h +++ b/include/llvm/Support/CallSite.h @@ -129,6 +129,10 @@ public: else I->setOperand(ArgNo+3, newVal); // Skip Function, BB, BB } + + /// hasArgument - Returns true if this CallSite passes the given Value* as an + /// argument to the called function. + bool hasArgument(Value *Arg); /// arg_iterator - The type of iterator to use when looping over actual /// arguments at this call site... diff --git a/lib/VMCore/Instructions.cpp b/lib/VMCore/Instructions.cpp index 3fb1c61b722..d78926742cf 100644 --- a/lib/VMCore/Instructions.cpp +++ b/lib/VMCore/Instructions.cpp @@ -91,6 +91,13 @@ void CallSite::setDoesNotThrow(bool doesNotThrow) { cast(I)->setDoesNotThrow(doesNotThrow); } +bool CallSite::hasArgument(Value *Arg) { + for (arg_iterator AI = this->arg_begin(), E = this->arg_end(); AI != E; ++AI) + if (AI->get() == Arg) + return true; + return false; +} + //===----------------------------------------------------------------------===// // TerminatorInst Class //===----------------------------------------------------------------------===//