@@ -221,8 +221,8 @@ bool blockinit(ref BlockOpt bo)
221221 L1 :
222222 foreach (blp; b.Bpred[])
223223 {
224- foreach (bls; ListRange (blp.Bsucc))
225- if (list_block( bls) == b)
224+ foreach (bls; BsuccArray (blp.Bsucc))
225+ if (bls == b)
226226 continue L1 ;
227227 assert (0 );
228228 }
@@ -328,6 +328,7 @@ bool dom(ref BlockOpt bo, const block* A, const block* B)
328328 * Find all the loops.
329329 */
330330
331+ @trusted
331332private void findloops (ref BlockOpt bo, block* [] dfo, ref Loops loops)
332333{
333334 freeloop(loops);
@@ -340,9 +341,8 @@ private void findloops(ref BlockOpt bo, block*[] dfo, ref Loops loops)
340341 // loops are found first)
341342 {
342343 assert (b);
343- foreach (bl; ListRange (b.Bsucc))
344+ foreach (s; BsuccArray (b.Bsucc))
344345 {
345- block* s = list_block(bl); // each successor s to b
346346 assert (s);
347347 if (dom(bo, s, b)) // if s dominates b
348348 buildloop(bo, loops, s, b); // we found a loop
455455 vec_setbit(i,l.Lexit); /* ret blocks are exit blocks */
456456 else
457457 {
458- foreach (bl; ListRange (bo.dfo[i].Bsucc))
459- if (! vec_testbit(list_block(bl) .Bdfoidx,l.Lloop))
458+ foreach (b; BsuccArray (bo.dfo[i].Bsucc))
459+ if (! vec_testbit(b .Bdfoidx,l.Lloop))
460460 {
461461 vec_setbit(i,l.Lexit);
462462 break ;
@@ -610,7 +610,7 @@ static if (1)
610610 foreach (bl; ListRange(bs.Bsucc))
611611 if (list_block(bl) == head)
612612 {
613- bl.ptr = cast ( void * ) head2;
613+ bl.ptr = head2;
614614 goto L2 ;
615615 }
616616 assert (0 );
@@ -648,10 +648,9 @@ else
648648 } // for each pred(head)
649649}
650650 // succ(head2) = succ(head)
651- foreach (bl; ListRange (head.Bsucc))
651+ foreach (b; BsuccArray (head.Bsucc))
652652 {
653- block* b = list_block(bl);
654- list_append(&(head2.Bsucc),b);
653+ head2.appendSucc(b);
655654 b.Bpred.push(head2);
656655 }
657656 if (debugc) printf(" 1Rotated loop %p\n " , &l);
@@ -1579,11 +1578,12 @@ Lnextlis:
15791578 uint i;
15801579 for (i = 0 ; (i = cast (uint ) vec_index(i, l.Lexit)) < bo.dfo.length; ++ i) // for each exit block
15811580 {
1582- foreach (bl; ListRange(bo.dfo[i].Bsucc))
1581+ foreach (s; BsuccArray(bo.dfo[i].Bsucc))
1582+ // foreach (bl; ListRange(bo.dfo[i].Bsucc))
15831583 {
1584- block* s; // successor to exit block
1584+ // block* s; // successor to exit block
15851585
1586- s = list_block(bl);
1586+ // s = list_block(bl);
15871587 if (! vec_testbit(s.Bdfoidx,l.Lloop) &&
15881588 (! symbol_isintab(v) ||
15891589 vec_testbit(v.Ssymnum,s.Binlv))) // if v is live on exit
0 commit comments