aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-02-05 13:49:10 +0000
committergingerBill <bill@gingerbill.org>2024-02-05 13:49:10 +0000
commit27feb5998c5a86ffa5ce661313f8beae585804d8 (patch)
tree0804d600969f32586a32bb87cac07dac3364cdd6 /src
parente88db2818b1310173b6d4a49b847a983f5cbdcaa (diff)
Add require to 128-bit and f16 casts
Diffstat (limited to 'src')
-rw-r--r--src/check_expr.cpp19
-rw-r--r--src/checker.cpp42
2 files changed, 31 insertions, 30 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index 7049e5974..9b71208cd 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -3118,19 +3118,20 @@ gb_internal void check_cast(CheckerContext *c, Operand *x, Type *type) {
Type *src = core_type(x->type);
Type *dst = core_type(type);
if (src != dst) {
+ bool const REQUIRE = true;
if (is_type_integer_128bit(src) && is_type_float(dst)) {
- add_package_dependency(c, "runtime", "floattidf_unsigned");
- add_package_dependency(c, "runtime", "floattidf");
+ add_package_dependency(c, "runtime", "floattidf_unsigned", REQUIRE);
+ add_package_dependency(c, "runtime", "floattidf", REQUIRE);
} else if (is_type_integer_128bit(dst) && is_type_float(src)) {
- add_package_dependency(c, "runtime", "fixunsdfti");
- add_package_dependency(c, "runtime", "fixunsdfdi");
+ add_package_dependency(c, "runtime", "fixunsdfti", REQUIRE);
+ add_package_dependency(c, "runtime", "fixunsdfdi", REQUIRE);
} else if (src == t_f16 && is_type_float(dst)) {
- add_package_dependency(c, "runtime", "gnu_h2f_ieee");
- add_package_dependency(c, "runtime", "extendhfsf2");
+ add_package_dependency(c, "runtime", "gnu_h2f_ieee", REQUIRE);
+ add_package_dependency(c, "runtime", "extendhfsf2", REQUIRE);
} else if (is_type_float(dst) && dst == t_f16) {
- add_package_dependency(c, "runtime", "truncsfhf2");
- add_package_dependency(c, "runtime", "truncdfhf2");
- add_package_dependency(c, "runtime", "gnu_f2h_ieee");
+ add_package_dependency(c, "runtime", "truncsfhf2", REQUIRE);
+ add_package_dependency(c, "runtime", "truncdfhf2", REQUIRE);
+ add_package_dependency(c, "runtime", "gnu_f2h_ieee", REQUIRE);
}
}
}
diff --git a/src/checker.cpp b/src/checker.cpp
index 7d8f456df..8f1aa5336 100644
--- a/src/checker.cpp
+++ b/src/checker.cpp
@@ -2570,27 +2570,27 @@ gb_internal void generate_minimum_dependency_set(Checker *c, Entity *start) {
str_lit("memmove"),
);
- FORCE_ADD_RUNTIME_ENTITIES(is_arch_wasm() && !build_context.tilde_backend,
- // Extended data type internal procedures
- str_lit("umodti3"),
- str_lit("udivti3"),
- str_lit("modti3"),
- str_lit("divti3"),
- str_lit("fixdfti"),
- str_lit("fixunsdfti"),
- str_lit("fixunsdfdi"),
- str_lit("floattidf"),
- str_lit("floattidf_unsigned"),
- str_lit("truncsfhf2"),
- str_lit("truncdfhf2"),
- str_lit("gnu_h2f_ieee"),
- str_lit("gnu_f2h_ieee"),
- str_lit("extendhfsf2"),
-
- // WASM Specific
- str_lit("__ashlti3"),
- str_lit("__multi3"),
- );
+ // FORCE_ADD_RUNTIME_ENTITIES(is_arch_wasm() && !build_context.tilde_backend,
+ // // Extended data type internal procedures
+ // str_lit("umodti3"),
+ // str_lit("udivti3"),
+ // str_lit("modti3"),
+ // str_lit("divti3"),
+ // str_lit("fixdfti"),
+ // str_lit("fixunsdfti"),
+ // str_lit("fixunsdfdi"),
+ // str_lit("floattidf"),
+ // str_lit("floattidf_unsigned"),
+ // str_lit("truncsfhf2"),
+ // str_lit("truncdfhf2"),
+ // str_lit("gnu_h2f_ieee"),
+ // str_lit("gnu_f2h_ieee"),
+ // str_lit("extendhfsf2"),
+
+ // // WASM Specific
+ // str_lit("__ashlti3"),
+ // str_lit("__multi3"),
+ // );
FORCE_ADD_RUNTIME_ENTITIES(!build_context.no_rtti,
// Odin types