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();
|
||||
|
||||
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,
|
||||
};
|
||||
|
||||
dbg!(&ast_module);
|
||||
|
||||
if errors.len() > 0 {
|
||||
// dbg!(&ast_module);
|
||||
return Ok(Err((
|
||||
|
@ -12,6 +12,7 @@ use std::{
|
||||
|
||||
use crate::{
|
||||
mir::{
|
||||
implement::TypeCategory,
|
||||
pass::{AssociatedFunctionKey, ScopeVariable},
|
||||
BinopDefinition, Block, CustomTypeKey, ExprKind, Expression, FunctionDefinition, FunctionDefinitionKind,
|
||||
IfExpression, Module, ReturnKind, StmtKind, TypeKind, VagueType, WhileStatement,
|
||||
@ -627,12 +628,18 @@ impl Expression {
|
||||
|
||||
if backing_var.is_some() {
|
||||
if let TypeKind::Borrow(inner, _) = type_kind {
|
||||
let ty_cat = inner.category();
|
||||
if let TypeKind::Borrow(..) = *inner.clone() {
|
||||
*type_kind = type_kind.unroll_borrow();
|
||||
let ExprKind::Borrow(val, _) = &first_param.0 else {
|
||||
panic!()
|
||||
};
|
||||
*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 {
|
||||
|
Loading…
Reference in New Issue
Block a user