aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2020-01-04 18:04:12 +0000
committergingerBill <bill@gingerbill.org>2020-01-04 18:04:12 +0000
commit5c7d6fcfd08a6e99e6e493e7adc3ef51d10e2fcc (patch)
tree71f00a98bbfd5f43002d9e7fb65911a53590edaf /src
parent5ae924f9886b9bb922499fa1b964bad48363db08 (diff)
Improve minimum dependency for complex numbers and quaternion numbers.
Diffstat (limited to 'src')
-rw-r--r--src/check_expr.cpp16
-rw-r--r--src/checker.cpp10
2 files changed, 17 insertions, 9 deletions
diff --git a/src/check_expr.cpp b/src/check_expr.cpp
index f0353e25b..b7318ca1d 100644
--- a/src/check_expr.cpp
+++ b/src/check_expr.cpp
@@ -2668,6 +2668,22 @@ void check_binary_expr(CheckerContext *c, Operand *x, Ast *node, Type *type_hint
return;
}
+ if (op.kind == Token_Quo || op.kind == Token_QuoEq) {
+ Type *bt = base_type(x->type);
+ if (bt->kind == Type_Basic) switch (bt->Basic.kind) {
+ case Basic_complex64: add_package_dependency(c, "runtime", "quo_complex64"); break;
+ case Basic_complex128: add_package_dependency(c, "runtime", "quo_complex128"); break;
+ case Basic_quaternion128: add_package_dependency(c, "runtime", "quo_quaternion128"); break;
+ case Basic_quaternion256: add_package_dependency(c, "runtime", "quo_quaternion256"); break;
+ }
+ } else if (op.kind == Token_Mul || op.kind == Token_MulEq) {
+ Type *bt = base_type(x->type);
+ if (bt->kind == Type_Basic) switch (bt->Basic.kind) {
+ case Basic_quaternion128: add_package_dependency(c, "runtime", "mul_quaternion128"); break;
+ case Basic_quaternion256: add_package_dependency(c, "runtime", "mul_quaternion256"); break;
+ }
+ }
+
x->mode = Addressing_Value;
}
diff --git a/src/checker.cpp b/src/checker.cpp
index 9db6b94e9..a7570bd95 100644
--- a/src/checker.cpp
+++ b/src/checker.cpp
@@ -1665,12 +1665,10 @@ void generate_minimum_dependency_set(Checker *c, Entity *start) {
str_lit("mem_zero"),
str_lit("__init_context"),
- str_lit("default_assertion_failure_proc"),
str_lit("args__"),
str_lit("type_table"),
str_lit("__type_info_of"),
- str_lit("global_default_temp_allocator_data"),
str_lit("default_temp_allocator"),
str_lit("default_temp_allocator_init"),
str_lit("default_temp_allocator_destroy"),
@@ -1680,13 +1678,7 @@ void generate_minimum_dependency_set(Checker *c, Entity *start) {
str_lit("Source_Code_Location"),
str_lit("Context"),
- str_lit("quo_complex64"),
- str_lit("quo_complex128"),
- str_lit("mul_quaternion128"),
- str_lit("mul_quaternion256"),
- str_lit("quo_quaternion128"),
- str_lit("quo_quaternion256"),
- str_lit("cstring_to_string"),
+ str_lit("cstring_to_string"), // Is tihs needed?
str_lit("umodti3"),
str_lit("udivti3"),