mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-14 15:28:20 +00:00
Add move semantics to APInt.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157883 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
#define LLVM_APINT_H
|
#define LLVM_APINT_H
|
||||||
|
|
||||||
#include "llvm/ADT/ArrayRef.h"
|
#include "llvm/ADT/ArrayRef.h"
|
||||||
|
#include "llvm/Support/Compiler.h"
|
||||||
#include "llvm/Support/MathExtras.h"
|
#include "llvm/Support/MathExtras.h"
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
#include <climits>
|
#include <climits>
|
||||||
@@ -273,6 +274,13 @@ public:
|
|||||||
initSlowCase(that);
|
initSlowCase(that);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if LLVM_USE_RVALUE_REFERENCES
|
||||||
|
/// @brief Move Constructor.
|
||||||
|
APInt(APInt&& that) : BitWidth(that.BitWidth), VAL(that.VAL) {
|
||||||
|
that.BitWidth = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/// @brief Destructor.
|
/// @brief Destructor.
|
||||||
~APInt() {
|
~APInt() {
|
||||||
if (!isSingleWord())
|
if (!isSingleWord())
|
||||||
@@ -587,6 +595,21 @@ public:
|
|||||||
return AssignSlowCase(RHS);
|
return AssignSlowCase(RHS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if LLVM_USE_RVALUE_REFERENCES
|
||||||
|
/// @brief Move assignment operator.
|
||||||
|
APInt& operator=(APInt&& that) {
|
||||||
|
if (!isSingleWord())
|
||||||
|
delete [] pVal;
|
||||||
|
|
||||||
|
BitWidth = that.BitWidth;
|
||||||
|
VAL = that.VAL;
|
||||||
|
|
||||||
|
that.BitWidth = 0;
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/// The RHS value is assigned to *this. If the significant bits in RHS exceed
|
/// The RHS value is assigned to *this. If the significant bits in RHS exceed
|
||||||
/// the bit width, the excess bits are truncated. If the bit width is larger
|
/// the bit width, the excess bits are truncated. If the bit width is larger
|
||||||
/// than 64, the value is zero filled in the unspecified high order bits.
|
/// than 64, the value is zero filled in the unspecified high order bits.
|
||||||
|
Reference in New Issue
Block a user