Remove the bitwise XOR operator from the Attributes class. Replace it with the equivalent from the builder class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165893 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bill Wendling 2012-10-14 06:56:13 +00:00
parent 5886b7bfc8
commit 3756e70af6
4 changed files with 6 additions and 8 deletions

View File

@ -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);

View File

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

View File

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

View File

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