Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion compiler/noirc_evaluator/src/acir/acir_context/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1183,12 +1183,13 @@ impl<F: AcirField, B: BlackBoxFunctionSolver<F>> AcirContext<F, B> {
.assertion_payloads
.insert(self.acir_ir.last_acir_opcode_location(), payload);
}
Ok(predicate_range)
}
NumericType::NativeField => {
// Range constraining a Field is a no-op
Ok(variable)
}
}
Ok(variable)
}

/// Returns an `AcirVar` which will be constrained to be lhs mod 2^{rhs}
Expand Down
13 changes: 6 additions & 7 deletions compiler/noirc_evaluator/src/acir/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1067,10 +1067,10 @@ impl<'a> Context<'a> {

if let NumericType::Unsigned { bit_size } = &num_type {
// Check for integer overflow
self.check_unsigned_overflow(result, *bit_size, binary, predicate)?;
self.check_unsigned_overflow(result, *bit_size, binary, predicate)
} else {
Ok(result)
}

Ok(result)
}

/// Adds a range check against the bit size of the result of addition, subtraction or multiplication
Expand All @@ -1080,21 +1080,20 @@ impl<'a> Context<'a> {
bit_size: u32,
binary: &Binary,
predicate: AcirVar,
) -> Result<(), RuntimeError> {
) -> Result<AcirVar, RuntimeError> {
let msg = match binary.operator {
BinaryOp::Add { unchecked: false } => "attempt to add with overflow",
BinaryOp::Sub { unchecked: false } => "attempt to subtract with overflow",
BinaryOp::Mul { unchecked: false } => "attempt to multiply with overflow",
_ => return Ok(()),
_ => return Ok(result),
};

self.acir_context.range_constrain_var(
result,
&NumericType::Unsigned { bit_size },
Some(msg.to_string()),
predicate,
)?;
Ok(())
)
}

/// Operands in a binary operation are checked to have the same type.
Expand Down
6 changes: 6 additions & 0 deletions test_programs/execution_success/regression_8558/Nargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[package]
name = "regression_8558"
type = "bin"
authors = [""]

[dependencies]
2 changes: 2 additions & 0 deletions test_programs/execution_success/regression_8558/Prover.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
v1 = 0
v2 = false
7 changes: 7 additions & 0 deletions test_programs/execution_success/regression_8558/src/main.nr
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
fn main(v1: u16, v2: bool) -> pub u8 {
if v2 {
(v1 - 257) as u8
} else {
0
}
}
1 change: 1 addition & 0 deletions test_programs/execution_success/regression_8558/stdout.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[regression_8558] Circuit output: Field(0)

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading