diff options
author | Chris Lattner <sabre@nondot.org> | 2009-12-28 21:50:56 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-12-28 21:50:56 +0000 |
commit | 2ad32752b9a880902550c7c47f1b9ca175ee851c (patch) | |
tree | 8ae32a2bbb160b879a7eed610193112aa2b5b7b9 | |
parent | 43469b6957140898709382082ef95dd4b77ac20a (diff) |
remove #include of Function.h from IRBuilder
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92231 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Support/IRBuilder.h | 13 | ||||
-rw-r--r-- | lib/VMCore/IRBuilder.cpp | 6 |
2 files changed, 14 insertions, 5 deletions
diff --git a/include/llvm/Support/IRBuilder.h b/include/llvm/Support/IRBuilder.h index a89d5a6ea2..7f744d618d 100644 --- a/include/llvm/Support/IRBuilder.h +++ b/include/llvm/Support/IRBuilder.h @@ -17,7 +17,7 @@ #include "llvm/Constants.h" #include "llvm/Instructions.h" -#include "llvm/Function.h" +#include "llvm/BasicBlock.h" #include "llvm/ADT/Twine.h" #include "llvm/Support/ConstantFolder.h" @@ -143,6 +143,10 @@ public: const Type *getVoidTy() { return Type::getVoidTy(Context); } + + /// getCurrentFunctionReturnType - Get the return type of the current function + /// that we're emitting into. + const Type *getCurrentFunctionReturnType() const; }; /// IRBuilder - This provides a uniform API for creating instructions and @@ -221,7 +225,7 @@ public: ReturnInst *CreateRet(Value *V) { return Insert(ReturnInst::Create(Context, V)); } - + /// CreateAggregateRet - Create a sequence of N insertvalue instructions, /// with one Value from the retVals array each, that build a aggregate /// return value one value at a time, and a ret instruction to return @@ -229,9 +233,8 @@ public: /// code that uses aggregate return values as a vehicle for having /// multiple return values. /// - ReturnInst *CreateAggregateRet(Value * const* retVals, unsigned N) { - const Type *RetType = BB->getParent()->getReturnType(); - Value *V = UndefValue::get(RetType); + ReturnInst *CreateAggregateRet(Value *const *retVals, unsigned N) { + Value *V = UndefValue::get(getCurrentFunctionReturnType()); for (unsigned i = 0; i != N; ++i) V = CreateInsertValue(V, retVals[i], i, "mrv"); return Insert(ReturnInst::Create(Context, V)); diff --git a/lib/VMCore/IRBuilder.cpp b/lib/VMCore/IRBuilder.cpp index 99803f134f..0b4a10925a 100644 --- a/lib/VMCore/IRBuilder.cpp +++ b/lib/VMCore/IRBuilder.cpp @@ -14,6 +14,7 @@ #include "llvm/Support/IRBuilder.h" #include "llvm/GlobalVariable.h" +#include "llvm/Function.h" #include "llvm/Metadata.h" #include "llvm/LLVMContext.h" using namespace llvm; @@ -44,3 +45,8 @@ void IRBuilderBase::SetInstDebugLocation(Instruction *I) const { if (CurDbgLocation) Context.getMetadata().addMD(DbgMDKind, CurDbgLocation, I); } + +const Type *IRBuilderBase::getCurrentFunctionReturnType() const { + assert(BB && BB->getParent() && "No current function!"); + return BB->getParent()->getReturnType(); +} |