aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2026-08-01 16:05:51 +0200
committerEugen Wissner <belka@caraus.de>2026-08-01 16:05:51 +0200
commit71b3bbb7698b13b42c99a4ca66c27db4a6189ff8 (patch)
tree1fc6ed246ecc0cf561f38ad774a4815ba357ea7b /gcc
parent8539c10542a4be1e1127daea60bf1b1e4c37e092 (diff)
downloadelna-71b3bbb7698b13b42c99a4ca66c27db4a6189ff8.tar.gz
Enforce integral values in slice ranges
Diffstat (limited to 'gcc')
-rw-r--r--gcc/gcc/elna-tree.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/gcc/elna-tree.cc b/gcc/gcc/elna-tree.cc
index 55e359b..6aaf6f9 100644
--- a/gcc/gcc/elna-tree.cc
+++ b/gcc/gcc/elna-tree.cc
@@ -289,11 +289,19 @@ namespace elna::gcc
if (literal_value.is_signed())
{
- return build_int_cst(elna_int_type_node, literal_value.to<std::int32_t>());
+ if (auto converted = literal_value.to_signed())
+ {
+ return build_int_cst(elna_int_type_node, *converted);
+ }
+ return NULL_TREE;
}
else
{
- return build_int_cstu(elna_word_type_node, literal_value.to<std::uint32_t>());
+ if (auto converted = literal_value.to_unsigned())
+ {
+ return build_int_cstu(elna_word_type_node, *converted);
+ }
+ return NULL_TREE;
}
}
else if (std::holds_alternative<double>(constant_value))