@@ -1440,8 +1440,7 @@ static unsigned getPatternSize(const TreePatternNode &P,
1440
1440
++Size;
1441
1441
1442
1442
// Count children in the count if they are also nodes.
1443
- for (unsigned i = 0 , e = P.getNumChildren (); i != e; ++i) {
1444
- const TreePatternNode &Child = P.getChild (i);
1443
+ for (const TreePatternNode &Child : P.children ()) {
1445
1444
if (!Child.isLeaf () && Child.getNumTypes ()) {
1446
1445
const TypeSetByHwMode &T0 = Child.getExtType (0 );
1447
1446
// At this point, all variable type sets should be simple, i.e. only
@@ -1747,8 +1746,8 @@ bool TreePatternNode::ContainsUnresolvedType(TreePattern &TP) const {
1747
1746
for (unsigned i = 0 , e = Types.size (); i != e; ++i)
1748
1747
if (!TP.getInfer ().isConcrete (Types[i], true ))
1749
1748
return true ;
1750
- for (unsigned i = 0 , e = getNumChildren (); i != e; ++i )
1751
- if (getChild (i) .ContainsUnresolvedType (TP))
1749
+ for (const TreePatternNode &Child : children () )
1750
+ if (Child .ContainsUnresolvedType (TP))
1752
1751
return true ;
1753
1752
return false ;
1754
1753
}
@@ -1923,9 +1922,9 @@ void TreePatternNode::print(raw_ostream &OS) const {
1923
1922
if (getNumChildren () != 0 ) {
1924
1923
OS << " " ;
1925
1924
ListSeparator LS;
1926
- for (unsigned i = 0 , e = getNumChildren (); i != e; ++i ) {
1925
+ for (const TreePatternNode &Child : children () ) {
1927
1926
OS << LS;
1928
- getChild (i) .print (OS);
1927
+ Child .print (OS);
1929
1928
}
1930
1929
}
1931
1930
OS << " )" ;
@@ -1998,8 +1997,8 @@ TreePatternNodePtr TreePatternNode::clone() const {
1998
1997
} else {
1999
1998
std::vector<TreePatternNodePtr> CChildren;
2000
1999
CChildren.reserve (Children.size ());
2001
- for (unsigned i = 0 , e = getNumChildren (); i != e; ++i )
2002
- CChildren.push_back (getChild (i) .clone ());
2000
+ for (const TreePatternNode &Child : children () )
2001
+ CChildren.push_back (Child .clone ());
2003
2002
New = makeIntrusiveRefCnt<TreePatternNode>(
2004
2003
getOperator (), std::move (CChildren), getNumTypes ());
2005
2004
}
@@ -2018,8 +2017,8 @@ void TreePatternNode::RemoveAllTypes() {
2018
2017
std::fill (Types.begin (), Types.end (), TypeSetByHwMode ());
2019
2018
if (isLeaf ())
2020
2019
return ;
2021
- for (unsigned i = 0 , e = getNumChildren (); i != e; ++i )
2022
- getChild (i) .RemoveAllTypes ();
2020
+ for (TreePatternNode &Child : children () )
2021
+ Child .RemoveAllTypes ();
2023
2022
}
2024
2023
2025
2024
// / SubstituteFormalArguments - Replace the formal arguments in this tree
@@ -2392,8 +2391,8 @@ bool TreePatternNode::TreeHasProperty(SDNP Property,
2392
2391
const CodeGenDAGPatterns &CGP) const {
2393
2392
if (NodeHasProperty (Property, CGP))
2394
2393
return true ;
2395
- for (unsigned i = 0 , e = getNumChildren (); i != e; ++i )
2396
- if (getChild (i) .TreeHasProperty (Property, CGP))
2394
+ for (const TreePatternNode &Child : children () )
2395
+ if (Child .TreeHasProperty (Property, CGP))
2397
2396
return true ;
2398
2397
return false ;
2399
2398
}
@@ -2528,8 +2527,8 @@ bool TreePatternNode::ApplyTypeConstraints(TreePattern &TP, bool NotRegisters) {
2528
2527
}
2529
2528
2530
2529
bool MadeChange = false ;
2531
- for (unsigned i = 0 , e = getNumChildren (); i != e; ++i )
2532
- MadeChange |= getChild (i) .ApplyTypeConstraints (TP, NotRegisters);
2530
+ for (TreePatternNode &Child : children () )
2531
+ MadeChange |= Child .ApplyTypeConstraints (TP, NotRegisters);
2533
2532
MadeChange |= NI.ApplyTypeConstraints (*this , TP);
2534
2533
return MadeChange;
2535
2534
}
@@ -2679,8 +2678,8 @@ bool TreePatternNode::ApplyTypeConstraints(TreePattern &TP, bool NotRegisters) {
2679
2678
return false ;
2680
2679
}
2681
2680
2682
- for (unsigned i = 0 , e = getNumChildren (); i != e; ++i )
2683
- MadeChange |= getChild (i) .ApplyTypeConstraints (TP, NotRegisters);
2681
+ for (TreePatternNode &Child : children () )
2682
+ MadeChange |= Child .ApplyTypeConstraints (TP, NotRegisters);
2684
2683
return MadeChange;
2685
2684
}
2686
2685
@@ -2703,8 +2702,8 @@ bool TreePatternNode::ApplyTypeConstraints(TreePattern &TP, bool NotRegisters) {
2703
2702
MadeChange |= UpdateNodeType (0 , VVT, TP);
2704
2703
}
2705
2704
2706
- for (unsigned i = 0 ; i < getNumChildren (); ++i )
2707
- MadeChange |= getChild (i) .ApplyTypeConstraints (TP, NotRegisters);
2705
+ for (TreePatternNode &Child : children () )
2706
+ MadeChange |= Child .ApplyTypeConstraints (TP, NotRegisters);
2708
2707
2709
2708
return MadeChange;
2710
2709
}
@@ -2724,7 +2723,7 @@ bool TreePatternNode::ApplyTypeConstraints(TreePattern &TP, bool NotRegisters) {
2724
2723
2725
2724
// / OnlyOnRHSOfCommutative - Return true if this value is only allowed on the
2726
2725
// / RHS of a commutative operation, not the on LHS.
2727
- static bool OnlyOnRHSOfCommutative (TreePatternNode &N) {
2726
+ static bool OnlyOnRHSOfCommutative (const TreePatternNode &N) {
2728
2727
if (!N.isLeaf () && N.getOperator ()->getName () == " imm" )
2729
2728
return true ;
2730
2729
if (N.isLeaf () && isa<IntInit>(N.getLeafValue ()))
@@ -2740,12 +2739,12 @@ static bool OnlyOnRHSOfCommutative(TreePatternNode &N) {
2740
2739
// / that can never possibly work), and to prevent the pattern permuter from
2741
2740
// / generating stuff that is useless.
2742
2741
bool TreePatternNode::canPatternMatch (std::string &Reason,
2743
- const CodeGenDAGPatterns &CDP) {
2742
+ const CodeGenDAGPatterns &CDP) const {
2744
2743
if (isLeaf ())
2745
2744
return true ;
2746
2745
2747
- for (unsigned i = 0 , e = getNumChildren (); i != e; ++i )
2748
- if (!getChild (i) .canPatternMatch (Reason, CDP))
2746
+ for (const TreePatternNode &Child : children () )
2747
+ if (!Child .canPatternMatch (Reason, CDP))
2749
2748
return false ;
2750
2749
2751
2750
// If this is an intrinsic, handle cases that would make it not match. For
@@ -2822,8 +2821,8 @@ void TreePattern::ComputeNamedNodes(TreePatternNode &N) {
2822
2821
if (!N.getName ().empty ())
2823
2822
NamedNodes[N.getName ()].push_back (&N);
2824
2823
2825
- for (unsigned i = 0 , e = N. getNumChildren (); i != e; ++i )
2826
- ComputeNamedNodes (N. getChild (i) );
2824
+ for (TreePatternNode &Child : N. children () )
2825
+ ComputeNamedNodes (Child );
2827
2826
}
2828
2827
2829
2828
TreePatternNodePtr TreePattern::ParseTreePattern (const Init *TheInit,
@@ -3595,8 +3594,8 @@ class InstAnalyzer {
3595
3594
}
3596
3595
3597
3596
// Analyze children.
3598
- for (unsigned i = 0 , e = N. getNumChildren (); i != e; ++i )
3599
- AnalyzeNode (N. getChild (i) );
3597
+ for (const TreePatternNode &Child : N. children () )
3598
+ AnalyzeNode (Child );
3600
3599
3601
3600
// Notice properties of the node.
3602
3601
if (N.NodeHasProperty (SDNPMayStore, CDP))
@@ -3730,8 +3729,8 @@ static void getInstructionsInTree(TreePatternNode &Tree,
3730
3729
return ;
3731
3730
if (Tree.getOperator ()->isSubClassOf (" Instruction" ))
3732
3731
Instrs.push_back (Tree.getOperator ());
3733
- for (unsigned i = 0 , e = Tree.getNumChildren (); i != e; ++i )
3734
- getInstructionsInTree (Tree. getChild (i) , Instrs);
3732
+ for (TreePatternNode &Child : Tree.children () )
3733
+ getInstructionsInTree (Child , Instrs);
3735
3734
}
3736
3735
3737
3736
// / Check the class of a pattern leaf node against the instruction operand it
@@ -4010,8 +4009,8 @@ static void FindNames(TreePatternNode &P,
4010
4009
}
4011
4010
4012
4011
if (!P.isLeaf ()) {
4013
- for (unsigned i = 0 , e = P. getNumChildren (); i != e; ++i )
4014
- FindNames (P. getChild (i) , Names, PatternTop);
4012
+ for (TreePatternNode &Child : P. children () )
4013
+ FindNames (Child , Names, PatternTop);
4015
4014
}
4016
4015
}
4017
4016
@@ -4195,8 +4194,8 @@ static bool ForceArbitraryInstResultType(TreePatternNode &N, TreePattern &TP) {
4195
4194
return false ;
4196
4195
4197
4196
// Analyze children.
4198
- for (unsigned i = 0 , e = N. getNumChildren (); i != e; ++i )
4199
- if (ForceArbitraryInstResultType (N. getChild (i) , TP))
4197
+ for (TreePatternNode &Child : N. children () )
4198
+ if (ForceArbitraryInstResultType (Child , TP))
4200
4199
return true ;
4201
4200
4202
4201
if (!N.getOperator ()->isSubClassOf (" Instruction" ))
@@ -4378,8 +4377,8 @@ static void collectModes(std::set<unsigned> &Modes, const TreePatternNode &N) {
4378
4377
for (const auto &I : VTS)
4379
4378
Modes.insert (I.first );
4380
4379
4381
- for (unsigned i = 0 , e = N. getNumChildren (); i != e; ++i )
4382
- collectModes (Modes, N. getChild (i) );
4380
+ for (const TreePatternNode &Child : N. children () )
4381
+ collectModes (Modes, Child );
4383
4382
}
4384
4383
4385
4384
void CodeGenDAGPatterns::ExpandHwModeBasedTypes () {
@@ -4464,8 +4463,8 @@ static void FindDepVarsOf(TreePatternNode &N, DepVarMap &DepMap) {
4464
4463
if (N.hasName () && isa<DefInit>(N.getLeafValue ()))
4465
4464
DepMap[N.getName ()]++;
4466
4465
} else {
4467
- for (size_t i = 0 , e = N. getNumChildren (); i != e; ++i )
4468
- FindDepVarsOf (N. getChild (i) , DepMap);
4466
+ for (TreePatternNode &Child : N. children () )
4467
+ FindDepVarsOf (Child , DepMap);
4469
4468
}
4470
4469
}
4471
4470
0 commit comments