Commit bec21fe9 by Ben Clayton

Reactor: Do not start the unreachable block with Unreachable

The LLVM Unreachable instruction is a terminator instruction. It is illegal to place any instructions after this in the same block. Bug: b/131914569 Change-Id: I6dd4ca4f8ca911dc94ba5674db598078060ef795 Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/30453Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com> Kokoro-Presubmit: kokoro <noreply+kokoro@google.com> Tested-by: 's avatarBen Clayton <bclayton@google.com>
parent 97c13ad1
...@@ -4196,15 +4196,15 @@ namespace rr ...@@ -4196,15 +4196,15 @@ namespace rr
void Return() void Return()
{ {
Nucleus::createRetVoid(); Nucleus::createRetVoid();
// Place any unreachable instructions in an unreferenced block.
Nucleus::setInsertBlock(Nucleus::createBasicBlock()); Nucleus::setInsertBlock(Nucleus::createBasicBlock());
Nucleus::createUnreachable();
} }
void Return(RValue<Int> ret) void Return(RValue<Int> ret)
{ {
Nucleus::createRet(ret.value); Nucleus::createRet(ret.value);
// Place any unreachable instructions in an unreferenced block.
Nucleus::setInsertBlock(Nucleus::createBasicBlock()); Nucleus::setInsertBlock(Nucleus::createBasicBlock());
Nucleus::createUnreachable();
} }
void branch(RValue<Bool> cmp, BasicBlock *bodyBB, BasicBlock *endBB) void branch(RValue<Bool> cmp, BasicBlock *bodyBB, BasicBlock *endBB)
......
...@@ -2973,8 +2973,8 @@ namespace rr ...@@ -2973,8 +2973,8 @@ namespace rr
{ {
RR_DEBUG_INFO_UPDATE_LOC(); RR_DEBUG_INFO_UPDATE_LOC();
Nucleus::createRet(Nucleus::createLoad(ret.address, Pointer<T>::getType())); Nucleus::createRet(Nucleus::createLoad(ret.address, Pointer<T>::getType()));
// Place any unreachable instructions in an unreferenced block.
Nucleus::setInsertBlock(Nucleus::createBasicBlock()); Nucleus::setInsertBlock(Nucleus::createBasicBlock());
Nucleus::createUnreachable();
} }
template<class T> template<class T>
...@@ -2982,8 +2982,8 @@ namespace rr ...@@ -2982,8 +2982,8 @@ namespace rr
{ {
RR_DEBUG_INFO_UPDATE_LOC(); RR_DEBUG_INFO_UPDATE_LOC();
Nucleus::createRet(ret.value); Nucleus::createRet(ret.value);
// Place any unreachable instructions in an unreferenced block.
Nucleus::setInsertBlock(Nucleus::createBasicBlock()); Nucleus::setInsertBlock(Nucleus::createBasicBlock());
Nucleus::createUnreachable();
} }
template<typename Return, typename... Arguments> template<typename Return, typename... Arguments>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment