19
19
#include " llvm/ADT/DenseSet.h"
20
20
#include " llvm/ADT/FoldingSet.h"
21
21
#include " llvm/ADT/PointerIntPair.h"
22
+ #include " llvm/ADT/STLExtras.h"
22
23
#include " llvm/ADT/SmallVector.h"
23
24
#include " llvm/ADT/StringExtras.h"
24
25
#include " llvm/ADT/StringRef.h"
@@ -244,7 +245,7 @@ class RecordRecTy final : public RecTy,
244
245
RecordRecTy &operator =(const RecordRecTy &) = delete ;
245
246
246
247
// Do not use sized deallocation due to trailing objects.
247
- void operator delete (void *p ) { ::operator delete (p ); }
248
+ void operator delete (void *Ptr ) { ::operator delete (Ptr ); }
248
249
249
250
static bool classof (const RecTy *RT) {
250
251
return RT->getRecTyKind () == RecordRecTyKind;
@@ -598,7 +599,7 @@ class BitsInit final : public TypedInit,
598
599
BitsInit &operator =(const BitsInit &) = delete ;
599
600
600
601
// Do not use sized deallocation due to trailing objects.
601
- void operator delete (void *p ) { ::operator delete (p ); }
602
+ void operator delete (void *Ptr ) { ::operator delete (Ptr ); }
602
603
603
604
static bool classof (const Init *I) {
604
605
return I->getKind () == IK_BitsInit;
@@ -615,18 +616,8 @@ class BitsInit final : public TypedInit,
615
616
convertInitializerBitRange (ArrayRef<unsigned > Bits) const override ;
616
617
std::optional<int64_t > convertInitializerToInt () const ;
617
618
618
- bool isComplete () const override {
619
- for (unsigned i = 0 ; i != getNumBits (); ++i)
620
- if (!getBit (i)->isComplete ()) return false ;
621
- return true ;
622
- }
623
-
624
- bool allInComplete () const {
625
- for (unsigned i = 0 ; i != getNumBits (); ++i)
626
- if (getBit (i)->isComplete ()) return false ;
627
- return true ;
628
- }
629
-
619
+ bool isComplete () const override ;
620
+ bool allInComplete () const ;
630
621
bool isConcrete () const override ;
631
622
std::string getAsString () const override ;
632
623
@@ -769,7 +760,7 @@ class ListInit final : public TypedInit,
769
760
ListInit &operator =(const ListInit &) = delete ;
770
761
771
762
// Do not use sized deallocation due to trailing objects.
772
- void operator delete (void *p ) { ::operator delete (p ); }
763
+ void operator delete (void *Ptr ) { ::operator delete (Ptr ); }
773
764
774
765
static bool classof (const Init *I) {
775
766
return I->getKind () == IK_ListInit;
@@ -782,13 +773,13 @@ class ListInit final : public TypedInit,
782
773
return ArrayRef (getTrailingObjects (), NumValues);
783
774
}
784
775
785
- const Init *getElement (unsigned Index ) const { return getValues ()[Index ]; }
776
+ const Init *getElement (unsigned Idx ) const { return getValues ()[Idx ]; }
786
777
787
778
const RecTy *getElementType () const {
788
779
return cast<ListRecTy>(getType ())->getElementType ();
789
780
}
790
781
791
- const Record *getElementAsRecord (unsigned i ) const ;
782
+ const Record *getElementAsRecord (unsigned Idx ) const ;
792
783
793
784
const Init *convertInitializerTo (const RecTy *Ty) const override ;
794
785
@@ -1052,6 +1043,8 @@ class CondOpInit final : public TypedInit,
1052
1043
return ArrayRef (getTrailingObjects () + NumConds, NumConds);
1053
1044
}
1054
1045
1046
+ auto getCondAndVals () const { return zip_equal (getConds (), getVals ()); }
1047
+
1055
1048
const Init *Fold (const Record *CurRec) const ;
1056
1049
1057
1050
const Init *resolveReferences (Resolver &R) const override ;
@@ -1341,7 +1334,7 @@ class VarDefInit final
1341
1334
VarDefInit &operator =(const VarDefInit &) = delete ;
1342
1335
1343
1336
// Do not use sized deallocation due to trailing objects.
1344
- void operator delete (void *p ) { ::operator delete (p ); }
1337
+ void operator delete (void *Ptr ) { ::operator delete (Ptr ); }
1345
1338
1346
1339
static bool classof (const Init *I) {
1347
1340
return I->getKind () == IK_VarDefInit;
@@ -1449,7 +1442,7 @@ class DagInit final
1449
1442
ArrayRef<const StringInit *> NameRange);
1450
1443
static const DagInit *
1451
1444
get (const Init *V, const StringInit *VN,
1452
- ArrayRef<std::pair<const Init *, const StringInit *>> Args );
1445
+ ArrayRef<std::pair<const Init *, const StringInit *>> ArgAndNames );
1453
1446
1454
1447
void Profile (FoldingSetNodeID &ID) const ;
1455
1448
@@ -1487,6 +1480,15 @@ class DagInit final
1487
1480
return getTrailingObjects<const StringInit *>(NumArgs);
1488
1481
}
1489
1482
1483
+ // Return a range of std::pair.
1484
+ auto getArgAndNames () const {
1485
+ auto Zip = llvm::zip_equal (getArgs (), getArgNames ());
1486
+ using EltTy = decltype (*adl_begin (Zip));
1487
+ return llvm::map_range (Zip, [](const EltTy &E) {
1488
+ return std::make_pair (std::get<0 >(E), std::get<1 >(E));
1489
+ });
1490
+ }
1491
+
1490
1492
const Init *resolveReferences (Resolver &R) const override ;
1491
1493
1492
1494
bool isConcrete () const override ;
@@ -1790,12 +1792,11 @@ class Record {
1790
1792
}
1791
1793
1792
1794
void removeValue (const Init *Name) {
1793
- for (unsigned i = 0 , e = Values.size (); i != e; ++i)
1794
- if (Values[i].getNameInit () == Name) {
1795
- Values.erase (Values.begin ()+i);
1796
- return ;
1797
- }
1798
- llvm_unreachable (" Cannot remove an entry that does not exist!" );
1795
+ auto It = llvm::find_if (
1796
+ Values, [Name](const RecordVal &V) { return V.getNameInit () == Name; });
1797
+ if (It == Values.end ())
1798
+ llvm_unreachable (" Cannot remove an entry that does not exist!" );
1799
+ Values.erase (It);
1799
1800
}
1800
1801
1801
1802
void removeValue (StringRef Name) {
@@ -2115,10 +2116,7 @@ struct LessRecordRegister {
2115
2116
2116
2117
size_t size () { return Parts.size (); }
2117
2118
2118
- std::pair<bool , StringRef> getPart (size_t i) {
2119
- assert (i < Parts.size () && " Invalid idx!" );
2120
- return Parts[i];
2121
- }
2119
+ std::pair<bool , StringRef> getPart (size_t Idx) { return Parts[Idx]; }
2122
2120
};
2123
2121
2124
2122
bool operator ()(const Record *Rec1, const Record *Rec2) const {
0 commit comments