aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-04-04 09:42:41 +0100
committerMichael Williamson <mike@zwobble.org>2026-04-04 09:42:41 +0100
commit3d4f48ccc6bcfe27bc7d433e1e5a90c52445586e (patch)
treebdfdccbf4ae5786e65402dcd50d943c23bfaeb19
parent2d51958bf18599fb9d969018a7a27acef41ee223 (diff)
Use rust-native PatioLocalRef
-rw-r--r--patio-to-cranelift/src/lib.rs32
1 files changed, 18 insertions, 14 deletions
diff --git a/patio-to-cranelift/src/lib.rs b/patio-to-cranelift/src/lib.rs
index 27cca3bb..1b1da2d4 100644
--- a/patio-to-cranelift/src/lib.rs
+++ b/patio-to-cranelift/src/lib.rs
@@ -7,7 +7,7 @@ use crate::{
errors::CompileError,
patio::{
compilation_unit::{PatioLocal, PatioLocalType, PatioVisibility},
- operands::PatioOperand,
+ operands::{PatioLocalRef, PatioOperand},
types::{PatioDataLayout, PatioType},
values::PatioIntValue,
},
@@ -15,8 +15,8 @@ use crate::{
PatioBlock, PatioBoolToInt, PatioCall, PatioCompilationUnitElement,
PatioCompilationUnitElementValue, PatioFunctionDefinition, PatioIf, PatioInstruction,
PatioInstructionValue, PatioIntAdd, PatioIntEquals, PatioIntNotEqual, PatioIntSub,
- PatioIntToBool, PatioLocalRef, PatioLocalStore, PatioResume, PatioReturn, PatioReturnVoid,
- PatioVarLoad, PatioVarStore,
+ PatioIntToBool, PatioLocalStore, PatioResume, PatioReturn, PatioReturnVoid, PatioVarLoad,
+ PatioVarStore,
},
};
@@ -299,7 +299,7 @@ fn compile_bool_to_int(bool_to_int: PatioBoolToInt<'_>, context: &mut CompilerFu
.ins()
.uextend(cranelift_int_type(&context.target_triple), cranelift_value);
- def_destination(bool_to_int.destination(), cranelift_result, context)
+ def_destination(&bool_to_int.destination().into(), cranelift_result, context)
}
fn compile_call(call: PatioCall<'_>, context: &mut CompilerFunctionContext<'_>) {
@@ -365,7 +365,7 @@ fn compile_if(if_: PatioIf<'_>, context: &mut CompilerFunctionContext<'_>) {
.switch_to_block(cranelift_end_block);
for (destination, cranelift_end_param) in if_.destinations().iter().zip(cranelift_end_params) {
- def_destination(destination, cranelift_end_param, context);
+ def_destination(&destination.into(), cranelift_end_param, context);
}
}
@@ -377,7 +377,7 @@ fn compile_int_add(int_add: PatioIntAdd<'_>, context: &mut CompilerFunctionConte
.ins()
.iadd(cranelift_left, cranelift_right);
- def_destination(int_add.destination(), cranelift_result, context);
+ def_destination(&int_add.destination().into(), cranelift_result, context);
}
fn compile_int_equals(int_equals: PatioIntEquals<'_>, context: &mut CompilerFunctionContext<'_>) {
@@ -389,7 +389,7 @@ fn compile_int_equals(int_equals: PatioIntEquals<'_>, context: &mut CompilerFunc
cranelift_right,
);
- def_destination(int_equals.destination(), cranelift_result, context);
+ def_destination(&int_equals.destination().into(), cranelift_result, context);
}
fn compile_int_not_equal(
@@ -404,7 +404,11 @@ fn compile_int_not_equal(
cranelift_right,
);
- def_destination(int_not_equal.destination(), cranelift_result, context);
+ def_destination(
+ &int_not_equal.destination().into(),
+ cranelift_result,
+ context,
+ );
}
fn compile_int_sub(int_sub: PatioIntSub<'_>, context: &mut CompilerFunctionContext<'_>) {
@@ -415,7 +419,7 @@ fn compile_int_sub(int_sub: PatioIntSub<'_>, context: &mut CompilerFunctionConte
.ins()
.isub(cranelift_left, cranelift_right);
- def_destination(int_sub.destination(), cranelift_result, context);
+ def_destination(&int_sub.destination().into(), cranelift_result, context);
}
fn compile_int_to_bool(int_to_bool: PatioIntToBool<'_>, context: &mut CompilerFunctionContext<'_>) {
@@ -426,7 +430,7 @@ fn compile_int_to_bool(int_to_bool: PatioIntToBool<'_>, context: &mut CompilerFu
.ins()
.ireduce(CRANELIFT_BOOL_TYPE, cranelift_value);
- def_destination(int_to_bool.destination(), cranelift_result, context);
+ def_destination(&int_to_bool.destination().into(), cranelift_result, context);
}
fn compile_local_store(
@@ -434,7 +438,7 @@ fn compile_local_store(
context: &mut CompilerFunctionContext<'_>,
) {
let cranelift_value = compile_operand(&local_store.value().into(), context);
- def_destination(local_store.destination(), cranelift_value, context);
+ def_destination(&local_store.destination().into(), cranelift_value, context);
}
fn compile_resume(resume: PatioResume<'_>, context: &mut CompilerFunctionContext<'_>) {
@@ -464,7 +468,7 @@ fn compile_var_load(var_load: PatioVarLoad<'_>, context: &mut CompilerFunctionCo
stack_slot,
cranelift_codegen::ir::immediates::Offset32::new(0),
);
- def_destination(var_load.destination(), value, context);
+ def_destination(&var_load.destination().into(), value, context);
}
fn compile_var_store(var_store: PatioVarStore<'_>, context: &mut CompilerFunctionContext<'_>) {
@@ -565,11 +569,11 @@ fn cranelift_block_args(
}
fn def_destination(
- destination: PatioLocalRef<'_>,
+ destination: &PatioLocalRef,
value: cranelift_codegen::ir::Value,
context: &mut CompilerFunctionContext<'_>,
) {
- let cranelift_destination = context.var(destination.name());
+ let cranelift_destination = context.var(&destination.name);
context
.function_builder
.def_var(cranelift_destination, value);