toposort ir