From c8afbb5c2927687c2d887e2a80ee0e826f22b186 Mon Sep 17 00:00:00 2001 From: Nick Gasson Date: Wed, 27 Mar 2024 10:09:51 +0000 Subject: [PATCH] Remove sem_int_lit helper function --- src/lower.c | 9 +++++++-- src/sem.c | 14 +------------- 2 files changed, 8 insertions(+), 15 deletions(-) diff --git a/src/lower.c b/src/lower.c index f388cb9a..9ef45aca 100644 --- a/src/lower.c +++ b/src/lower.c @@ -5057,8 +5057,13 @@ static vcode_reg_t lower_attr_ref(lower_unit_t *lu, tree_t expr) case ATTR_STABLE: case ATTR_QUIET: { - tree_t param = tree_value(tree_param(expr, 0)); - vcode_reg_t param_reg = lower_attr_param(lu, param, NULL, C_SIGNAL); + vcode_reg_t param_reg; + if (tree_params(expr) > 0) { + tree_t param = tree_value(tree_param(expr, 0)); + param_reg = lower_attr_param(lu, param, NULL, C_CONSTANT); + } + else + param_reg = emit_const(vtype_time(), 0); type_t name_type = tree_type(name); vcode_reg_t name_reg = lower_lvalue(lu, name), len_reg; diff --git a/src/sem.c b/src/sem.c index d8385090..1d687919 100644 --- a/src/sem.c +++ b/src/sem.c @@ -79,16 +79,6 @@ static diag_t *_pedantic_diag(const loc_t *loc, int *warned, bool *error) return NULL; } -static tree_t sem_int_lit(type_t type, int64_t i) -{ - tree_t f = tree_new(T_LITERAL); - tree_set_subkind(f, L_INT); - tree_set_ival(f, i); - tree_set_type(f, type); - - return f; -} - static bool sem_check_resolution(type_t type, tree_t res) { // Resolution functions are described in LRM 93 section 2.4 @@ -4214,19 +4204,17 @@ static bool sem_check_attr_ref(tree_t t, bool allow_range, nametab_t *tab) if (!sem_check_signal_attr(t)) return false; - type_t std_time = std_type(NULL, STD_TIME); if (tree_params(t) > 0) { tree_t value = tree_value(tree_param(t, 0)); if (!sem_check(value, tab)) return false; + type_t std_time = std_type(NULL, STD_TIME); if (!sem_check_type(value, std_time, tab)) sem_error(value, "attribute %s parameter must have type %s", istr(attr), type_pp(std_time)); } - else - add_param(t, sem_int_lit(std_time, 0), P_POS, NULL); return true; } -- 2.39.2