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 @@ -142,7 +142,9 @@ }; ChangeStatus operator|(ChangeStatus l, ChangeStatus r); +void operator|=(ChangeStatus &l, ChangeStatus r); ChangeStatus operator&(ChangeStatus l, ChangeStatus r); +void operator&=(ChangeStatus &l, ChangeStatus r); enum class DepClassTy { REQUIRED, 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 @@ -135,9 +135,15 @@ ChangeStatus llvm::operator|(ChangeStatus l, ChangeStatus r) { return l == ChangeStatus::CHANGED ? l : r; } + +void llvm::operator|=(ChangeStatus &l, ChangeStatus r) { l = l | r; } + ChangeStatus llvm::operator&(ChangeStatus l, ChangeStatus r) { return l == ChangeStatus::UNCHANGED ? l : r; } + +void llvm::operator&=(ChangeStatus &l, ChangeStatus r) { l = l & r; } + ///} /// Return true if \p New is equal or worse than \p Old.