diff --git a/compiler/noirc_evaluator/src/ssa/opt/mem2reg.rs b/compiler/noirc_evaluator/src/ssa/opt/mem2reg.rs index 94aac58cfc1..0dff850648c 100644 --- a/compiler/noirc_evaluator/src/ssa/opt/mem2reg.rs +++ b/compiler/noirc_evaluator/src/ssa/opt/mem2reg.rs @@ -609,6 +609,19 @@ impl<'f> PerFunctionContext<'f> { expr, AliasSet::known_multiple(vec![*then_value, *else_value].into()), ); + + // `then_value` and `else_value` are now aliased by `result` + if let Some(then_expr) = references.expressions.get_mut(then_value) { + if let Some(then_aliases) = references.aliases.get_mut(then_expr) { + then_aliases.insert(result); + } + } + + if let Some(else_expr) = references.expressions.get_mut(else_value) { + if let Some(else_aliases) = references.aliases.get_mut(else_expr) { + else_aliases.insert(result); + } + } } } _ => (), @@ -1571,6 +1584,31 @@ mod tests { "); } + #[test] + fn if_aliases_each_branch() { + let src = " + brillig(inline) predicate_pure fn main f0 { + b0(v0: u1): + v1 = allocate -> &mut Field + store Field 0 at v1 + v3 = allocate -> &mut Field + store Field 1 at v3 + v5 = not v0 + v6 = if v0 then v1 else (if v5) v3 + store Field 9 at v6 + v8 = load v1 -> Field + constrain v8 == Field 9 + v9 = load v3 -> Field + constrain v9 == Field 1 + return + } + "; + + let ssa = Ssa::from_str(src).unwrap(); + let ssa = ssa.mem2reg(); + assert_normalized_ssa_equals(ssa, src); + } + #[test] fn reuses_last_load_from_single_predecessor_block() { let src = r#" diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap index db55cc773b8..7ccaf70e887 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_false_inliner_-9223372036854775808.snap @@ -40,9 +40,9 @@ expression: artifact "return value indices : [_0, _1]", "BRILLIG CALL func 0: inputs: [], outputs: [_0, _1]", "unconstrained func 0", - "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32839 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32837), size_address: Relative(1), offset_address: Relative(2) }, Call { location: 13 }, Call { location: 16 }, Mov { destination: Direct(32837), source: Relative(1) }, Mov { destination: Direct(32838), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 32837 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, Stop { return_data: HeapVector { pointer: Relative(3), size: Relative(4) } }, Const { destination: Direct(32835), bit_size: Field, value: 1 }, Const { destination: Direct(32836), bit_size: Integer(U1), value: 1 }, Return, Call { location: 52 }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 2 }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Field, value: -1 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(4), bit_size: Integer(U1), value: 0 }, Store { destination_pointer: Relative(3), source: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Direct(32835) }, Mov { destination: Relative(11), source: Direct(32836) }, Mov { destination: Relative(12), source: Direct(32836) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(4) }, Mov { destination: Relative(2), source: Relative(5) }, Return, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 57 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 52 }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(4) }, Load { destination: Relative(10), source_pointer: Relative(6) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 1 }, JumpIf { condition: Relative(12), location: 92 }, Jump { location: 68 }, BinaryIntOp { destination: Relative(12), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 72 }, Call { location: 102 }, Store { destination_pointer: Relative(6), source: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, ConditionalMov { destination: Relative(12), source_a: Relative(2), source_b: Relative(9), condition: Relative(10) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(12) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Relative(5) }, Mov { destination: Relative(19), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(14) }, Mov { destination: Relative(9), source: Relative(15) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 99 }, Load { destination: Relative(3), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(11) }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(3) }, Jump { location: 99 }, Mov { destination: Relative(1), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(8) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return]" + "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32839 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32837), size_address: Relative(1), offset_address: Relative(2) }, Call { location: 13 }, Call { location: 16 }, Mov { destination: Direct(32837), source: Relative(1) }, Mov { destination: Direct(32838), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 32837 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, Stop { return_data: HeapVector { pointer: Relative(3), size: Relative(4) } }, Const { destination: Direct(32835), bit_size: Field, value: 1 }, Const { destination: Direct(32836), bit_size: Integer(U1), value: 1 }, Return, Call { location: 52 }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 2 }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Field, value: -1 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(4), bit_size: Integer(U1), value: 0 }, Store { destination_pointer: Relative(3), source: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Direct(32835) }, Mov { destination: Relative(11), source: Direct(32836) }, Mov { destination: Relative(12), source: Direct(32836) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(4) }, Mov { destination: Relative(2), source: Relative(5) }, Return, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 57 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 52 }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 1 }, JumpIf { condition: Relative(11), location: 93 }, Jump { location: 68 }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 72 }, Call { location: 103 }, Store { destination_pointer: Relative(6), source: Relative(11) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Not { destination: Relative(10), source: Relative(4), bit_size: U1 }, ConditionalMov { destination: Relative(11), source_a: Relative(2), source_b: Relative(9), condition: Relative(4) }, Load { destination: Relative(2), source_pointer: Relative(9) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Relative(11) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(13) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(7), source: Relative(4) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 100 }, Load { destination: Relative(3), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(10) }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(3) }, Jump { location: 100 }, Mov { destination: Relative(1), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(8) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return]" ], - "debug_symbols": "ndTNioMwFAXgd8naRZJ782NfpZRibVoEUbE6MBTffa4e7bSLgcGNnxrP8SeYp7qmy3g/V82tfajD8akufVXX1f1ct2UxVG0jZ59KzxsT1MFkykSQL1gNjDpYwQICDBzwIIAI8gXSAC2EFkILoYXQQtJCQgAR5AusgQEWEGDgAFoYLYwWhxaPFo8WjxYvLSwwkIAT8oWggQEWEGDggNzWCwFEkC9EDQywgAADB9AS0RLRkksgCBKIAgMJxGnK1DaZ56FPaZ7Lt9mVOe+KPjWDOjRjXWfqq6jH5aJHVzSLQ9HLqM5Uaq6iFN6qOs17U/ab1n9HjQ1r2Nj4irv/5znf8s7syRNv+dzuyBPTmifPO/Js/Zpn9nvybvt+zu55f4pme/646/1DeOXpI3+So6Ks+o/1Ypqb+qq41Gk9vI1N+TY6fHfbyLbedH1bpuvYp7npbdGR7dHZzIWTrDnycxyNtpnRfJrmm/8A", + "debug_symbols": "ndTLioMwGAXgd8naRZI/N/sqpRRr0yIElVQHhuK7z69HO+1iYHDjp8ZzvATzFNd4Ge/npr11D3E4PsUlNyk193Pq6mpoupbPPoWcN8qLgyqECqBc0BIocdCMBgQMsMABDwIoF0gCtBBaCC2EFkILcQsxHgRQLhgJFNCAgAEWoMWgxaDFosWhxaHFocVxi2EM4IBlygUvgQIaEDDAAgf4to4JoFwIEiigAQEDLHAALQEtAS0lBzzDgcBYwIEwTYXY5vQ85BjnKX2bZJ76vsqxHcShHVMqxFeVxuWiR1+1i0OVeVQWIrZXlgtvTYrz3lT8puXfUaX9GlY6vOL2/3lTbnmr9uTJbPlS78iToTVPzuzIG+3WvDFuT95u38/qPe9PQW3PH3a9v/evPH3kT3xU1U3+WDamuSk31SXF9fA2tvXb6PDdbyPbstPnro7XMce56W3t4e3R6sL6Ey89/I8claRCSXua5pv/AA==", "file_map": { "50": { "source": "global G_A: (Field, bool, bool) = (1, true, true);\nunconstrained fn main() -> pub (Field, bool) {\n let mut ctx_limit: u32 = 2;\n func_5(((&mut [-1]), (&mut false)), G_A, (&mut ctx_limit))\n}\nunconstrained fn func_5(\n a: (&mut [Field; 1], &mut bool),\n mut c: (Field, bool, bool),\n ctx_limit: &mut u32,\n) -> (Field, bool) {\n if ((*ctx_limit) == 0_u32) {\n (a.0[0], *a.1)\n } else {\n *ctx_limit = ((*ctx_limit) - 1_u32);\n func_5(if (*a.1) { a } else { (a.0, (&mut c.1)) }, c, ctx_limit)\n }\n}\n", diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_false_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_false_inliner_0.snap index db55cc773b8..7ccaf70e887 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_false_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_false_inliner_0.snap @@ -40,9 +40,9 @@ expression: artifact "return value indices : [_0, _1]", "BRILLIG CALL func 0: inputs: [], outputs: [_0, _1]", "unconstrained func 0", - "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32839 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32837), size_address: Relative(1), offset_address: Relative(2) }, Call { location: 13 }, Call { location: 16 }, Mov { destination: Direct(32837), source: Relative(1) }, Mov { destination: Direct(32838), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 32837 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, Stop { return_data: HeapVector { pointer: Relative(3), size: Relative(4) } }, Const { destination: Direct(32835), bit_size: Field, value: 1 }, Const { destination: Direct(32836), bit_size: Integer(U1), value: 1 }, Return, Call { location: 52 }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 2 }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Field, value: -1 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(4), bit_size: Integer(U1), value: 0 }, Store { destination_pointer: Relative(3), source: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Direct(32835) }, Mov { destination: Relative(11), source: Direct(32836) }, Mov { destination: Relative(12), source: Direct(32836) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(4) }, Mov { destination: Relative(2), source: Relative(5) }, Return, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 57 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 52 }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(4) }, Load { destination: Relative(10), source_pointer: Relative(6) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 1 }, JumpIf { condition: Relative(12), location: 92 }, Jump { location: 68 }, BinaryIntOp { destination: Relative(12), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 72 }, Call { location: 102 }, Store { destination_pointer: Relative(6), source: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, ConditionalMov { destination: Relative(12), source_a: Relative(2), source_b: Relative(9), condition: Relative(10) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(12) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Relative(5) }, Mov { destination: Relative(19), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(14) }, Mov { destination: Relative(9), source: Relative(15) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 99 }, Load { destination: Relative(3), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(11) }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(3) }, Jump { location: 99 }, Mov { destination: Relative(1), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(8) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return]" + "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32839 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32837), size_address: Relative(1), offset_address: Relative(2) }, Call { location: 13 }, Call { location: 16 }, Mov { destination: Direct(32837), source: Relative(1) }, Mov { destination: Direct(32838), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 32837 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, Stop { return_data: HeapVector { pointer: Relative(3), size: Relative(4) } }, Const { destination: Direct(32835), bit_size: Field, value: 1 }, Const { destination: Direct(32836), bit_size: Integer(U1), value: 1 }, Return, Call { location: 52 }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 2 }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Field, value: -1 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(4), bit_size: Integer(U1), value: 0 }, Store { destination_pointer: Relative(3), source: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Direct(32835) }, Mov { destination: Relative(11), source: Direct(32836) }, Mov { destination: Relative(12), source: Direct(32836) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(4) }, Mov { destination: Relative(2), source: Relative(5) }, Return, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 57 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 52 }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 1 }, JumpIf { condition: Relative(11), location: 93 }, Jump { location: 68 }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 72 }, Call { location: 103 }, Store { destination_pointer: Relative(6), source: Relative(11) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Not { destination: Relative(10), source: Relative(4), bit_size: U1 }, ConditionalMov { destination: Relative(11), source_a: Relative(2), source_b: Relative(9), condition: Relative(4) }, Load { destination: Relative(2), source_pointer: Relative(9) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Relative(11) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(13) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(7), source: Relative(4) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 100 }, Load { destination: Relative(3), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(10) }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(3) }, Jump { location: 100 }, Mov { destination: Relative(1), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(8) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return]" ], - "debug_symbols": "ndTNioMwFAXgd8naRZJ782NfpZRibVoEUbE6MBTffa4e7bSLgcGNnxrP8SeYp7qmy3g/V82tfajD8akufVXX1f1ct2UxVG0jZ59KzxsT1MFkykSQL1gNjDpYwQICDBzwIIAI8gXSAC2EFkILoYXQQtJCQgAR5AusgQEWEGDgAFoYLYwWhxaPFo8WjxYvLSwwkIAT8oWggQEWEGDggNzWCwFEkC9EDQywgAADB9AS0RLRkksgCBKIAgMJxGnK1DaZ56FPaZ7Lt9mVOe+KPjWDOjRjXWfqq6jH5aJHVzSLQ9HLqM5Uaq6iFN6qOs17U/ab1n9HjQ1r2Nj4irv/5znf8s7syRNv+dzuyBPTmifPO/Js/Zpn9nvybvt+zu55f4pme/646/1DeOXpI3+So6Ks+o/1Ypqb+qq41Gk9vI1N+TY6fHfbyLbedH1bpuvYp7npbdGR7dHZzIWTrDnycxyNtpnRfJrmm/8A", + "debug_symbols": "ndTLioMwGAXgd8naRZI/N/sqpRRr0yIElVQHhuK7z69HO+1iYHDjp8ZzvATzFNd4Ge/npr11D3E4PsUlNyk193Pq6mpoupbPPoWcN8qLgyqECqBc0BIocdCMBgQMsMABDwIoF0gCtBBaCC2EFkILcQsxHgRQLhgJFNCAgAEWoMWgxaDFosWhxaHFocVxi2EM4IBlygUvgQIaEDDAAgf4to4JoFwIEiigAQEDLHAALQEtAS0lBzzDgcBYwIEwTYXY5vQ85BjnKX2bZJ76vsqxHcShHVMqxFeVxuWiR1+1i0OVeVQWIrZXlgtvTYrz3lT8puXfUaX9GlY6vOL2/3lTbnmr9uTJbPlS78iToTVPzuzIG+3WvDFuT95u38/qPe9PQW3PH3a9v/evPH3kT3xU1U3+WDamuSk31SXF9fA2tvXb6PDdbyPbstPnro7XMce56W3t4e3R6sL6Ey89/I8claRCSXua5pv/AA==", "file_map": { "50": { "source": "global G_A: (Field, bool, bool) = (1, true, true);\nunconstrained fn main() -> pub (Field, bool) {\n let mut ctx_limit: u32 = 2;\n func_5(((&mut [-1]), (&mut false)), G_A, (&mut ctx_limit))\n}\nunconstrained fn func_5(\n a: (&mut [Field; 1], &mut bool),\n mut c: (Field, bool, bool),\n ctx_limit: &mut u32,\n) -> (Field, bool) {\n if ((*ctx_limit) == 0_u32) {\n (a.0[0], *a.1)\n } else {\n *ctx_limit = ((*ctx_limit) - 1_u32);\n func_5(if (*a.1) { a } else { (a.0, (&mut c.1)) }, c, ctx_limit)\n }\n}\n", diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_false_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_false_inliner_9223372036854775807.snap index db55cc773b8..7ccaf70e887 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_false_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_false_inliner_9223372036854775807.snap @@ -40,9 +40,9 @@ expression: artifact "return value indices : [_0, _1]", "BRILLIG CALL func 0: inputs: [], outputs: [_0, _1]", "unconstrained func 0", - "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32839 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32837), size_address: Relative(1), offset_address: Relative(2) }, Call { location: 13 }, Call { location: 16 }, Mov { destination: Direct(32837), source: Relative(1) }, Mov { destination: Direct(32838), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 32837 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, Stop { return_data: HeapVector { pointer: Relative(3), size: Relative(4) } }, Const { destination: Direct(32835), bit_size: Field, value: 1 }, Const { destination: Direct(32836), bit_size: Integer(U1), value: 1 }, Return, Call { location: 52 }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 2 }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Field, value: -1 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(4), bit_size: Integer(U1), value: 0 }, Store { destination_pointer: Relative(3), source: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Direct(32835) }, Mov { destination: Relative(11), source: Direct(32836) }, Mov { destination: Relative(12), source: Direct(32836) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(4) }, Mov { destination: Relative(2), source: Relative(5) }, Return, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 57 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 52 }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(4) }, Load { destination: Relative(10), source_pointer: Relative(6) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 1 }, JumpIf { condition: Relative(12), location: 92 }, Jump { location: 68 }, BinaryIntOp { destination: Relative(12), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 72 }, Call { location: 102 }, Store { destination_pointer: Relative(6), source: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, ConditionalMov { destination: Relative(12), source_a: Relative(2), source_b: Relative(9), condition: Relative(10) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(12) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Relative(5) }, Mov { destination: Relative(19), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(14) }, Mov { destination: Relative(9), source: Relative(15) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 99 }, Load { destination: Relative(3), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(11) }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(3) }, Jump { location: 99 }, Mov { destination: Relative(1), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(8) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return]" + "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32839 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32837), size_address: Relative(1), offset_address: Relative(2) }, Call { location: 13 }, Call { location: 16 }, Mov { destination: Direct(32837), source: Relative(1) }, Mov { destination: Direct(32838), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 32837 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, Stop { return_data: HeapVector { pointer: Relative(3), size: Relative(4) } }, Const { destination: Direct(32835), bit_size: Field, value: 1 }, Const { destination: Direct(32836), bit_size: Integer(U1), value: 1 }, Return, Call { location: 52 }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 2 }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Field, value: -1 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(4), bit_size: Integer(U1), value: 0 }, Store { destination_pointer: Relative(3), source: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Direct(32835) }, Mov { destination: Relative(11), source: Direct(32836) }, Mov { destination: Relative(12), source: Direct(32836) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(4) }, Mov { destination: Relative(2), source: Relative(5) }, Return, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 57 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 52 }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 1 }, JumpIf { condition: Relative(11), location: 93 }, Jump { location: 68 }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 72 }, Call { location: 103 }, Store { destination_pointer: Relative(6), source: Relative(11) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Not { destination: Relative(10), source: Relative(4), bit_size: U1 }, ConditionalMov { destination: Relative(11), source_a: Relative(2), source_b: Relative(9), condition: Relative(4) }, Load { destination: Relative(2), source_pointer: Relative(9) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Relative(11) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(13) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(7), source: Relative(4) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 100 }, Load { destination: Relative(3), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(10) }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(3) }, Jump { location: 100 }, Mov { destination: Relative(1), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(8) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return]" ], - "debug_symbols": "ndTNioMwFAXgd8naRZJ782NfpZRibVoEUbE6MBTffa4e7bSLgcGNnxrP8SeYp7qmy3g/V82tfajD8akufVXX1f1ct2UxVG0jZ59KzxsT1MFkykSQL1gNjDpYwQICDBzwIIAI8gXSAC2EFkILoYXQQtJCQgAR5AusgQEWEGDgAFoYLYwWhxaPFo8WjxYvLSwwkIAT8oWggQEWEGDggNzWCwFEkC9EDQywgAADB9AS0RLRkksgCBKIAgMJxGnK1DaZ56FPaZ7Lt9mVOe+KPjWDOjRjXWfqq6jH5aJHVzSLQ9HLqM5Uaq6iFN6qOs17U/ab1n9HjQ1r2Nj4irv/5znf8s7syRNv+dzuyBPTmifPO/Js/Zpn9nvybvt+zu55f4pme/646/1DeOXpI3+So6Ks+o/1Ypqb+qq41Gk9vI1N+TY6fHfbyLbedH1bpuvYp7npbdGR7dHZzIWTrDnycxyNtpnRfJrmm/8A", + "debug_symbols": "ndTLioMwGAXgd8naRZI/N/sqpRRr0yIElVQHhuK7z69HO+1iYHDjp8ZzvATzFNd4Ge/npr11D3E4PsUlNyk193Pq6mpoupbPPoWcN8qLgyqECqBc0BIocdCMBgQMsMABDwIoF0gCtBBaCC2EFkILcQsxHgRQLhgJFNCAgAEWoMWgxaDFosWhxaHFocVxi2EM4IBlygUvgQIaEDDAAgf4to4JoFwIEiigAQEDLHAALQEtAS0lBzzDgcBYwIEwTYXY5vQ85BjnKX2bZJ76vsqxHcShHVMqxFeVxuWiR1+1i0OVeVQWIrZXlgtvTYrz3lT8puXfUaX9GlY6vOL2/3lTbnmr9uTJbPlS78iToTVPzuzIG+3WvDFuT95u38/qPe9PQW3PH3a9v/evPH3kT3xU1U3+WDamuSk31SXF9fA2tvXb6PDdbyPbstPnro7XMce56W3t4e3R6sL6Ey89/I8claRCSXua5pv/AA==", "file_map": { "50": { "source": "global G_A: (Field, bool, bool) = (1, true, true);\nunconstrained fn main() -> pub (Field, bool) {\n let mut ctx_limit: u32 = 2;\n func_5(((&mut [-1]), (&mut false)), G_A, (&mut ctx_limit))\n}\nunconstrained fn func_5(\n a: (&mut [Field; 1], &mut bool),\n mut c: (Field, bool, bool),\n ctx_limit: &mut u32,\n) -> (Field, bool) {\n if ((*ctx_limit) == 0_u32) {\n (a.0[0], *a.1)\n } else {\n *ctx_limit = ((*ctx_limit) - 1_u32);\n func_5(if (*a.1) { a } else { (a.0, (&mut c.1)) }, c, ctx_limit)\n }\n}\n", diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap b/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap index db55cc773b8..7ccaf70e887 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_true_inliner_-9223372036854775808.snap @@ -40,9 +40,9 @@ expression: artifact "return value indices : [_0, _1]", "BRILLIG CALL func 0: inputs: [], outputs: [_0, _1]", "unconstrained func 0", - "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32839 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32837), size_address: Relative(1), offset_address: Relative(2) }, Call { location: 13 }, Call { location: 16 }, Mov { destination: Direct(32837), source: Relative(1) }, Mov { destination: Direct(32838), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 32837 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, Stop { return_data: HeapVector { pointer: Relative(3), size: Relative(4) } }, Const { destination: Direct(32835), bit_size: Field, value: 1 }, Const { destination: Direct(32836), bit_size: Integer(U1), value: 1 }, Return, Call { location: 52 }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 2 }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Field, value: -1 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(4), bit_size: Integer(U1), value: 0 }, Store { destination_pointer: Relative(3), source: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Direct(32835) }, Mov { destination: Relative(11), source: Direct(32836) }, Mov { destination: Relative(12), source: Direct(32836) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(4) }, Mov { destination: Relative(2), source: Relative(5) }, Return, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 57 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 52 }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(4) }, Load { destination: Relative(10), source_pointer: Relative(6) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 1 }, JumpIf { condition: Relative(12), location: 92 }, Jump { location: 68 }, BinaryIntOp { destination: Relative(12), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 72 }, Call { location: 102 }, Store { destination_pointer: Relative(6), source: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, ConditionalMov { destination: Relative(12), source_a: Relative(2), source_b: Relative(9), condition: Relative(10) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(12) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Relative(5) }, Mov { destination: Relative(19), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(14) }, Mov { destination: Relative(9), source: Relative(15) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 99 }, Load { destination: Relative(3), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(11) }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(3) }, Jump { location: 99 }, Mov { destination: Relative(1), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(8) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return]" + "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32839 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32837), size_address: Relative(1), offset_address: Relative(2) }, Call { location: 13 }, Call { location: 16 }, Mov { destination: Direct(32837), source: Relative(1) }, Mov { destination: Direct(32838), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 32837 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, Stop { return_data: HeapVector { pointer: Relative(3), size: Relative(4) } }, Const { destination: Direct(32835), bit_size: Field, value: 1 }, Const { destination: Direct(32836), bit_size: Integer(U1), value: 1 }, Return, Call { location: 52 }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 2 }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Field, value: -1 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(4), bit_size: Integer(U1), value: 0 }, Store { destination_pointer: Relative(3), source: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Direct(32835) }, Mov { destination: Relative(11), source: Direct(32836) }, Mov { destination: Relative(12), source: Direct(32836) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(4) }, Mov { destination: Relative(2), source: Relative(5) }, Return, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 57 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 52 }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 1 }, JumpIf { condition: Relative(11), location: 93 }, Jump { location: 68 }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 72 }, Call { location: 103 }, Store { destination_pointer: Relative(6), source: Relative(11) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Not { destination: Relative(10), source: Relative(4), bit_size: U1 }, ConditionalMov { destination: Relative(11), source_a: Relative(2), source_b: Relative(9), condition: Relative(4) }, Load { destination: Relative(2), source_pointer: Relative(9) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Relative(11) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(13) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(7), source: Relative(4) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 100 }, Load { destination: Relative(3), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(10) }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(3) }, Jump { location: 100 }, Mov { destination: Relative(1), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(8) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return]" ], - "debug_symbols": "ndTNioMwFAXgd8naRZJ782NfpZRibVoEUbE6MBTffa4e7bSLgcGNnxrP8SeYp7qmy3g/V82tfajD8akufVXX1f1ct2UxVG0jZ59KzxsT1MFkykSQL1gNjDpYwQICDBzwIIAI8gXSAC2EFkILoYXQQtJCQgAR5AusgQEWEGDgAFoYLYwWhxaPFo8WjxYvLSwwkIAT8oWggQEWEGDggNzWCwFEkC9EDQywgAADB9AS0RLRkksgCBKIAgMJxGnK1DaZ56FPaZ7Lt9mVOe+KPjWDOjRjXWfqq6jH5aJHVzSLQ9HLqM5Uaq6iFN6qOs17U/ab1n9HjQ1r2Nj4irv/5znf8s7syRNv+dzuyBPTmifPO/Js/Zpn9nvybvt+zu55f4pme/646/1DeOXpI3+So6Ks+o/1Ypqb+qq41Gk9vI1N+TY6fHfbyLbedH1bpuvYp7npbdGR7dHZzIWTrDnycxyNtpnRfJrmm/8A", + "debug_symbols": "ndTLioMwGAXgd8naRZI/N/sqpRRr0yIElVQHhuK7z69HO+1iYHDjp8ZzvATzFNd4Ge/npr11D3E4PsUlNyk193Pq6mpoupbPPoWcN8qLgyqECqBc0BIocdCMBgQMsMABDwIoF0gCtBBaCC2EFkILcQsxHgRQLhgJFNCAgAEWoMWgxaDFosWhxaHFocVxi2EM4IBlygUvgQIaEDDAAgf4to4JoFwIEiigAQEDLHAALQEtAS0lBzzDgcBYwIEwTYXY5vQ85BjnKX2bZJ76vsqxHcShHVMqxFeVxuWiR1+1i0OVeVQWIrZXlgtvTYrz3lT8puXfUaX9GlY6vOL2/3lTbnmr9uTJbPlS78iToTVPzuzIG+3WvDFuT95u38/qPe9PQW3PH3a9v/evPH3kT3xU1U3+WDamuSk31SXF9fA2tvXb6PDdbyPbstPnro7XMce56W3t4e3R6sL6Ey89/I8claRCSXua5pv/AA==", "file_map": { "50": { "source": "global G_A: (Field, bool, bool) = (1, true, true);\nunconstrained fn main() -> pub (Field, bool) {\n let mut ctx_limit: u32 = 2;\n func_5(((&mut [-1]), (&mut false)), G_A, (&mut ctx_limit))\n}\nunconstrained fn func_5(\n a: (&mut [Field; 1], &mut bool),\n mut c: (Field, bool, bool),\n ctx_limit: &mut u32,\n) -> (Field, bool) {\n if ((*ctx_limit) == 0_u32) {\n (a.0[0], *a.1)\n } else {\n *ctx_limit = ((*ctx_limit) - 1_u32);\n func_5(if (*a.1) { a } else { (a.0, (&mut c.1)) }, c, ctx_limit)\n }\n}\n", diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_true_inliner_0.snap b/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_true_inliner_0.snap index db55cc773b8..7ccaf70e887 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_true_inliner_0.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_true_inliner_0.snap @@ -40,9 +40,9 @@ expression: artifact "return value indices : [_0, _1]", "BRILLIG CALL func 0: inputs: [], outputs: [_0, _1]", "unconstrained func 0", - "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32839 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32837), size_address: Relative(1), offset_address: Relative(2) }, Call { location: 13 }, Call { location: 16 }, Mov { destination: Direct(32837), source: Relative(1) }, Mov { destination: Direct(32838), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 32837 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, Stop { return_data: HeapVector { pointer: Relative(3), size: Relative(4) } }, Const { destination: Direct(32835), bit_size: Field, value: 1 }, Const { destination: Direct(32836), bit_size: Integer(U1), value: 1 }, Return, Call { location: 52 }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 2 }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Field, value: -1 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(4), bit_size: Integer(U1), value: 0 }, Store { destination_pointer: Relative(3), source: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Direct(32835) }, Mov { destination: Relative(11), source: Direct(32836) }, Mov { destination: Relative(12), source: Direct(32836) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(4) }, Mov { destination: Relative(2), source: Relative(5) }, Return, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 57 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 52 }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(4) }, Load { destination: Relative(10), source_pointer: Relative(6) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 1 }, JumpIf { condition: Relative(12), location: 92 }, Jump { location: 68 }, BinaryIntOp { destination: Relative(12), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 72 }, Call { location: 102 }, Store { destination_pointer: Relative(6), source: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, ConditionalMov { destination: Relative(12), source_a: Relative(2), source_b: Relative(9), condition: Relative(10) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(12) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Relative(5) }, Mov { destination: Relative(19), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(14) }, Mov { destination: Relative(9), source: Relative(15) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 99 }, Load { destination: Relative(3), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(11) }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(3) }, Jump { location: 99 }, Mov { destination: Relative(1), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(8) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return]" + "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32839 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32837), size_address: Relative(1), offset_address: Relative(2) }, Call { location: 13 }, Call { location: 16 }, Mov { destination: Direct(32837), source: Relative(1) }, Mov { destination: Direct(32838), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 32837 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, Stop { return_data: HeapVector { pointer: Relative(3), size: Relative(4) } }, Const { destination: Direct(32835), bit_size: Field, value: 1 }, Const { destination: Direct(32836), bit_size: Integer(U1), value: 1 }, Return, Call { location: 52 }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 2 }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Field, value: -1 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(4), bit_size: Integer(U1), value: 0 }, Store { destination_pointer: Relative(3), source: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Direct(32835) }, Mov { destination: Relative(11), source: Direct(32836) }, Mov { destination: Relative(12), source: Direct(32836) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(4) }, Mov { destination: Relative(2), source: Relative(5) }, Return, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 57 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 52 }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 1 }, JumpIf { condition: Relative(11), location: 93 }, Jump { location: 68 }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 72 }, Call { location: 103 }, Store { destination_pointer: Relative(6), source: Relative(11) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Not { destination: Relative(10), source: Relative(4), bit_size: U1 }, ConditionalMov { destination: Relative(11), source_a: Relative(2), source_b: Relative(9), condition: Relative(4) }, Load { destination: Relative(2), source_pointer: Relative(9) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Relative(11) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(13) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(7), source: Relative(4) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 100 }, Load { destination: Relative(3), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(10) }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(3) }, Jump { location: 100 }, Mov { destination: Relative(1), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(8) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return]" ], - "debug_symbols": "ndTNioMwFAXgd8naRZJ782NfpZRibVoEUbE6MBTffa4e7bSLgcGNnxrP8SeYp7qmy3g/V82tfajD8akufVXX1f1ct2UxVG0jZ59KzxsT1MFkykSQL1gNjDpYwQICDBzwIIAI8gXSAC2EFkILoYXQQtJCQgAR5AusgQEWEGDgAFoYLYwWhxaPFo8WjxYvLSwwkIAT8oWggQEWEGDggNzWCwFEkC9EDQywgAADB9AS0RLRkksgCBKIAgMJxGnK1DaZ56FPaZ7Lt9mVOe+KPjWDOjRjXWfqq6jH5aJHVzSLQ9HLqM5Uaq6iFN6qOs17U/ab1n9HjQ1r2Nj4irv/5znf8s7syRNv+dzuyBPTmifPO/Js/Zpn9nvybvt+zu55f4pme/646/1DeOXpI3+So6Ks+o/1Ypqb+qq41Gk9vI1N+TY6fHfbyLbedH1bpuvYp7npbdGR7dHZzIWTrDnycxyNtpnRfJrmm/8A", + "debug_symbols": "ndTLioMwGAXgd8naRZI/N/sqpRRr0yIElVQHhuK7z69HO+1iYHDjp8ZzvATzFNd4Ge/npr11D3E4PsUlNyk193Pq6mpoupbPPoWcN8qLgyqECqBc0BIocdCMBgQMsMABDwIoF0gCtBBaCC2EFkILcQsxHgRQLhgJFNCAgAEWoMWgxaDFosWhxaHFocVxi2EM4IBlygUvgQIaEDDAAgf4to4JoFwIEiigAQEDLHAALQEtAS0lBzzDgcBYwIEwTYXY5vQ85BjnKX2bZJ76vsqxHcShHVMqxFeVxuWiR1+1i0OVeVQWIrZXlgtvTYrz3lT8puXfUaX9GlY6vOL2/3lTbnmr9uTJbPlS78iToTVPzuzIG+3WvDFuT95u38/qPe9PQW3PH3a9v/evPH3kT3xU1U3+WDamuSk31SXF9fA2tvXb6PDdbyPbstPnro7XMce56W3t4e3R6sL6Ey89/I8claRCSXua5pv/AA==", "file_map": { "50": { "source": "global G_A: (Field, bool, bool) = (1, true, true);\nunconstrained fn main() -> pub (Field, bool) {\n let mut ctx_limit: u32 = 2;\n func_5(((&mut [-1]), (&mut false)), G_A, (&mut ctx_limit))\n}\nunconstrained fn func_5(\n a: (&mut [Field; 1], &mut bool),\n mut c: (Field, bool, bool),\n ctx_limit: &mut u32,\n) -> (Field, bool) {\n if ((*ctx_limit) == 0_u32) {\n (a.0[0], *a.1)\n } else {\n *ctx_limit = ((*ctx_limit) - 1_u32);\n func_5(if (*a.1) { a } else { (a.0, (&mut c.1)) }, c, ctx_limit)\n }\n}\n", diff --git a/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_true_inliner_9223372036854775807.snap b/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_true_inliner_9223372036854775807.snap index db55cc773b8..7ccaf70e887 100644 --- a/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_true_inliner_9223372036854775807.snap +++ b/tooling/nargo_cli/tests/snapshots/execution_success/regression_9303/execute__tests__force_brillig_true_inliner_9223372036854775807.snap @@ -40,9 +40,9 @@ expression: artifact "return value indices : [_0, _1]", "BRILLIG CALL func 0: inputs: [], outputs: [_0, _1]", "unconstrained func 0", - "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32839 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32837), size_address: Relative(1), offset_address: Relative(2) }, Call { location: 13 }, Call { location: 16 }, Mov { destination: Direct(32837), source: Relative(1) }, Mov { destination: Direct(32838), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 32837 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, Stop { return_data: HeapVector { pointer: Relative(3), size: Relative(4) } }, Const { destination: Direct(32835), bit_size: Field, value: 1 }, Const { destination: Direct(32836), bit_size: Integer(U1), value: 1 }, Return, Call { location: 52 }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 2 }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Field, value: -1 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(4), bit_size: Integer(U1), value: 0 }, Store { destination_pointer: Relative(3), source: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Direct(32835) }, Mov { destination: Relative(11), source: Direct(32836) }, Mov { destination: Relative(12), source: Direct(32836) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(4) }, Mov { destination: Relative(2), source: Relative(5) }, Return, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 57 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 52 }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(4) }, Load { destination: Relative(10), source_pointer: Relative(6) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(12), op: Equals, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, Const { destination: Relative(11), bit_size: Integer(U32), value: 1 }, JumpIf { condition: Relative(12), location: 92 }, Jump { location: 68 }, BinaryIntOp { destination: Relative(12), op: Sub, bit_size: U32, lhs: Relative(10), rhs: Relative(11) }, BinaryIntOp { destination: Relative(13), op: LessThanEquals, bit_size: U32, lhs: Relative(11), rhs: Relative(10) }, JumpIf { condition: Relative(13), location: 72 }, Call { location: 102 }, Store { destination_pointer: Relative(6), source: Relative(12) }, Load { destination: Relative(10), source_pointer: Relative(2) }, Not { destination: Relative(11), source: Relative(10), bit_size: U1 }, ConditionalMov { destination: Relative(12), source_a: Relative(2), source_b: Relative(9), condition: Relative(10) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 13 }, Mov { destination: Relative(13), source: Direct(0) }, Mov { destination: Relative(14), source: Relative(1) }, Mov { destination: Relative(15), source: Relative(12) }, Mov { destination: Relative(16), source: Relative(3) }, Mov { destination: Relative(17), source: Relative(4) }, Mov { destination: Relative(18), source: Relative(5) }, Mov { destination: Relative(19), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(2), source: Relative(14) }, Mov { destination: Relative(9), source: Relative(15) }, Mov { destination: Relative(7), source: Relative(2) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 99 }, Load { destination: Relative(3), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(11) }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(3) }, Jump { location: 99 }, Mov { destination: Relative(1), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(8) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return]" + "[Const { destination: Direct(2), bit_size: Integer(U32), value: 1 }, Const { destination: Direct(1), bit_size: Integer(U32), value: 32839 }, Const { destination: Direct(0), bit_size: Integer(U32), value: 3 }, Const { destination: Relative(1), bit_size: Integer(U32), value: 0 }, Const { destination: Relative(2), bit_size: Integer(U32), value: 0 }, CalldataCopy { destination_address: Direct(32837), size_address: Relative(1), offset_address: Relative(2) }, Call { location: 13 }, Call { location: 16 }, Mov { destination: Direct(32837), source: Relative(1) }, Mov { destination: Direct(32838), source: Relative(2) }, Const { destination: Relative(3), bit_size: Integer(U32), value: 32837 }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, Stop { return_data: HeapVector { pointer: Relative(3), size: Relative(4) } }, Const { destination: Direct(32835), bit_size: Field, value: 1 }, Const { destination: Direct(32836), bit_size: Integer(U1), value: 1 }, Return, Call { location: 52 }, Mov { destination: Relative(1), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(2), bit_size: Integer(U32), value: 2 }, Store { destination_pointer: Relative(1), source: Relative(2) }, Const { destination: Relative(2), bit_size: Field, value: -1 }, Mov { destination: Relative(3), source: Direct(1) }, Const { destination: Relative(4), bit_size: Integer(U32), value: 2 }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Relative(4) }, IndirectConst { destination_pointer: Relative(3), bit_size: Integer(U32), value: 1 }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Direct(2) }, Mov { destination: Relative(5), source: Relative(4) }, Store { destination_pointer: Relative(5), source: Relative(2) }, Mov { destination: Relative(2), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(2), source: Relative(3) }, Mov { destination: Relative(3), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Const { destination: Relative(4), bit_size: Integer(U1), value: 0 }, Store { destination_pointer: Relative(3), source: Relative(4) }, Const { destination: Relative(6), bit_size: Integer(U32), value: 7 }, Mov { destination: Relative(7), source: Direct(0) }, Mov { destination: Relative(8), source: Relative(2) }, Mov { destination: Relative(9), source: Relative(3) }, Mov { destination: Relative(10), source: Direct(32835) }, Mov { destination: Relative(11), source: Direct(32836) }, Mov { destination: Relative(12), source: Direct(32836) }, Mov { destination: Relative(13), source: Relative(1) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(6) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(8) }, Mov { destination: Relative(5), source: Relative(9) }, Mov { destination: Relative(1), source: Relative(4) }, Mov { destination: Relative(2), source: Relative(5) }, Return, Const { destination: Direct(32772), bit_size: Integer(U32), value: 30720 }, BinaryIntOp { destination: Direct(32771), op: LessThan, bit_size: U32, lhs: Direct(0), rhs: Direct(32772) }, JumpIf { condition: Direct(32771), location: 57 }, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 17843811134343075018 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return, Call { location: 52 }, Mov { destination: Relative(9), source: Direct(1) }, BinaryIntOp { destination: Direct(1), op: Add, bit_size: U32, lhs: Direct(1), rhs: Direct(2) }, Store { destination_pointer: Relative(9), source: Relative(4) }, Load { destination: Relative(4), source_pointer: Relative(6) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 0 }, BinaryIntOp { destination: Relative(11), op: Equals, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 1 }, JumpIf { condition: Relative(11), location: 93 }, Jump { location: 68 }, BinaryIntOp { destination: Relative(11), op: Sub, bit_size: U32, lhs: Relative(4), rhs: Relative(10) }, BinaryIntOp { destination: Relative(12), op: LessThanEquals, bit_size: U32, lhs: Relative(10), rhs: Relative(4) }, JumpIf { condition: Relative(12), location: 72 }, Call { location: 103 }, Store { destination_pointer: Relative(6), source: Relative(11) }, Load { destination: Relative(4), source_pointer: Relative(2) }, Not { destination: Relative(10), source: Relative(4), bit_size: U1 }, ConditionalMov { destination: Relative(11), source_a: Relative(2), source_b: Relative(9), condition: Relative(4) }, Load { destination: Relative(2), source_pointer: Relative(9) }, Const { destination: Relative(10), bit_size: Integer(U32), value: 12 }, Mov { destination: Relative(12), source: Direct(0) }, Mov { destination: Relative(13), source: Relative(1) }, Mov { destination: Relative(14), source: Relative(11) }, Mov { destination: Relative(15), source: Relative(3) }, Mov { destination: Relative(16), source: Relative(2) }, Mov { destination: Relative(17), source: Relative(5) }, Mov { destination: Relative(18), source: Relative(6) }, BinaryIntOp { destination: Direct(0), op: Add, bit_size: U32, lhs: Direct(0), rhs: Relative(10) }, Call { location: 58 }, Mov { destination: Direct(0), source: Relative(0) }, Mov { destination: Relative(4), source: Relative(13) }, Mov { destination: Relative(9), source: Relative(14) }, Mov { destination: Relative(7), source: Relative(4) }, Mov { destination: Relative(8), source: Relative(9) }, Jump { location: 100 }, Load { destination: Relative(3), source_pointer: Relative(1) }, BinaryIntOp { destination: Relative(4), op: Add, bit_size: U32, lhs: Relative(3), rhs: Relative(10) }, Load { destination: Relative(1), source_pointer: Relative(4) }, Load { destination: Relative(3), source_pointer: Relative(2) }, Mov { destination: Relative(7), source: Relative(1) }, Mov { destination: Relative(8), source: Relative(3) }, Jump { location: 100 }, Mov { destination: Relative(1), source: Relative(7) }, Mov { destination: Relative(2), source: Relative(8) }, Return, IndirectConst { destination_pointer: Direct(1), bit_size: Integer(U64), value: 2920182694213909827 }, Trap { revert_data: HeapVector { pointer: Direct(1), size: Direct(2) } }, Return]" ], - "debug_symbols": "ndTNioMwFAXgd8naRZJ782NfpZRibVoEUbE6MBTffa4e7bSLgcGNnxrP8SeYp7qmy3g/V82tfajD8akufVXX1f1ct2UxVG0jZ59KzxsT1MFkykSQL1gNjDpYwQICDBzwIIAI8gXSAC2EFkILoYXQQtJCQgAR5AusgQEWEGDgAFoYLYwWhxaPFo8WjxYvLSwwkIAT8oWggQEWEGDggNzWCwFEkC9EDQywgAADB9AS0RLRkksgCBKIAgMJxGnK1DaZ56FPaZ7Lt9mVOe+KPjWDOjRjXWfqq6jH5aJHVzSLQ9HLqM5Uaq6iFN6qOs17U/ab1n9HjQ1r2Nj4irv/5znf8s7syRNv+dzuyBPTmifPO/Js/Zpn9nvybvt+zu55f4pme/646/1DeOXpI3+So6Ks+o/1Ypqb+qq41Gk9vI1N+TY6fHfbyLbedH1bpuvYp7npbdGR7dHZzIWTrDnycxyNtpnRfJrmm/8A", + "debug_symbols": "ndTLioMwGAXgd8naRZI/N/sqpRRr0yIElVQHhuK7z69HO+1iYHDjp8ZzvATzFNd4Ge/npr11D3E4PsUlNyk193Pq6mpoupbPPoWcN8qLgyqECqBc0BIocdCMBgQMsMABDwIoF0gCtBBaCC2EFkILcQsxHgRQLhgJFNCAgAEWoMWgxaDFosWhxaHFocVxi2EM4IBlygUvgQIaEDDAAgf4to4JoFwIEiigAQEDLHAALQEtAS0lBzzDgcBYwIEwTYXY5vQ85BjnKX2bZJ76vsqxHcShHVMqxFeVxuWiR1+1i0OVeVQWIrZXlgtvTYrz3lT8puXfUaX9GlY6vOL2/3lTbnmr9uTJbPlS78iToTVPzuzIG+3WvDFuT95u38/qPe9PQW3PH3a9v/evPH3kT3xU1U3+WDamuSk31SXF9fA2tvXb6PDdbyPbstPnro7XMce56W3t4e3R6sL6Ey89/I8claRCSXua5pv/AA==", "file_map": { "50": { "source": "global G_A: (Field, bool, bool) = (1, true, true);\nunconstrained fn main() -> pub (Field, bool) {\n let mut ctx_limit: u32 = 2;\n func_5(((&mut [-1]), (&mut false)), G_A, (&mut ctx_limit))\n}\nunconstrained fn func_5(\n a: (&mut [Field; 1], &mut bool),\n mut c: (Field, bool, bool),\n ctx_limit: &mut u32,\n) -> (Field, bool) {\n if ((*ctx_limit) == 0_u32) {\n (a.0[0], *a.1)\n } else {\n *ctx_limit = ((*ctx_limit) - 1_u32);\n func_5(if (*a.1) { a } else { (a.0, (&mut c.1)) }, c, ctx_limit)\n }\n}\n",