#include "nir_builder.h"
struct path {
+ /** Set of blocks which this path represents
+ *
+ * It's "reachable" not in the sense that these are all the nodes reachable
+ * through this path but in the sense that, when you see one of these
+ * blocks, you know you've reached this path.
+ */
struct set *reachable;
+
+ /** Fork in the path, if reachable->entries > 1 */
struct path_fork *fork;
};
struct strct_lvl {
struct exec_node node;
+
+ /** Set of blocks at the current level */
struct set *blocks;
+
+ /** Path for the next level */
struct path out_path;
+
+ /** Reach set from inside_outside if irreducable */
struct set *reach;
+
+ /** True if a skip region starts with this level */
bool skip_start;
+
+ /** True if a skip region ends with this level */
bool skip_end;
+
+ /** True if this level is irreducable */
bool irreducible;
};