- struct routes *routing = ralloc(b.shader, struct routes);
- routing->regular.reachable = _mesa_pointer_set_create(routing);
- _mesa_set_add(routing->regular.reachable, impl->end_block);
- struct set *empty = _mesa_pointer_set_create(routing);
- routing->regular.fork = NULL;
- routing->brk.reachable = empty;
- routing->brk.fork = NULL;
- routing->cont.reachable = empty;
- routing->cont.fork = NULL;
- nir_structurize(routing, &b,
- nir_cf_node_as_block(exec_node_data
- (nir_cf_node,
- exec_list_get_head(&cf_list.list),
- node)));
+ void *mem_ctx = ralloc_context(b.shader);
+
+ struct set *end_set = _mesa_pointer_set_create(mem_ctx);
+ _mesa_set_add(end_set, impl->end_block);
+ struct set *empty_set = _mesa_pointer_set_create(mem_ctx);
+
+ nir_cf_node *start_node =
+ exec_node_data(nir_cf_node, exec_list_get_head(&cf_list.list), node);
+ nir_block *start_block = nir_cf_node_as_block(start_node);
+
+ struct routes *routing = ralloc(mem_ctx, struct routes);
+ *routing = (struct routes) {
+ .regular.reachable = end_set,
+ .brk.reachable = empty_set,
+ .cont.reachable = empty_set,
+ };
+ nir_structurize(routing, &b, start_block, mem_ctx);