Skip to content

Commit 834d426

Browse files
[CodeGen] Use OwningArrayRef in PBQP::Vector (NFC) (#137548)
1 parent b15adef commit 834d426

File tree

1 file changed

+21
-29
lines changed
  • llvm/include/llvm/CodeGen/PBQP

1 file changed

+21
-29
lines changed

llvm/include/llvm/CodeGen/PBQP/Math.h

Lines changed: 21 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#ifndef LLVM_CODEGEN_PBQP_MATH_H
1010
#define LLVM_CODEGEN_PBQP_MATH_H
1111

12+
#include "llvm/ADT/ArrayRef.h"
1213
#include "llvm/ADT/Hashing.h"
1314
#include "llvm/ADT/STLExtras.h"
1415
#include "llvm/Support/InterleavedRange.h"
@@ -28,83 +29,74 @@ class Vector {
2829

2930
public:
3031
/// Construct a PBQP vector of the given size.
31-
explicit Vector(unsigned Length)
32-
: Length(Length), Data(std::make_unique<PBQPNum []>(Length)) {}
32+
explicit Vector(unsigned Length) : Data(Length) {}
3333

3434
/// Construct a PBQP vector with initializer.
35-
Vector(unsigned Length, PBQPNum InitVal)
36-
: Length(Length), Data(std::make_unique<PBQPNum []>(Length)) {
35+
Vector(unsigned Length, PBQPNum InitVal) : Data(Length) {
3736
std::fill(begin(), end(), InitVal);
3837
}
3938

4039
/// Copy construct a PBQP vector.
41-
Vector(const Vector &V)
42-
: Length(V.Length), Data(std::make_unique<PBQPNum []>(Length)) {
43-
llvm::copy(V, begin());
44-
}
40+
Vector(const Vector &V) : Data(ArrayRef<PBQPNum>(V.Data)) {}
4541

4642
/// Move construct a PBQP vector.
47-
Vector(Vector &&V)
48-
: Length(V.Length), Data(std::move(V.Data)) {
49-
V.Length = 0;
50-
}
43+
Vector(Vector &&V) : Data(std::move(V.Data)) {}
5144

5245
// Iterator-based access.
53-
const PBQPNum *begin() const { return Data.get(); }
54-
const PBQPNum *end() const { return Data.get() + Length; }
55-
PBQPNum *begin() { return Data.get(); }
56-
PBQPNum *end() { return Data.get() + Length; }
46+
const PBQPNum *begin() const { return Data.begin(); }
47+
const PBQPNum *end() const { return Data.end(); }
48+
PBQPNum *begin() { return Data.begin(); }
49+
PBQPNum *end() { return Data.end(); }
5750

5851
/// Comparison operator.
5952
bool operator==(const Vector &V) const {
60-
assert(Length != 0 && Data && "Invalid vector");
53+
assert(!Data.empty() && "Invalid vector");
6154
return llvm::equal(*this, V);
6255
}
6356

6457
/// Return the length of the vector
6558
unsigned getLength() const {
66-
assert(Length != 0 && Data && "Invalid vector");
67-
return Length;
59+
assert(!Data.empty() && "Invalid vector");
60+
return Data.size();
6861
}
6962

7063
/// Element access.
7164
PBQPNum& operator[](unsigned Index) {
72-
assert(Length != 0 && Data && "Invalid vector");
73-
assert(Index < Length && "Vector element access out of bounds.");
65+
assert(!Data.empty() && "Invalid vector");
66+
assert(Index < Data.size() && "Vector element access out of bounds.");
7467
return Data[Index];
7568
}
7669

7770
/// Const element access.
7871
const PBQPNum& operator[](unsigned Index) const {
79-
assert(Length != 0 && Data && "Invalid vector");
80-
assert(Index < Length && "Vector element access out of bounds.");
72+
assert(!Data.empty() && "Invalid vector");
73+
assert(Index < Data.size() && "Vector element access out of bounds.");
8174
return Data[Index];
8275
}
8376

8477
/// Add another vector to this one.
8578
Vector& operator+=(const Vector &V) {
86-
assert(Length != 0 && Data && "Invalid vector");
87-
assert(Length == V.Length && "Vector length mismatch.");
79+
assert(!Data.empty() && "Invalid vector");
80+
assert(Data.size() == V.Data.size() && "Vector length mismatch.");
8881
std::transform(begin(), end(), V.begin(), begin(), std::plus<PBQPNum>());
8982
return *this;
9083
}
9184

9285
/// Returns the index of the minimum value in this vector
9386
unsigned minIndex() const {
94-
assert(Length != 0 && Data && "Invalid vector");
87+
assert(!Data.empty() && "Invalid vector");
9588
return llvm::min_element(*this) - begin();
9689
}
9790

9891
private:
99-
unsigned Length;
100-
std::unique_ptr<PBQPNum []> Data;
92+
OwningArrayRef<PBQPNum> Data;
10193
};
10294

10395
/// Return a hash_value for the given vector.
10496
inline hash_code hash_value(const Vector &V) {
10597
const unsigned *VBegin = reinterpret_cast<const unsigned *>(V.begin());
10698
const unsigned *VEnd = reinterpret_cast<const unsigned *>(V.end());
107-
return hash_combine(V.Length, hash_combine_range(VBegin, VEnd));
99+
return hash_combine(V.Data.size(), hash_combine_range(VBegin, VEnd));
108100
}
109101

110102
/// Output a textual representation of the given vector on the given

0 commit comments

Comments
 (0)