LLVM: include/llvm/ADT/TinyPtrVector.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9#ifndef LLVM_ADT_TINYPTRVECTOR_H

10#define LLVM_ADT_TINYPTRVECTOR_H

11

15#include

16#include

17#include

18

19namespace llvm {

20

21

22

23

24

25

26

27template

29public:

32

33

34

35

37

38private:

40

41public:

43

48

51 Val = new VecTy(*V);

52 }

53

55 if (this == &RHS)

56 return *this;

57 if (RHS.empty()) {

59 return *this;

60 }

61

62

63

65 if (RHS.size() == 1)

66 Val = RHS.front();

67 else

69 return *this;

70 }

71

72

76 } else {

78 }

79 return *this;

80 }

81

83 RHS.Val = (EltTy)nullptr;

84 }

85

87 if (this == &RHS)

88 return *this;

89 if (RHS.empty()) {

91 return *this;

92 }

93

94

95

96

99 V->clear();

100 V->push_back(RHS.front());

101 RHS.Val = EltTy();

102 return *this;

103 }

104 delete V;

105 }

106

107 Val = RHS.Val;

108 RHS.Val = EltTy();

109 return *this;

110 }

111

117

118

119

120

121

123 : Val(Elts.empty()

125 : Elts.size() == 1

128

133

135

136

138 return Val.isNull();

140 }

141

144 return Val.isNull() ? 0 : 1;

146 }

147

152

155 return Val.getAddrOfPtr1();

156

158 }

159

162 return begin() + (Val.isNull() ? 0 : 1);

163

165 }

166

170

174

177

181

185

187 const EltTy *data() const { return begin(); }

188

190 assert(!Val.isNull() && "can't index into an empty vector");

192 assert(i == 0 && "tinyvector index out of range");

194 }

195

198 }

199

206

213

215

216 if (Val.isNull()) {

217 Val = NewVal;

218 assert(!Val.isNull() && "Can't add a null value");

219 return;

220 }

221

222

225 Val = new VecTy({V, NewVal});

226 return;

227 }

228

229

231 }

232

234

236 Val = EltTy();

237 else

239 }

240

242

244 Val = EltTy();

245 } else {

246

248 }

249 }

250

252 assert(I >= begin() && "Iterator to erase is out of bounds.");

253 assert(I < end() && "Erasing at past-the-end iterator.");

254

255

258 Val = EltTy();

259 } else {

260

261

263 }

264 return end();

265 }

266

268 assert(S >= begin() && "Range to erase is out of bounds.");

269 assert(S <= E && "Trying to erase invalid range.");

270 assert(E <= end() && "Trying to erase past the end.");

271

273 if (S == begin() && S != E)

274 Val = EltTy();

275 } else {

277 }

278 return end();

279 }

280

282 assert(I >= this->begin() && "Insertion iterator is out of bounds.");

284 if (I == end()) {

286 return std::prev(end());

287 }

288 assert(!Val.isNull() && "Null value with non-end insert iterator.");

292 Val = Elt;

295 }

296

298 }

299

300 template

302 assert(I >= this->begin() && "Insertion iterator is out of bounds.");

304 if (From == To)

305 return I;

306

307

309 if (Val.isNull()) {

310 if (std::next(From) == To) {

311 Val = *From;

313 }

314

315 Val = new VecTy();

318 Val = new VecTy();

320 }

322 }

323};

324

325}

326

327#endif

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")

This file defines the PointerUnion class, which is a discriminated union of pointer types.

This file defines the SmallVector class.

ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...

A discriminated union of two or more pointer types, with the discriminator in the low bit of the poin...

This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.

reverse_iterator rbegin()

Definition TinyPtrVector.h:175

iterator begin()

Definition TinyPtrVector.h:153

const EltTy * const_iterator

Definition TinyPtrVector.h:149

TinyPtrVector(std::initializer_list< EltTy > IL)

Definition TinyPtrVector.h:112

void push_back(EltTy NewVal)

Definition TinyPtrVector.h:214

TinyPtrVector & operator=(TinyPtrVector &&RHS)

Definition TinyPtrVector.h:86

reverse_iterator rend()

Definition TinyPtrVector.h:176

std::reverse_iterator< const_iterator > const_reverse_iterator

Definition TinyPtrVector.h:151

const_reverse_iterator rbegin() const

Definition TinyPtrVector.h:178

TinyPtrVector(ArrayRef< EltTy > Elts)

Constructor from an ArrayRef.

Definition TinyPtrVector.h:122

std::reverse_iterator< iterator > reverse_iterator

Definition TinyPtrVector.h:150

EltTy front() const

Definition TinyPtrVector.h:200

const_iterator begin() const

Definition TinyPtrVector.h:167

iterator erase(iterator I)

Definition TinyPtrVector.h:251

TinyPtrVector & operator=(const TinyPtrVector &RHS)

Definition TinyPtrVector.h:54

TinyPtrVector(const TinyPtrVector &RHS)

Definition TinyPtrVector.h:49

const_reverse_iterator rend() const

Definition TinyPtrVector.h:182

const EltTy * data() const

Definition TinyPtrVector.h:187

const_iterator end() const

Definition TinyPtrVector.h:171

~TinyPtrVector()

Definition TinyPtrVector.h:44

bool empty() const

Definition TinyPtrVector.h:134

iterator end()

Definition TinyPtrVector.h:160

void pop_back()

Definition TinyPtrVector.h:233

unsigned size() const

Definition TinyPtrVector.h:142

EltTy * iterator

Definition TinyPtrVector.h:148

PointerUnion< EltTy, VecTy * > PtrUnion

Definition TinyPtrVector.h:36

EltTy * data()

Definition TinyPtrVector.h:186

iterator insert(iterator I, const EltTy &Elt)

Definition TinyPtrVector.h:281

iterator erase(iterator S, iterator E)

Definition TinyPtrVector.h:267

void clear()

Definition TinyPtrVector.h:241

SmallVector< EltTy, 4 > VecTy

Definition TinyPtrVector.h:30

EltTy back() const

Definition TinyPtrVector.h:207

typename VecTy::value_type value_type

Definition TinyPtrVector.h:31

TinyPtrVector(TinyPtrVector &&RHS)

Definition TinyPtrVector.h:82

iterator insert(iterator I, ItTy From, ItTy To)

Definition TinyPtrVector.h:301

EltTy operator[](unsigned i) const

Definition TinyPtrVector.h:189

TinyPtrVector(size_t Count, EltTy Value)

Definition TinyPtrVector.h:129

LLVM Value Representation.

This is an optimization pass for GlobalISel generic memory operations.

auto dyn_cast_if_present(const Y &Val)

dyn_cast_if_present - Functionally identical to dyn_cast, except that a null (or none in the case ...

FunctionAddr VTableAddr Count

bool isa(const From &Val)

isa - Return true if the parameter to the template is an instance of one of the template type argu...

decltype(auto) cast(const From &Val)

cast - Return the argument parameter cast to the specified type.