def _loop_lift_get_candidate_infos(cfg, blocks, livemap):
 loops = _extract_loop_lifting_candidates(cfg, blocks)
 loopinfos = []
 for loop in loops:
  [callfrom] = loop.entries
  an_exit = next(iter(loop.exits))
  [(returnto, _)] = cfg.successors(an_exit)
  inputs = sorted(livemap[callfrom])
  outputs = sorted(livemap[returnto])
  lli = _loop_lift_info(loop=loop, inputs=inputs, outputs=outputs, callfrom=callfrom, returnto=returnto)
  loopinfos.append(lli)
 return loopinfos

def _loop_lift_get_candidate_infos ( cfg , blocks , livemap ) : loops = _extract_loop_lifting_candidates ( cfg , blocks ) loopinfos = [ ] for loop in loops : [ callfrom ] = loop . entries an_exit = next ( iter ( loop . exits ) ) [ ( returnto , _ ) ] = cfg . successors ( an_exit ) inputs = sorted ( livemap [ callfrom ] ) outputs = sorted ( livemap [ returnto ] ) lli = _loop_lift_info ( loop = loop , inputs = inputs , outputs = outputs , callfrom = callfrom , returnto = returnto ) loopinfos . append ( lli ) return loopinfos
returns information on looplifting candidates .