================
@@ -1415,11 +1413,13 @@ static llvm::Expected<llvm::BasicBlock *> 
allocateAndInitPrivateVars(
     llvm::Value *llvmPrivateVar = builder.CreateAlloca(
         llvmAllocType, /*ArraySize=*/nullptr, "omp.private.alloc");
 
-    llvm::Error err = initPrivateVar(
+    llvm::Expected<llvm::Value *> privateVarOrError = initPrivateVar(
         builder, moduleTranslation, privDecl, mlirPrivVar, blockArg,
-        llvmPrivateVar, llvmPrivateVars, privInitBlock, mappedPrivateVars);
-    if (err)
+        llvmPrivateVar, privInitBlock, mappedPrivateVars);
+    if (auto err = privateVarOrError.takeError())
----------------
skatrak wrote:

I'm not sure if this can cause issues. The documentation for `takeError` states 
that, after calling this function, `privateVarOrError` would be in an 
"indeterminate state that can only be safely destroyed". Maybe I'm 
misunderstanding, but to be safe, I'd suggest this alternative:
```c++
if (!privateVarOrError)
  return privateVarOrError.takeError();
```

https://github.com/llvm/llvm-project/pull/125307
_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to