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);
 	}
diff --git a/src/Reactor/Nucleus.hpp b/src/Reactor/Nucleus.hpp
index 2a6edf0..1a12b46 100644
--- a/src/Reactor/Nucleus.hpp
+++ b/src/Reactor/Nucleus.hpp
@@ -32,12 +32,12 @@
 {
 	class Value;
 	class Constant;
-	class BasicBlock;
 }
 
 namespace sw
 {
 	class Type;
+	class BasicBlock;
 
 	enum Optimization
 	{
@@ -71,10 +71,10 @@
 		Routine *acquireRoutine(const wchar_t *name, bool runOptimizations = true);
 
 		static llvm::Value *allocateStackVariable(Type *type, int arraySize = 0);
-		static llvm::BasicBlock *createBasicBlock();
-		static llvm::BasicBlock *getInsertBlock();
-		static void setInsertBlock(llvm::BasicBlock *basicBlock);
-		static llvm::BasicBlock *getPredecessor(llvm::BasicBlock *basicBlock);
+		static BasicBlock *createBasicBlock();
+		static BasicBlock *getInsertBlock();
+		static void setInsertBlock(BasicBlock *basicBlock);
+		static BasicBlock *getPredecessor(BasicBlock *basicBlock);
 
 		static void createFunction(Type *ReturnType, std::vector<Type*> &Params);
 		static llvm::Value *getArgument(unsigned int index);
@@ -82,8 +82,8 @@
 		// Terminators
 		static llvm::Value *createRetVoid();
 		static llvm::Value *createRet(llvm::Value *V);
-		static llvm::Value *createBr(llvm::BasicBlock *dest);
-		static llvm::Value *createCondBr(llvm::Value *cond, llvm::BasicBlock *ifTrue, llvm::BasicBlock *ifFalse);
+		static llvm::Value *createBr(BasicBlock *dest);
+		static llvm::Value *createCondBr(llvm::Value *cond, BasicBlock *ifTrue, BasicBlock *ifFalse);
 
 		// Binary operators
 		static llvm::Value *createAdd(llvm::Value *lhs, llvm::Value *rhs);
@@ -171,8 +171,8 @@
 
 		// Other instructions
 		static llvm::Value *createSelect(llvm::Value *C, llvm::Value *ifTrue, llvm::Value *ifFalse);
-		static llvm::Value *createSwitch(llvm::Value *V, llvm::BasicBlock *Dest, unsigned NumCases);
-		static void addSwitchCase(llvm::Value *Switch, int Case, llvm::BasicBlock *Branch);
+		static llvm::Value *createSwitch(llvm::Value *V, BasicBlock *Dest, unsigned NumCases);
+		static void addSwitchCase(llvm::Value *Switch, int Case, BasicBlock *Branch);
 		static llvm::Value *createUnreachable();
 
 		// Derived instructions
@@ -2451,9 +2451,9 @@
 //	RValue<Array<T>> operator--(const Array<T> &val, int);   // Post-decrement
 //	const Array<T> &operator--(const Array<T> &val);   // Pre-decrement
 
-	llvm::BasicBlock *beginLoop();
-	bool branch(RValue<Bool> cmp, llvm::BasicBlock *bodyBB, llvm::BasicBlock *endBB);
-	bool elseBlock(llvm::BasicBlock *falseBB);
+	BasicBlock *beginLoop();
+	bool branch(RValue<Bool> cmp, BasicBlock *bodyBB, BasicBlock *endBB);
+	bool elseBlock(BasicBlock *falseBB);
 
 	void Return();
 	void Return(bool ret);
diff --git a/src/Reactor/Reactor.hpp b/src/Reactor/Reactor.hpp
index 261d7ec..04d844f 100644
--- a/src/Reactor/Reactor.hpp
+++ b/src/Reactor/Reactor.hpp
@@ -19,7 +19,7 @@
 {
 	#define For(init, cond, inc)                     \
 	init;                                            \
-	for(llvm::BasicBlock *loopBB__ = beginLoop(),    \
+	for(BasicBlock *loopBB__ = beginLoop(),    \
 		*bodyBB__ = Nucleus::createBasicBlock(),        \
 		*endBB__ = Nucleus::createBasicBlock(),         \
 		*onceBB__ = endBB__;                         \
@@ -30,18 +30,18 @@
 
 	#define Do \
 	{ \
-		llvm::BasicBlock *body = Nucleus::createBasicBlock(); \
+		BasicBlock *body = Nucleus::createBasicBlock(); \
 		Nucleus::createBr(body); \
 		Nucleus::setInsertBlock(body);
 
 	#define Until(cond) \
-		llvm::BasicBlock *end = Nucleus::createBasicBlock(); \
+		BasicBlock *end = Nucleus::createBasicBlock(); \
 		Nucleus::createCondBr((cond).value, end, body); \
 		Nucleus::setInsertBlock(end); \
 	}
 
 	#define If(cond)                                                              \
-	for(llvm::BasicBlock *trueBB__ = Nucleus::createBasicBlock(), \
+	for(BasicBlock *trueBB__ = Nucleus::createBasicBlock(), \
 		*falseBB__ = Nucleus::createBasicBlock(),                 \
 		*endBB__ = Nucleus::createBasicBlock(),                   \
 		*onceBB__ = endBB__;                                   \
@@ -49,7 +49,7 @@
 		onceBB__ = 0, Nucleus::createBr(endBB__), Nucleus::setInsertBlock(falseBB__), Nucleus::createBr(endBB__), Nucleus::setInsertBlock(endBB__))
 
 	#define Else                                            \
-	for(llvm::BasicBlock *endBB__ = Nucleus::getInsertBlock(), \
+	for(BasicBlock *endBB__ = Nucleus::getInsertBlock(), \
 		*falseBB__ = Nucleus::getPredecessor(endBB__),         \
 		*onceBB__ = endBB__;                                \
 		onceBB__ && elseBlock(falseBB__);                   \
diff --git a/src/Shader/PixelProgram.cpp b/src/Shader/PixelProgram.cpp
index a68e657..e8fd1ed 100644
--- a/src/Shader/PixelProgram.cpp
+++ b/src/Shader/PixelProgram.cpp
@@ -1238,8 +1238,8 @@
 
 	void PixelProgram::BREAK()
 	{
-		llvm::BasicBlock *deadBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *endBlock = loopRepEndBlock[loopRepDepth - 1];
+		BasicBlock *deadBlock = Nucleus::createBasicBlock();
+		BasicBlock *endBlock = loopRepEndBlock[loopRepDepth - 1];
 
 		if(breakDepth == 0)
 		{
@@ -1294,8 +1294,8 @@
 	{
 		condition &= enableStack[enableIndex];
 
-		llvm::BasicBlock *continueBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *endBlock = loopRepEndBlock[loopRepDepth - 1];
+		BasicBlock *continueBlock = Nucleus::createBasicBlock();
+		BasicBlock *endBlock = loopRepEndBlock[loopRepDepth - 1];
 
 		enableBreak = enableBreak & ~condition;
 		Bool allBreak = SignMask(enableBreak) == 0x0;
@@ -1414,8 +1414,8 @@
 	{
 		ifDepth--;
 
-		llvm::BasicBlock *falseBlock = ifFalseBlock[ifDepth];
-		llvm::BasicBlock *endBlock = Nucleus::createBasicBlock();
+		BasicBlock *falseBlock = ifFalseBlock[ifDepth];
+		BasicBlock *endBlock = Nucleus::createBasicBlock();
 
 		if(isConditionalIf[ifDepth])
 		{
@@ -1441,7 +1441,7 @@
 	{
 		ifDepth--;
 
-		llvm::BasicBlock *endBlock = ifFalseBlock[ifDepth];
+		BasicBlock *endBlock = ifFalseBlock[ifDepth];
 
 		Nucleus::createBr(endBlock);
 		Nucleus::setInsertBlock(endBlock);
@@ -1459,8 +1459,8 @@
 
 		aL[loopDepth] = aL[loopDepth] + increment[loopDepth];   // FIXME: +=
 
-		llvm::BasicBlock *testBlock = loopRepTestBlock[loopRepDepth];
-		llvm::BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
+		BasicBlock *testBlock = loopRepTestBlock[loopRepDepth];
+		BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
 
 		Nucleus::createBr(testBlock);
 		Nucleus::setInsertBlock(endBlock);
@@ -1473,8 +1473,8 @@
 	{
 		loopRepDepth--;
 
-		llvm::BasicBlock *testBlock = loopRepTestBlock[loopRepDepth];
-		llvm::BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
+		BasicBlock *testBlock = loopRepTestBlock[loopRepDepth];
+		BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
 
 		Nucleus::createBr(testBlock);
 		Nucleus::setInsertBlock(endBlock);
@@ -1487,8 +1487,8 @@
 	{
 		loopRepDepth--;
 
-		llvm::BasicBlock *testBlock = loopRepTestBlock[loopRepDepth];
-		llvm::BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
+		BasicBlock *testBlock = loopRepTestBlock[loopRepDepth];
+		BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
 
 		Nucleus::createBr(testBlock);
 		Nucleus::setInsertBlock(endBlock);
@@ -1502,7 +1502,7 @@
 	{
 		loopRepDepth--;
 
-		llvm::BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
+		BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
 
 		Nucleus::createBr(loopRepEndBlock[loopRepDepth]);
 		Nucleus::setInsertBlock(endBlock);
@@ -1539,8 +1539,8 @@
 			condition = !condition;
 		}
 
-		llvm::BasicBlock *trueBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *falseBlock = Nucleus::createBasicBlock();
+		BasicBlock *trueBlock = Nucleus::createBasicBlock();
+		BasicBlock *falseBlock = Nucleus::createBasicBlock();
 
 		branch(condition, trueBlock, falseBlock);
 
@@ -1588,8 +1588,8 @@
 		enableIndex++;
 		enableStack[enableIndex] = condition;
 
-		llvm::BasicBlock *trueBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *falseBlock = Nucleus::createBasicBlock();
+		BasicBlock *trueBlock = Nucleus::createBasicBlock();
+		BasicBlock *falseBlock = Nucleus::createBasicBlock();
 
 		Bool notAllFalse = SignMask(condition) != 0;
 
@@ -1626,9 +1626,9 @@
 		//		increment[loopDepth] = 1;
 		//	}
 
-		llvm::BasicBlock *loopBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *testBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *endBlock = Nucleus::createBasicBlock();
+		BasicBlock *loopBlock = Nucleus::createBasicBlock();
+		BasicBlock *testBlock = Nucleus::createBasicBlock();
+		BasicBlock *endBlock = Nucleus::createBasicBlock();
 
 		loopRepTestBlock[loopRepDepth] = testBlock;
 		loopRepEndBlock[loopRepDepth] = endBlock;
@@ -1653,9 +1653,9 @@
 		iteration[loopDepth] = *Pointer<Int>(data + OFFSET(DrawData, ps.i[integerRegister.index][0]));
 		aL[loopDepth] = aL[loopDepth - 1];
 
-		llvm::BasicBlock *loopBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *testBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *endBlock = Nucleus::createBasicBlock();
+		BasicBlock *loopBlock = Nucleus::createBasicBlock();
+		BasicBlock *testBlock = Nucleus::createBasicBlock();
+		BasicBlock *endBlock = Nucleus::createBasicBlock();
 
 		loopRepTestBlock[loopRepDepth] = testBlock;
 		loopRepEndBlock[loopRepDepth] = endBlock;
@@ -1677,9 +1677,9 @@
 	{
 		enableIndex++;
 
-		llvm::BasicBlock *loopBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *testBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *endBlock = Nucleus::createBasicBlock();
+		BasicBlock *loopBlock = Nucleus::createBasicBlock();
+		BasicBlock *testBlock = Nucleus::createBasicBlock();
+		BasicBlock *endBlock = Nucleus::createBasicBlock();
 
 		loopRepTestBlock[loopRepDepth] = testBlock;
 		loopRepEndBlock[loopRepDepth] = endBlock;
@@ -1715,7 +1715,7 @@
 		enableIndex++;
 		enableStack[enableIndex] = Int4(0xFFFFFFFF);
 
-		llvm::BasicBlock *endBlock = Nucleus::createBasicBlock();
+		BasicBlock *endBlock = Nucleus::createBasicBlock();
 
 		loopRepTestBlock[loopRepDepth] = nullptr;
 		loopRepEndBlock[loopRepDepth] = endBlock;
@@ -1733,7 +1733,7 @@
 		}
 		else
 		{
-			llvm::BasicBlock *unreachableBlock = Nucleus::createBasicBlock();
+			BasicBlock *unreachableBlock = Nucleus::createBasicBlock();
 
 			if(callRetBlock[currentLabel].size() > 1)   // Pop the return destination from the call stack
 			{
diff --git a/src/Shader/PixelProgram.hpp b/src/Shader/PixelProgram.hpp
index 965be33..b15177a 100644
--- a/src/Shader/PixelProgram.hpp
+++ b/src/Shader/PixelProgram.hpp
@@ -156,13 +156,12 @@
 		int currentLabel;
 		bool whileTest;
 
-		// FIXME: Get rid of llvm::
-		llvm::BasicBlock *ifFalseBlock[24 + 24];
-		llvm::BasicBlock *loopRepTestBlock[4];
-		llvm::BasicBlock *loopRepEndBlock[4];
-		llvm::BasicBlock *labelBlock[2048];
-		std::vector<llvm::BasicBlock*> callRetBlock[2048];
-		llvm::BasicBlock *returnBlock;
+		BasicBlock *ifFalseBlock[24 + 24];
+		BasicBlock *loopRepTestBlock[4];
+		BasicBlock *loopRepEndBlock[4];
+		BasicBlock *labelBlock[2048];
+		std::vector<BasicBlock*> callRetBlock[2048];
+		BasicBlock *returnBlock;
 		bool isConditionalIf[24 + 24];
 	};
 }
diff --git a/src/Shader/VertexProgram.cpp b/src/Shader/VertexProgram.cpp
index 8e1d662..ba2c79e 100644
--- a/src/Shader/VertexProgram.cpp
+++ b/src/Shader/VertexProgram.cpp
@@ -999,8 +999,8 @@
 
 	void VertexProgram::BREAK()
 	{
-		llvm::BasicBlock *deadBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *endBlock = loopRepEndBlock[loopRepDepth - 1];
+		BasicBlock *deadBlock = Nucleus::createBasicBlock();
+		BasicBlock *endBlock = loopRepEndBlock[loopRepDepth - 1];
 
 		if(breakDepth == 0)
 		{
@@ -1055,8 +1055,8 @@
 	{
 		condition &= enableStack[enableIndex];
 
-		llvm::BasicBlock *continueBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *endBlock = loopRepEndBlock[loopRepDepth - 1];
+		BasicBlock *continueBlock = Nucleus::createBasicBlock();
+		BasicBlock *endBlock = loopRepEndBlock[loopRepDepth - 1];
 
 		enableBreak = enableBreak & ~condition;
 		Bool allBreak = SignMask(enableBreak) == 0x0;
@@ -1175,8 +1175,8 @@
 	{
 		ifDepth--;
 
-		llvm::BasicBlock *falseBlock = ifFalseBlock[ifDepth];
-		llvm::BasicBlock *endBlock = Nucleus::createBasicBlock();
+		BasicBlock *falseBlock = ifFalseBlock[ifDepth];
+		BasicBlock *endBlock = Nucleus::createBasicBlock();
 
 		if(isConditionalIf[ifDepth])
 		{
@@ -1202,7 +1202,7 @@
 	{
 		ifDepth--;
 
-		llvm::BasicBlock *endBlock = ifFalseBlock[ifDepth];
+		BasicBlock *endBlock = ifFalseBlock[ifDepth];
 
 		Nucleus::createBr(endBlock);
 		Nucleus::setInsertBlock(endBlock);
@@ -1220,8 +1220,8 @@
 
 		aL[loopDepth] = aL[loopDepth] + increment[loopDepth];   // FIXME: +=
 
-		llvm::BasicBlock *testBlock = loopRepTestBlock[loopRepDepth];
-		llvm::BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
+		BasicBlock *testBlock = loopRepTestBlock[loopRepDepth];
+		BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
 
 		Nucleus::createBr(testBlock);
 		Nucleus::setInsertBlock(endBlock);
@@ -1234,8 +1234,8 @@
 	{
 		loopRepDepth--;
 
-		llvm::BasicBlock *testBlock = loopRepTestBlock[loopRepDepth];
-		llvm::BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
+		BasicBlock *testBlock = loopRepTestBlock[loopRepDepth];
+		BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
 
 		Nucleus::createBr(testBlock);
 		Nucleus::setInsertBlock(endBlock);
@@ -1248,8 +1248,8 @@
 	{
 		loopRepDepth--;
 
-		llvm::BasicBlock *testBlock = loopRepTestBlock[loopRepDepth];
-		llvm::BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
+		BasicBlock *testBlock = loopRepTestBlock[loopRepDepth];
+		BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
 
 		Nucleus::createBr(testBlock);
 		Nucleus::setInsertBlock(endBlock);
@@ -1263,7 +1263,7 @@
 	{
 		loopRepDepth--;
 
-		llvm::BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
+		BasicBlock *endBlock = loopRepEndBlock[loopRepDepth];
 
 		Nucleus::createBr(loopRepEndBlock[loopRepDepth]);
 		Nucleus::setInsertBlock(endBlock);
@@ -1300,8 +1300,8 @@
 			condition = !condition;
 		}
 
-		llvm::BasicBlock *trueBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *falseBlock = Nucleus::createBasicBlock();
+		BasicBlock *trueBlock = Nucleus::createBasicBlock();
+		BasicBlock *falseBlock = Nucleus::createBasicBlock();
 
 		branch(condition, trueBlock, falseBlock);
 
@@ -1349,8 +1349,8 @@
 		enableIndex++;
 		enableStack[enableIndex] = condition;
 
-		llvm::BasicBlock *trueBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *falseBlock = Nucleus::createBasicBlock();
+		BasicBlock *trueBlock = Nucleus::createBasicBlock();
+		BasicBlock *falseBlock = Nucleus::createBasicBlock();
 
 		Bool notAllFalse = SignMask(condition) != 0;
 
@@ -1388,9 +1388,9 @@
 			increment[loopDepth] = 1;
 		}
 
-		llvm::BasicBlock *loopBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *testBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *endBlock = Nucleus::createBasicBlock();
+		BasicBlock *loopBlock = Nucleus::createBasicBlock();
+		BasicBlock *testBlock = Nucleus::createBasicBlock();
+		BasicBlock *endBlock = Nucleus::createBasicBlock();
 
 		loopRepTestBlock[loopRepDepth] = testBlock;
 		loopRepEndBlock[loopRepDepth] = endBlock;
@@ -1415,9 +1415,9 @@
 		iteration[loopDepth] = *Pointer<Int>(data + OFFSET(DrawData,vs.i[integerRegister.index][0]));
 		aL[loopDepth] = aL[loopDepth - 1];
 
-		llvm::BasicBlock *loopBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *testBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *endBlock = Nucleus::createBasicBlock();
+		BasicBlock *loopBlock = Nucleus::createBasicBlock();
+		BasicBlock *testBlock = Nucleus::createBasicBlock();
+		BasicBlock *endBlock = Nucleus::createBasicBlock();
 
 		loopRepTestBlock[loopRepDepth] = testBlock;
 		loopRepEndBlock[loopRepDepth] = endBlock;
@@ -1439,9 +1439,9 @@
 	{
 		enableIndex++;
 
-		llvm::BasicBlock *loopBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *testBlock = Nucleus::createBasicBlock();
-		llvm::BasicBlock *endBlock = Nucleus::createBasicBlock();
+		BasicBlock *loopBlock = Nucleus::createBasicBlock();
+		BasicBlock *testBlock = Nucleus::createBasicBlock();
+		BasicBlock *endBlock = Nucleus::createBasicBlock();
 
 		loopRepTestBlock[loopRepDepth] = testBlock;
 		loopRepEndBlock[loopRepDepth] = endBlock;
@@ -1477,7 +1477,7 @@
 		enableIndex++;
 		enableStack[enableIndex] = Int4(0xFFFFFFFF);
 
-		llvm::BasicBlock *endBlock = Nucleus::createBasicBlock();
+		BasicBlock *endBlock = Nucleus::createBasicBlock();
 
 		loopRepTestBlock[loopRepDepth] = nullptr;
 		loopRepEndBlock[loopRepDepth] = endBlock;
@@ -1495,7 +1495,7 @@
 		}
 		else
 		{
-			llvm::BasicBlock *unreachableBlock = Nucleus::createBasicBlock();
+			BasicBlock *unreachableBlock = Nucleus::createBasicBlock();
 
 			if(callRetBlock[currentLabel].size() > 1)   // Pop the return destination from the call stack
 			{
diff --git a/src/Shader/VertexProgram.hpp b/src/Shader/VertexProgram.hpp
index 4d73fa9..bcf4a20 100644
--- a/src/Shader/VertexProgram.hpp
+++ b/src/Shader/VertexProgram.hpp
@@ -126,13 +126,12 @@
 		int currentLabel;
 		bool whileTest;
 
-		// FIXME: Get rid of llvm::
-		llvm::BasicBlock *ifFalseBlock[24 + 24];
-		llvm::BasicBlock *loopRepTestBlock[4];
-		llvm::BasicBlock *loopRepEndBlock[4];
-		llvm::BasicBlock *labelBlock[2048];
-		std::vector<llvm::BasicBlock*> callRetBlock[2048];
-		llvm::BasicBlock *returnBlock;
+		BasicBlock *ifFalseBlock[24 + 24];
+		BasicBlock *loopRepTestBlock[4];
+		BasicBlock *loopRepEndBlock[4];
+		BasicBlock *labelBlock[2048];
+		std::vector<BasicBlock*> callRetBlock[2048];
+		BasicBlock *returnBlock;
 		bool isConditionalIf[24 + 24];
 	};
 }