diff --git a/llvm/include/llvm/Transforms/IPO/Attributor.h b/llvm/include/llvm/Transforms/IPO/Attributor.h --- a/llvm/include/llvm/Transforms/IPO/Attributor.h +++ b/llvm/include/llvm/Transforms/IPO/Attributor.h @@ -177,7 +177,9 @@ }; ChangeStatus operator|(ChangeStatus l, ChangeStatus r); +ChangeStatus &operator|=(ChangeStatus &l, ChangeStatus r); ChangeStatus operator&(ChangeStatus l, ChangeStatus r); +ChangeStatus &operator&=(ChangeStatus &l, ChangeStatus r); enum class DepClassTy { REQUIRED, ///< The target cannot be valid if the source is not. diff --git a/llvm/lib/Transforms/IPO/Attributor.cpp b/llvm/lib/Transforms/IPO/Attributor.cpp --- a/llvm/lib/Transforms/IPO/Attributor.cpp +++ b/llvm/lib/Transforms/IPO/Attributor.cpp @@ -161,9 +161,17 @@ ChangeStatus llvm::operator|(ChangeStatus L, ChangeStatus R) { return L == ChangeStatus::CHANGED ? L : R; } +ChangeStatus &llvm::operator|=(ChangeStatus &L, ChangeStatus R) { + L = L | R; + return L; +} ChangeStatus llvm::operator&(ChangeStatus L, ChangeStatus R) { return L == ChangeStatus::UNCHANGED ? L : R; } +ChangeStatus &llvm::operator&=(ChangeStatus &L, ChangeStatus R) { + L = L & R; + return L; +} ///} bool AA::isValidInScope(const Value &V, const Function *Scope) { diff --git a/llvm/lib/Transforms/IPO/OpenMPOpt.cpp b/llvm/lib/Transforms/IPO/OpenMPOpt.cpp --- a/llvm/lib/Transforms/IPO/OpenMPOpt.cpp +++ b/llvm/lib/Transforms/IPO/OpenMPOpt.cpp @@ -3505,7 +3505,7 @@ switch (RFKind) { case OMPRTL___kmpc_is_spmd_exec_mode: - Changed = Changed | foldIsSPMDExecMode(A); + Changed |= foldIsSPMDExecMode(A); break; default: llvm_unreachable("Unhandled OpenMP runtime function!");