summaryrefslogtreecommitdiff
path: root/crates/parser/src
diff options
context:
space:
mode:
authorHenry <mail@henrygressmann.de>2026-07-22 22:27:37 +0200
committerHenry <mail@henrygressmann.de>2026-07-22 22:27:37 +0200
commit8bc916ef0afdede9edce6bb9045dc555e4d3b218 (patch)
tree7f5e4045144776be084faa4150890f0a11e1fb06 /crates/parser/src
parentb484f2bc074dab2419245ec2443f60efd33b80f0 (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.rs3
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()));