@@ -239,16 +239,17 @@ bool ICF<ELFT>::constantEq(const InputSection *secA, ArrayRef<RelTy> ra,
239239 const InputSection *secB, ArrayRef<RelTy> rb) {
240240 if (ra.size () != rb.size ())
241241 return false ;
242- for (size_t i = 0 ; i < ra.size (); ++i) {
243- if (ra[i].r_offset != rb[i].r_offset ||
244- ra[i].getType (config->isMips64EL ) != rb[i].getType (config->isMips64EL ))
242+ auto rai = ra.begin (), rae = ra.end (), rbi = rb.begin ();
243+ for (; rai != rae; ++rai, ++rbi) {
244+ if (rai->r_offset != rbi->r_offset ||
245+ rai->getType (config->isMips64EL ) != rbi->getType (config->isMips64EL ))
245246 return false ;
246247
247- uint64_t addA = getAddend<ELFT>(ra[i] );
248- uint64_t addB = getAddend<ELFT>(rb[i] );
248+ uint64_t addA = getAddend<ELFT>(*rai );
249+ uint64_t addB = getAddend<ELFT>(*rbi );
249250
250- Symbol &sa = secA->file ->getRelocTargetSym (ra[i] );
251- Symbol &sb = secB->file ->getRelocTargetSym (rb[i] );
251+ Symbol &sa = secA->file ->getRelocTargetSym (*rai );
252+ Symbol &sb = secB->file ->getRelocTargetSym (*rbi );
252253 if (&sa == &sb) {
253254 if (addA == addB)
254255 continue ;
@@ -336,10 +337,11 @@ bool ICF<ELFT>::variableEq(const InputSection *secA, ArrayRef<RelTy> ra,
336337 const InputSection *secB, ArrayRef<RelTy> rb) {
337338 assert (ra.size () == rb.size ());
338339
339- for (size_t i = 0 ; i < ra.size (); ++i) {
340+ auto rai = ra.begin (), rae = ra.end (), rbi = rb.begin ();
341+ for (; rai != rae; ++rai, ++rbi) {
340342 // The two sections must be identical.
341- Symbol &sa = secA->file ->getRelocTargetSym (ra[i] );
342- Symbol &sb = secB->file ->getRelocTargetSym (rb[i] );
343+ Symbol &sa = secA->file ->getRelocTargetSym (*rai );
344+ Symbol &sb = secB->file ->getRelocTargetSym (*rbi );
343345 if (&sa == &sb)
344346 continue ;
345347
0 commit comments