Don't return values from terminator instructions.
All LLVM instructions are LLVM values, but in the case of terminator
instructions their value is meaningless, and we don't use them.
Bug swiftshader:10
Change-Id: I9eb71e1dcea2614cb810021dfbf3c8908a7e2510
Reviewed-on: https://swiftshader-review.googlesource.com/7355
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/LLVMReactor.cpp b/src/Reactor/LLVMReactor.cpp
index fb1cf03..4069523 100644
--- a/src/Reactor/LLVMReactor.cpp
+++ b/src/Reactor/LLVMReactor.cpp
@@ -319,28 +319,28 @@
return V(&*args);
}
- Value *Nucleus::createRetVoid()
+ void Nucleus::createRetVoid()
{
x86::emms();
- return V(::builder->CreateRetVoid());
+ ::builder->CreateRetVoid();
}
- Value *Nucleus::createRet(Value *v)
+ void Nucleus::createRet(Value *v)
{
x86::emms();
- return V(::builder->CreateRet(v));
+ ::builder->CreateRet(v);
}
- Value *Nucleus::createBr(BasicBlock *dest)
+ void Nucleus::createBr(BasicBlock *dest)
{
- return V(::builder->CreateBr(dest));
+ ::builder->CreateBr(dest);
}
- Value *Nucleus::createCondBr(Value *cond, BasicBlock *ifTrue, BasicBlock *ifFalse)
+ void Nucleus::createCondBr(Value *cond, BasicBlock *ifTrue, BasicBlock *ifFalse)
{
- return V(::builder->CreateCondBr(cond, ifTrue, ifFalse));
+ ::builder->CreateCondBr(cond, ifTrue, ifFalse);
}
Value *Nucleus::createAdd(Value *lhs, Value *rhs)
@@ -683,9 +683,9 @@
reinterpret_cast<SwitchInst*>(Switch)->addCase(llvm::ConstantInt::get(Type::getInt32Ty(*::context), Case, true), Branch);
}
- Value *Nucleus::createUnreachable()
+ void Nucleus::createUnreachable()
{
- return V(::builder->CreateUnreachable());
+ ::builder->CreateUnreachable();
}
Value *Nucleus::createSwizzle(Value *val, unsigned char select)
diff --git a/src/Reactor/Nucleus.hpp b/src/Reactor/Nucleus.hpp
index 47cb195..9483465 100644
--- a/src/Reactor/Nucleus.hpp
+++ b/src/Reactor/Nucleus.hpp
@@ -64,10 +64,10 @@
static Value *getArgument(unsigned int index);
// Terminators
- static Value *createRetVoid();
- static Value *createRet(Value *V);
- static Value *createBr(BasicBlock *dest);
- static Value *createCondBr(Value *cond, BasicBlock *ifTrue, BasicBlock *ifFalse);
+ static void createRetVoid();
+ static void createRet(Value *V);
+ static void createBr(BasicBlock *dest);
+ static void createCondBr(Value *cond, BasicBlock *ifTrue, BasicBlock *ifFalse);
// Binary operators
static Value *createAdd(Value *lhs, Value *rhs);
@@ -150,7 +150,7 @@
static Value *createSelect(Value *C, Value *ifTrue, Value *ifFalse);
static Value *createSwitch(Value *V, BasicBlock *Dest, unsigned NumCases);
static void addSwitchCase(Value *Switch, int Case, BasicBlock *Branch);
- static Value *createUnreachable();
+ static void createUnreachable();
// Derived instructions
static Value *createSwizzle(Value *val, unsigned char select);