[ORC][RPC] Fix some bugs in the callB primitive.
authorLang Hames <lhames@gmail.com>
Tue, 30 Aug 2016 21:29:48 +0000 (21:29 +0000)
committerLang Hames <lhames@gmail.com>
Tue, 30 Aug 2016 21:29:48 +0000 (21:29 +0000)
Still no unit test due to synchronization bugs on s390. These issues were
discovered in an out-of-tree utility.

llvm-svn: 280163

llvm/include/llvm/ExecutionEngine/Orc/RPCUtils.h

index 2e7b7b8..f061fff 100644 (file)
@@ -536,13 +536,13 @@ public:
   /// handling responses and incoming calls.
   template <typename Func, typename... ArgTs>
   typename Func::ErrorReturn callB(ChannelT &C, const ArgTs &... Args) {
-    if (auto FutureResOrErr = callNBWithSeq(C, Args...)) {
+    if (auto FutureResOrErr = callNBWithSeq<Func>(C, Args...)) {
       if (auto Err = C.send()) {
         abandonOutstandingResults();
-        Func::consumeAbandoned(*FutureResOrErr);
+        Func::consumeAbandoned(FutureResOrErr->first);
         return std::move(Err);
       }
-      return FutureResOrErr->get();
+      return FutureResOrErr->first.get();
     } else
       return FutureResOrErr.takeError();
   }