Fix calling convention for integers/real-numbers
This commit is contained in:
parent
5d19d38682
commit
ae6796acfc
@ -491,7 +491,7 @@ impl IntrinsicFunction for IntrinsicLLVM {
|
|||||||
))
|
))
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
Ok(StackValue(StackValueKind::Literal(value), self.1))
|
Ok(StackValue(StackValueKind::Literal(value), self.1.clone()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,8 +134,6 @@ pub fn compile_module<'map>(
|
|||||||
is_main,
|
is_main,
|
||||||
};
|
};
|
||||||
|
|
||||||
dbg!(&ast_module);
|
|
||||||
|
|
||||||
if errors.len() > 0 {
|
if errors.len() > 0 {
|
||||||
// dbg!(&ast_module);
|
// dbg!(&ast_module);
|
||||||
return Ok(Err((
|
return Ok(Err((
|
||||||
|
@ -12,6 +12,7 @@ use std::{
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
mir::{
|
mir::{
|
||||||
|
implement::TypeCategory,
|
||||||
pass::{AssociatedFunctionKey, ScopeVariable},
|
pass::{AssociatedFunctionKey, ScopeVariable},
|
||||||
BinopDefinition, Block, CustomTypeKey, ExprKind, Expression, FunctionDefinition, FunctionDefinitionKind,
|
BinopDefinition, Block, CustomTypeKey, ExprKind, Expression, FunctionDefinition, FunctionDefinitionKind,
|
||||||
IfExpression, Module, ReturnKind, StmtKind, TypeKind, VagueType, WhileStatement,
|
IfExpression, Module, ReturnKind, StmtKind, TypeKind, VagueType, WhileStatement,
|
||||||
@ -627,12 +628,18 @@ impl Expression {
|
|||||||
|
|
||||||
if backing_var.is_some() {
|
if backing_var.is_some() {
|
||||||
if let TypeKind::Borrow(inner, _) = type_kind {
|
if let TypeKind::Borrow(inner, _) = type_kind {
|
||||||
|
let ty_cat = inner.category();
|
||||||
if let TypeKind::Borrow(..) = *inner.clone() {
|
if let TypeKind::Borrow(..) = *inner.clone() {
|
||||||
*type_kind = type_kind.unroll_borrow();
|
*type_kind = type_kind.unroll_borrow();
|
||||||
let ExprKind::Borrow(val, _) = &first_param.0 else {
|
let ExprKind::Borrow(val, _) = &first_param.0 else {
|
||||||
panic!()
|
panic!()
|
||||||
};
|
};
|
||||||
*first_param = *val.clone();
|
*first_param = *val.clone();
|
||||||
|
} else if ty_cat == TypeCategory::Integer || ty_cat == TypeCategory::Real {
|
||||||
|
if let ExprKind::Borrow(val, _) = &first_param.0 {
|
||||||
|
*first_param = *val.clone();
|
||||||
|
}
|
||||||
|
*type_kind = *inner.clone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user