diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-04-04 09:42:41 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-04-04 09:42:41 +0100 |
| commit | 3d4f48ccc6bcfe27bc7d433e1e5a90c52445586e (patch) | |
| tree | bdfdccbf4ae5786e65402dcd50d943c23bfaeb19 | |
| parent | 2d51958bf18599fb9d969018a7a27acef41ee223 (diff) | |
Use rust-native PatioLocalRef
| -rw-r--r-- | patio-to-cranelift/src/lib.rs | 32 |
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); |
