diff options
-rw-r--r-- | include/llvm/Attributes.h | 1 | ||||
-rw-r--r-- | lib/CodeGen/Analysis.cpp | 4 | ||||
-rw-r--r-- | lib/Transforms/Scalar/CodeGenPrepare.cpp | 6 | ||||
-rw-r--r-- | lib/VMCore/Attributes.cpp | 3 |
4 files changed, 6 insertions, 8 deletions
diff --git a/include/llvm/Attributes.h b/include/llvm/Attributes.h index 5b614e9107..c8f723a7dc 100644 --- a/include/llvm/Attributes.h +++ b/include/llvm/Attributes.h @@ -236,7 +236,6 @@ public: Attributes operator | (const Attributes &A) const; Attributes operator & (const Attributes &A) const; - Attributes operator ^ (const Attributes &A) const; Attributes &operator |= (const Attributes &A); Attributes &operator &= (const Attributes &A); diff --git a/lib/CodeGen/Analysis.cpp b/lib/CodeGen/Analysis.cpp index 09e30eba57..110a294020 100644 --- a/lib/CodeGen/Analysis.cpp +++ b/lib/CodeGen/Analysis.cpp @@ -314,8 +314,8 @@ bool llvm::isInTailCallPosition(ImmutableCallSite CS, Attributes CalleeRetAttr, // the return. Ignore noalias because it doesn't affect the call sequence. const Function *F = ExitBB->getParent(); Attributes CallerRetAttr = F->getAttributes().getRetAttributes(); - if (Attributes::Builder(CalleeRetAttr ^ CallerRetAttr) - .removeAttribute(Attributes::NoAlias).hasAttributes()) + if (Attributes::Builder(CalleeRetAttr).removeAttribute(Attributes::NoAlias) != + Attributes::Builder(CallerRetAttr).removeAttribute(Attributes::NoAlias)) return false; // It's not safe to eliminate the sign / zero extension of the return value. diff --git a/lib/Transforms/Scalar/CodeGenPrepare.cpp b/lib/Transforms/Scalar/CodeGenPrepare.cpp index 4d31444b76..665d5b0171 100644 --- a/lib/Transforms/Scalar/CodeGenPrepare.cpp +++ b/lib/Transforms/Scalar/CodeGenPrepare.cpp @@ -774,8 +774,10 @@ bool CodeGenPrepare::DupRetToEnableTailCallOpts(ReturnInst *RI) { // Conservatively require the attributes of the call to match those of the // return. Ignore noalias because it doesn't affect the call sequence. Attributes CalleeRetAttr = CS.getAttributes().getRetAttributes(); - if (Attributes::Builder(CalleeRetAttr ^ CallerRetAttr) - .removeAttribute(Attributes::NoAlias).hasAttributes()) + if (Attributes::Builder(CalleeRetAttr). + removeAttribute(Attributes::NoAlias) != + Attributes::Builder(CallerRetAttr). + removeAttribute(Attributes::NoAlias)) continue; // Make sure the call instruction is followed by an unconditional branch to diff --git a/lib/VMCore/Attributes.cpp b/lib/VMCore/Attributes.cpp index 326afc7ba9..e70efc54fa 100644 --- a/lib/VMCore/Attributes.cpp +++ b/lib/VMCore/Attributes.cpp @@ -99,9 +99,6 @@ Attributes Attributes::operator | (const Attributes &A) const { Attributes Attributes::operator & (const Attributes &A) const { return Attributes(Raw() & A.Raw()); } -Attributes Attributes::operator ^ (const Attributes &A) const { - return Attributes(Raw() ^ A.Raw()); -} Attributes &Attributes::operator |= (const Attributes &A) { Attrs.Bits |= A.Raw(); return *this; |