diff options
Diffstat (limited to 'include/llvm/Support/CallSite.h')
-rw-r--r-- | include/llvm/Support/CallSite.h | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/include/llvm/Support/CallSite.h b/include/llvm/Support/CallSite.h index 7667ba03e3..0650b61fbc 100644 --- a/include/llvm/Support/CallSite.h +++ b/include/llvm/Support/CallSite.h @@ -255,21 +255,27 @@ public: private: /// Returns the operand number of the first argument unsigned getArgumentOffset() const { + if (isCall()) + return 1; // Skip Function (ATM) + else return 0; // Args are at the front } unsigned getArgumentEndOffset() const { if (isCall()) - return 1; // Skip Function + return 0; // Unchanged (ATM) else return 3; // Skip BB, BB, Function } IterTy getCallee() const { - // FIXME: this is slow, since we do not have the fast versions - // of the op_*() functions here. See CallSite::getCallee. - // - return arg_end(); + // FIXME: this is slow, since we do not have the fast versions + // of the op_*() functions here. See CallSite::getCallee. + // + if (isCall()) + return getInstruction()->op_begin(); // Unchanged (ATM) + else + return getInstruction()->op_end() - 3; // Skip BB, BB, Function } }; |