================ @@ -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