aboutsummaryrefslogtreecommitdiff
path: root/src/ir.cpp
diff options
context:
space:
mode:
authorVexu <git@vexu.eu>2020-05-12 00:24:09 +0300
committerVexu <git@vexu.eu>2020-05-12 00:24:09 +0300
commit0847b47bf83c699d27c903e51b20f863d47c5790 (patch)
tree1bd7f1b556f5cf016b64770e9e7c00047f8ece57 /src/ir.cpp
parent3e3c651b670fb45e714db1cfb32428c3ea3cd828 (diff)
downloadzig-0847b47bf83c699d27c903e51b20f863d47c5790.tar.gz
zig-0847b47bf83c699d27c903e51b20f863d47c5790.zip
fix `@intToFloat` on comptime_floats
Diffstat (limited to 'src/ir.cpp')
-rw-r--r--src/ir.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/ir.cpp b/src/ir.cpp
index b5c4212ca5..6bd4e9b805 100644
--- a/src/ir.cpp
+++ b/src/ir.cpp
@@ -12760,9 +12760,7 @@ static bool eval_const_expr_implicit_cast(IrAnalyze *ira, IrInst *source_instr,
const_val->type = new_type;
break;
case CastOpIntToFloat:
- {
- assert(new_type->id == ZigTypeIdFloat);
-
+ if (new_type->id == ZigTypeIdFloat) {
BigFloat bigfloat;
bigfloat_init_bigint(&bigfloat, &other_val->data.x_bigint);
switch (new_type->data.floating.bit_count) {
@@ -12783,9 +12781,13 @@ static bool eval_const_expr_implicit_cast(IrAnalyze *ira, IrInst *source_instr,
default:
zig_unreachable();
}
- const_val->special = ConstValSpecialStatic;
- break;
+ } else if (new_type->id == ZigTypeIdComptimeFloat) {
+ bigfloat_init_bigint(&const_val->data.x_bigfloat, &other_val->data.x_bigint);
+ } else {
+ zig_unreachable();
}
+ const_val->special = ConstValSpecialStatic;
+ break;
case CastOpFloatToInt:
float_init_bigint(&const_val->data.x_bigint, other_val);
if (new_type->id == ZigTypeIdInt) {