Assert llvm::Expected<> don't contain an error

When LLVM_ENABLE_ABI_BREAKING_CHECKS is true, llvm::Expected<> asserts
that we've checked it for errors before using its contained value. This
can be done by invoking its operator bool(), so simply asserting the
object ourselves suffices.

Also make it clearer what type Unwrap() returns.

Bug: b/165000222
Change-Id: I38165ebbd0356fb1ca109963f0b9b2a2415af52a
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/63408
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
diff --git a/src/Reactor/LLVMJIT.cpp b/src/Reactor/LLVMJIT.cpp
index b326e19..a1dac6c 100644
--- a/src/Reactor/LLVMJIT.cpp
+++ b/src/Reactor/LLVMJIT.cpp
@@ -646,12 +646,13 @@
 // As we must support different LLVM versions, add a generic Unwrap for functions that return Expected<T> or the actual T.
 // TODO(b/165000222): Remove after LLVM 11 upgrade
 template<typename T>
-auto &Unwrap(llvm::Expected<T> &&v)
+T &Unwrap(llvm::Expected<T> &&v)
 {
+	assert(v);
 	return v.get();
 }
 template<typename T>
-auto &Unwrap(T &&v)
+T &Unwrap(T &&v)
 {
 	return v;
 }
@@ -705,7 +706,7 @@
 	    const rr::Config &config)
 	    : name(name)
 #if LLVM_VERSION_MAJOR >= 13
-	    , session(std::move(*llvm::orc::SelfExecutorProcessControl::Create()))
+	    , session(std::move(Unwrap(llvm::orc::SelfExecutorProcessControl::Create())))
 #endif
 	    , objectLayer(session, [this]() {
 		    return std::make_unique<llvm::SectionMemoryManager>(&memoryMapper);