From 65c84d3c06e3d94a5ad0f6da35f91b030c1e1385 Mon Sep 17 00:00:00 2001 From: Blebowski <34539154+Blebowski@users.noreply.github.com> Date: Sat, 5 Nov 2022 22:47:44 +0100 Subject: [PATCH] Remove statement labelling (#561) --- src/names.c | 7 ++----- src/parse.c | 14 ++++---------- src/simp.c | 8 ++++---- test/test_parse.c | 2 -- 4 files changed, 10 insertions(+), 21 deletions(-) diff --git a/src/names.c b/src/names.c index b2321716..8bb318ee 100644 --- a/src/names.c +++ b/src/names.c @@ -113,7 +113,6 @@ typedef struct _lazy_sym { typedef struct { int proc; int loop; - int stmt; } label_cnts_t; struct scope { @@ -1178,8 +1177,8 @@ ident_t get_implicit_label(tree_t t, nametab_t *tab) char buf[22]; switch (tree_kind(t)) { - case T_PROCESS: case T_CONCURRENT: + case T_PROCESS: cnt = &(tab->top_scope->lbl_cnts.proc); c = 'P'; break; @@ -1199,9 +1198,7 @@ ident_t get_implicit_label(tree_t t, nametab_t *tab) break; default: - cnt = &(tab->top_scope->lbl_cnts.stmt); - c = 'S'; - break; + return NULL; } checked_sprintf(buf, sizeof(buf), "_%c%d", c, (*cnt)++); diff --git a/src/parse.c b/src/parse.c index cfad00c5..8879aafd 100644 --- a/src/parse.c +++ b/src/parse.c @@ -8710,8 +8710,6 @@ static tree_t p_if_statement(ident_t label) EXTEND("if statement"); tree_t t = tree_new(T_IF); - ensure_labelled(t, label); - consume(tIF); tree_t c0 = tree_new(T_COND); @@ -9061,7 +9059,6 @@ static tree_t p_case_statement(ident_t label) tree_t value = p_expression(); tree_set_value(t, value); - ensure_labelled(t, label); solve_types(nametab, value, NULL); @@ -9266,13 +9263,15 @@ static tree_t p_component_instantiation_statement(ident_t label, tree_t name) if (label == NULL) { parse_error(CURRENT_LOC, "component instantiation statement must " "have a label"); - tree_set_ident(t, get_implicit_label(t, nametab)); + tree_set_ident(t, error_marker()); } sem_check(t, nametab); pop_scope(nametab); - insert_name(nametab, t, NULL); + if (label) + insert_name(nametab, t, NULL); + return t; } @@ -9318,8 +9317,6 @@ static void p_conditional_waveforms(tree_t stmt, tree_t target, tree_t s0) else s0 = NULL; - tree_set_ident(a, get_implicit_label(a, nametab)); - tree_set_loc(a, CURRENT_LOC); tree_set_loc(c, CURRENT_LOC); @@ -9349,7 +9346,6 @@ static tree_t p_conditional_signal_assignment(tree_t name) tree_t stmt = tree_new(T_COND_ASSIGN); tree_add_stmt(conc, stmt); - tree_set_ident(stmt, get_implicit_label(stmt, nametab)); tree_t target = p_target(name); tree_set_target(stmt, target); @@ -9414,7 +9410,6 @@ static void p_selected_waveforms(tree_t stmt, tree_t target, tree_t reject) tree_set_value(tree_assoc(stmt, i), a); tree_set_loc(a, CURRENT_LOC); - tree_set_ident(a, get_implicit_label(a, nametab)); sem_check(a, nametab); } while (optional(tCOMMA)); } @@ -9430,7 +9425,6 @@ static tree_t p_selected_signal_assignment(void) tree_t conc = tree_new(T_CONCURRENT); tree_t stmt = tree_new(T_SELECT); - tree_set_ident(stmt, get_implicit_label(stmt, nametab)); tree_add_stmt(conc, stmt); tree_t value = p_expression(); diff --git a/src/simp.c b/src/simp.c index 7d39ce8d..497c2d52 100644 --- a/src/simp.c +++ b/src/simp.c @@ -71,7 +71,8 @@ static tree_t simp_call_args(tree_t t) tree_t new = tree_new(tree_kind(t)); tree_set_loc(new, tree_loc(t)); - tree_set_ident(new, tree_ident(t)); + if (tree_has_ident(t)) + tree_set_ident(new, tree_ident(t)); tree_set_ref(new, tree_ref(t)); tree_kind_t kind = tree_kind(t); @@ -922,7 +923,8 @@ static tree_t simp_if(tree_t t) else { tree_t b = tree_new(T_SEQUENCE); tree_set_loc(b, tree_loc(t)); - tree_set_ident(b, tree_ident(t)); + if (tree_has_ident(t)) + tree_set_ident(b, tree_ident(t)); const int nstmts = tree_stmts(c0); for (int i = 0; i < nstmts; i++) @@ -1236,7 +1238,6 @@ static tree_t simp_cond_assign(tree_t t) else { tree_t s = tree_new(T_IF); tree_set_loc(s, tree_loc(t)); - tree_set_ident(s, tree_ident(t)); for (int i = 0; i < nconds; i++) tree_add_cond(s, tree_cond(t, i)); @@ -1252,7 +1253,6 @@ static tree_t simp_select(tree_t t) tree_t c = tree_new(T_CASE); tree_set_loc(c, tree_loc(t)); tree_set_value(c, tree_value(t)); - tree_set_ident(c, tree_ident(t)); const int nassocs = tree_assocs(t); for (int i = 0; i < nassocs; i++) diff --git a/test/test_parse.c b/test/test_parse.c index 22c3aa50..8f0ad32b 100644 --- a/test/test_parse.c +++ b/test/test_parse.c @@ -601,13 +601,11 @@ START_TEST(test_seq) fail_unless(tree_kind(s) == T_PCALL); fail_unless(tree_ident2(s) == ident_new("FOO")); fail_unless(tree_params(s) == 3); - fail_unless(tree_has_ident(s)); s = tree_stmt(p, 1); fail_unless(tree_kind(s) == T_PCALL); fail_unless(tree_ident2(s) == ident_new("BAR")); fail_unless(tree_params(s) == 0); - fail_unless(tree_has_ident(s)); // Case -- 2.39.2