diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2025-03-09 18:11:40 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2025-03-09 18:11:40 -0400 |
| commit | 46f9cebad12cc5f12a966c61b61ab4856e293475 (patch) | |
| tree | 483242454b26107c6e72bb63011a087aa4768dd7 /compile.c | |
| parent | 94ed28b4d19692cccc9da7640931ed45d31e47c6 (diff) | |
Add _Noreturn hint for Abort functions
Diffstat (limited to 'compile.c')
| -rw-r--r-- | compile.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -4082,6 +4082,8 @@ CORD compile_function(env_t *env, ast_t *ast, CORD *staticdefs) arg_signature = CORD_cat(arg_signature, ")"); CORD ret_type_code = compile_type(ret_t); + if (ret_t->tag == AbortType) + ret_type_code = CORD_all("_Noreturn ", ret_type_code); if (is_private) *staticdefs = CORD_all(*staticdefs, "static ", ret_type_code, " ", name_code, arg_signature, ";\n"); @@ -4497,6 +4499,8 @@ CORD compile_statement_namespace_header(env_t *env, ast_t *ast) type_t *ret_t = fndef->ret_type ? parse_type_ast(env, fndef->ret_type) : Type(VoidType); CORD ret_type_code = compile_type(ret_t); + if (ret_t->tag == AbortType) + ret_type_code = CORD_all("_Noreturn ", ret_type_code); CORD name = CORD_all(namespace_prefix(env, env->namespace), decl_name); if (env->namespace && env->namespace->parent && env->namespace->name && streq(decl_name, env->namespace->name)) name = CORD_asprintf("%r%ld", namespace_prefix(env, env->namespace), get_line_number(ast->file, ast->start)); |
