Make APInt negate just do a 2's complement negate instead of subtract. NFC.

This is part of an effort to shave allocations from APInt heavy paths.  I'll
be moving many of the other operators to r-value references soon and this is
a step towards doing that without too much duplication.

Saves 15k allocations when doing 'opt -O2 verify-uselistorder.bc'.

llvm-svn: 271556
This commit is contained in:
Pete Cooper 2016-06-02 18:11:54 +00:00
parent 651cff42c4
commit c5f6a9df5f
1 changed files with 6 additions and 1 deletions

View File

@ -625,7 +625,12 @@ public:
/// Negates *this using two's complement logic.
///
/// \returns An APInt value representing the negation of *this.
APInt operator-() const { return APInt(BitWidth, 0) - (*this); }
APInt operator-() const {
APInt Result(*this);
Result.flipAllBits();
++Result;
return Result;
}
/// \brief Logical negation operator.
///