aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2026-10-09 23:35:03 +0200
committerEugen Wissner <belka@caraus.de>2026-10-09 23:35:03 +0200
commitda1e84e33de1a9c2cc1745b8f42bc7f0cee8fc5c (patch)
tree6222ecd61c9d6e9d59c6169b99e4a24a5d347fea /gcc
parent134d3ac4caff6d87c79b0892e57073594cb0064c (diff)
downloadelna-da1e84e33de1a9c2cc1745b8f42bc7f0cee8fc5c.tar.gz
Add const sections
Diffstat (limited to 'gcc')
-rw-r--r--gcc/gcc/elna-generic.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/gcc/elna-generic.cc b/gcc/gcc/elna-generic.cc
index bf4784b..57c8c22 100644
--- a/gcc/gcc/elna-generic.cc
+++ b/gcc/gcc/elna-generic.cc
@@ -454,6 +454,16 @@ namespace elna::gcc
}
}
+ void generic_visitor::visit(boot::constant_declaration *declaration)
+ {
+ const std::string& name = declaration->identifier.name();
+ const std::shared_ptr<boot::info> symbol = this->bag.lookup(name);
+ const std::shared_ptr<boot::constant_info> constant_symbol = symbol->is_constant();
+ tree type = get_inner_alias(constant_symbol->symbol, this->symbols);
+ tree constant_tree = constant_to_tree(constant_symbol->value, this->symbols, type);
+ this->symbols->enter(name, constant_tree);
+ }
+
void generic_visitor::visit(boot::procedure_declaration *declaration)
{
tree fndecl = this->symbols->lookup(declaration->identifier.name());
@@ -470,6 +480,7 @@ namespace elna::gcc
{
this->symbols->enter(IDENTIFIER_POINTER(DECL_NAME(argument_chain)), argument_chain);
}
+ visit_all(this, declaration->body.value().constants);
visit_all(this, declaration->body.value().variables);
visit_statements(declaration->body.value().statements);
@@ -1134,6 +1145,7 @@ namespace elna::gcc
void generic_visitor::visit_block(boot::block& body)
{
this->bag.enter(body.symbols);
+ visit_all(this, body.constants);
visit_all(this, body.variables);
visit_statements(body.statements);
this->bag.leave();