diff options
| author | Rusty Wagner <rusty.wagner@gmail.com> | 2025-12-23 13:12:02 -0700 |
|---|---|---|
| committer | Rusty Wagner <rusty.wagner@gmail.com> | 2026-05-22 16:30:56 -0400 |
| commit | 8d621c51b2797fda7b1dc22243dde611cfc04f68 (patch) | |
| tree | ba5e6a90e644d21d13e75dabcbd0cc747444443a /rust/src/medium_level_il/operation.rs | |
| parent | 08e34ac325743085911f96b62c81d9a1f2127806 (diff) | |
Refactor calling conventions to support correct representation of structures
Diffstat (limited to 'rust/src/medium_level_il/operation.rs')
| -rw-r--r-- | rust/src/medium_level_il/operation.rs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/rust/src/medium_level_il/operation.rs b/rust/src/medium_level_il/operation.rs index a9a791b0..1886b3d0 100644 --- a/rust/src/medium_level_il/operation.rs +++ b/rust/src/medium_level_il/operation.rs @@ -641,6 +641,23 @@ pub struct VarOutput { pub dest: Variable, } +// VAR_OUTPUT_FIELD +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct VarOutputField { + pub dest: Variable, + pub offset: u64, +} + +// STORE_OUTPUT +#[derive(Debug, Copy, Clone)] +pub struct StoreOutput { + pub dest: MediumLevelExpressionIndex, +} +#[derive(Clone, Debug, PartialEq)] +pub struct LiftedStoreOutput { + pub dest: Box<MediumLevelILLiftedInstruction>, +} + // VAR_FIELD, ADDRESS_OF_FIELD #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)] pub struct Field { @@ -667,8 +684,42 @@ pub struct VarOutputSsa { pub dest: SSAVariable, } +// VAR_OUTPUT_SSA_FIELD +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct VarOutputSsaField { + pub dest: SSAVariable, + pub prev: SSAVariable, + pub offset: u64, +} + +// VAR_OUTPUT_ALIASED +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct VarOutputAliased { + pub dest: SSAVariable, + pub prev: SSAVariable, +} + +// VAR_OUTPUT_ALIASED_FIELD +#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)] +pub struct VarOutputAliasedField { + pub dest: SSAVariable, + pub prev: SSAVariable, + pub offset: u64, +} + // TRAP #[derive(Copy, Clone, Debug, Hash, PartialEq, Eq)] pub struct Trap { pub vector: u64, } + +// BLOCK_TO_EXPAND +#[derive(Debug, Copy, Clone)] +pub struct BlockToExpand { + pub first_operand: usize, + pub num_operands: usize, +} +#[derive(Clone, Debug, PartialEq)] +pub struct LiftedBlockToExpand { + pub exprs: Vec<MediumLevelILLiftedInstruction>, +} |
