diff options
| author | Henry <mail@henrygressmann.de> | 2026-07-22 22:27:37 +0200 |
|---|---|---|
| committer | Henry <mail@henrygressmann.de> | 2026-07-22 22:27:37 +0200 |
| commit | 8bc916ef0afdede9edce6bb9045dc555e4d3b218 (patch) | |
| tree | 7f5e4045144776be084faa4150890f0a11e1fb06 /crates/parser/src | |
| parent | b484f2bc074dab2419245ec2443f60efd33b80f0 (diff) | |
fix: dropkeep not being emited correctly
Signed-off-by: Henry <mail@henrygressmann.de>
Diffstat (limited to 'crates/parser/src')
| -rw-r--r-- | crates/parser/src/visit.rs | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/crates/parser/src/visit.rs b/crates/parser/src/visit.rs index cb13387..dae9ff2 100644 --- a/crates/parser/src/visit.rs +++ b/crates/parser/src/visit.rs @@ -1017,7 +1017,8 @@ impl FunctionBuilder<'_> { /// Emits the stack-shaping instruction required by a branch. fn emit_dropkeep(&mut self, base: ValueCounts, keep: ValueCounts) { - if base.is_empty() && keep.is_empty() { + let target = ValueCounts { c32: base.c32 + keep.c32, c64: base.c64 + keep.c64, c128: base.c128 + keep.c128 }; + if self.lane_counts == target { return; } self.instructions.push(Instruction::DropKeep((base, keep).into())); |
