Abstract llvm::BasicBlock usage.
Bug swiftshader:10
Change-Id: Ib45d459aa4f68e572b1deaa03e0aaf83002b7881
Reviewed-on: https://swiftshader-review.googlesource.com/7275
Tested-by: Nicolas Capens <capn@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <capn@google.com>
diff --git a/src/Reactor/Nucleus.cpp b/src/Reactor/Nucleus.cpp
index ab9a151..b1c1ac6 100644
--- a/src/Reactor/Nucleus.cpp
+++ b/src/Reactor/Nucleus.cpp
@@ -75,9 +75,8 @@
Optimization optimization[10] = {InstructionCombining, Disabled};
- class Type : public llvm::Type
- {
- };
+ class Type : public llvm::Type {};
+ class BasicBlock : public llvm::BasicBlock {};
inline Type *T(llvm::Type *t)
{
@@ -89,6 +88,11 @@
return reinterpret_cast<std::vector<llvm::Type*>&>(t);
}
+ inline BasicBlock *B(llvm::BasicBlock *t)
+ {
+ return reinterpret_cast<BasicBlock*>(t);
+ }
+
Nucleus::Nucleus()
{
codegenMutex.lock(); // Reactor and LLVM are currently not thread safe
@@ -240,7 +244,7 @@
Value *Nucleus::allocateStackVariable(Type *type, int arraySize)
{
// Need to allocate it in the entry block for mem2reg to work
- BasicBlock &entryBlock = ::function->getEntryBlock();
+ llvm::BasicBlock &entryBlock = ::function->getEntryBlock();
Instruction *declaration;
@@ -260,12 +264,12 @@
BasicBlock *Nucleus::createBasicBlock()
{
- return BasicBlock::Create(*::context, "", ::function);
+ return B(BasicBlock::Create(*::context, "", ::function));
}
BasicBlock *Nucleus::getInsertBlock()
{
- return ::builder->GetInsertBlock();
+ return B(::builder->GetInsertBlock());
}
void Nucleus::setInsertBlock(BasicBlock *basicBlock)
@@ -276,7 +280,7 @@
BasicBlock *Nucleus::getPredecessor(BasicBlock *basicBlock)
{
- return *pred_begin(basicBlock);
+ return B(*pred_begin(basicBlock));
}
void Nucleus::createFunction(Type *ReturnType, std::vector<Type*> &Params)
@@ -680,12 +684,12 @@
return ::builder->CreateSelect(C, ifTrue, ifFalse);
}
- Value *Nucleus::createSwitch(llvm::Value *V, llvm::BasicBlock *Dest, unsigned NumCases)
+ Value *Nucleus::createSwitch(llvm::Value *V, BasicBlock *Dest, unsigned NumCases)
{
return ::builder->CreateSwitch(V, Dest, NumCases);
}
- void Nucleus::addSwitchCase(llvm::Value *Switch, int Case, llvm::BasicBlock *Branch)
+ void Nucleus::addSwitchCase(llvm::Value *Switch, int Case, BasicBlock *Branch)
{
static_cast<SwitchInst*>(Switch)->addCase(llvm::ConstantInt::get(Type::getInt32Ty(*::context), Case, true), Branch);
}