mie: ir: builder: support adding names to non-isolated op regions

This commit is contained in:
2026-01-23 23:19:23 +00:00
parent 593eda2797
commit ac96248d7e

View File

@@ -41,6 +41,23 @@ struct mie_ctx *mie_builder_get_ctx(struct mie_builder *builder)
return builder->b_ctx;
}
static struct mie_name_map *get_current_name_map(struct mie_builder *builder)
{
b_queue_entry *cur = b_queue_last(&builder->b_scope_stack);
while (cur) {
struct builder_scope *scope
= b_unbox(struct builder_scope, cur, s_entry);
if (scope->s_region && scope->s_region->r_names) {
return scope->s_region->r_names;
}
cur = b_queue_prev(cur);
}
return NULL;
}
struct mie_block *mie_builder_get_current_block(struct mie_builder *builder)
{
b_queue_entry *entry = b_queue_last(&builder->b_scope_stack);
@@ -163,9 +180,12 @@ struct mie_op *mie_builder_put_op(
enum mie_status mie_builder_put_name(
struct mie_builder *builder, struct mie_name *name, const char *hint)
{
struct mie_block *block = mie_builder_get_current_block(builder);
struct mie_region *scope = block->b_parent;
return mie_name_map_put(scope->r_names, name, hint, 0)
? MIE_SUCCESS
: MIE_ERR_NAME_EXISTS;
struct mie_name_map *map = get_current_name_map(builder);
if (!map) {
return MIE_ERR_BAD_STATE;
}
struct mie_name *result = mie_name_map_put(map, name, hint, 0);
return result ? MIE_SUCCESS : MIE_ERR_NAME_EXISTS;
}