nac3core: fix converting int to bool (#119)

escape-analysis
ychenfo 2021-11-30 03:02:26 +08:00
parent 681d85d3be
commit 0fe346106d
1 changed files with 7 additions and 10 deletions

View File

@ -1,7 +1,7 @@
use std::cell::RefCell;
use nac3parser::ast::fold::Fold;
use inkwell::FloatPredicate;
use inkwell::{FloatPredicate, IntPredicate};
use crate::{
symbol_resolver::SymbolValue,
@ -415,15 +415,12 @@ impl TopLevelComposer {
if ctx.unifier.unioned(arg_ty, boolean) {
Some(arg)
} else if ctx.unifier.unioned(arg_ty, int32) || ctx.unifier.unioned(arg_ty, int64) {
Some(
ctx.builder
.build_int_truncate(
arg.into_int_value(),
ctx.ctx.bool_type(),
"trunc",
)
.into(),
)
Some(ctx.builder.build_int_compare(
IntPredicate::NE,
ctx.ctx.i64_type().const_zero(),
arg.into_int_value(),
"bool",
).into())
} else if ctx.unifier.unioned(arg_ty, float) {
let val = ctx.builder.
build_float_compare(