Gate‑C(Core) OOB strict fail‑fast; String VM handler normalization; JSON lint Stage‑B root fixes via scanner field boxing and BinOp operand slotify; docs + smokes update
This commit is contained in:
@ -23,8 +23,17 @@ impl super::MirBuilder {
|
||||
return self.build_logical_shortcircuit(left, operator, right);
|
||||
}
|
||||
|
||||
let lhs = self.build_expression(left)?;
|
||||
let rhs = self.build_expression(right)?;
|
||||
let lhs_raw = self.build_expression(left)?;
|
||||
let rhs_raw = self.build_expression(right)?;
|
||||
// Correctness-first: ensure both operands have block-local definitions
|
||||
// so they participate in PHI/materialization and avoid use-before-def across
|
||||
// complex control-flow (e.g., loop headers and nested branches).
|
||||
let lhs = self
|
||||
.ensure_slotified_for_use(lhs_raw, "@binop_lhs")
|
||||
.unwrap_or(lhs_raw);
|
||||
let rhs = self
|
||||
.ensure_slotified_for_use(rhs_raw, "@binop_rhs")
|
||||
.unwrap_or(rhs_raw);
|
||||
let dst = self.value_gen.next();
|
||||
|
||||
let mir_op = self.convert_binary_operator(operator)?;
|
||||
|
||||
Reference in New Issue
Block a user