summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJérôme Vouillon <jerome.vouillon@gmail.com>2024-04-24 13:18:40 -0400
committerGitHub <noreply@github.com>2024-04-24 10:18:40 -0700
commit589eff8b82ec4d4c53b90f79b73c1e28d6e2dcdf (patch)
tree0acf621492facfc81d7c979a36555e5a95525a1a
parent1bf7d080c7d4885f348ba803a6348c2d837200d1 (diff)
downloadbinaryen-589eff8b82ec4d4c53b90f79b73c1e28d6e2dcdf.tar.gz
binaryen-589eff8b82ec4d4c53b90f79b73c1e28d6e2dcdf.tar.bz2
binaryen-589eff8b82ec4d4c53b90f79b73c1e28d6e2dcdf.zip
Source maps: Fix missing debug info in nested blocks (#6525)
The special block nesting logic also needs to handle emitting debug info.
-rw-r--r--src/wasm-stack.h1
-rw-r--r--test/lit/source-map.wast24
2 files changed, 25 insertions, 0 deletions
diff --git a/src/wasm-stack.h b/src/wasm-stack.h
index de8fd8b03..d6c0e46ec 100644
--- a/src/wasm-stack.h
+++ b/src/wasm-stack.h
@@ -328,6 +328,7 @@ void BinaryenIRWriter<SubType>::visitBlock(Block* curr) {
parents.push_back(curr);
emit(curr);
curr = child;
+ emitDebugLocation(curr);
}
// Emit the current block, which does not have a block as a child in the
// first position.
diff --git a/test/lit/source-map.wast b/test/lit/source-map.wast
index 2b4d3f5c7..43a87f291 100644
--- a/test/lit/source-map.wast
+++ b/test/lit/source-map.wast
@@ -32,6 +32,18 @@
)
;;@ src.cpp:90:1
)
+
+ (func $nested-blocks
+ ;;@ src.cpp:2:1
+ (block $label$1
+ ;;@ src.cpp:2:2
+ (block $label$2
+ (br $label$2)
+ )
+ )
+ ;;@ src.cpp:3:1
+ (return)
+ )
)
;; CHECK: ;;@ src.cpp:0:1
@@ -59,3 +71,15 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: ;;@ src.cpp:90:1
;; CHECK-NEXT: )
+
+;; CHECK: (func $nested-blocks
+;; CHECK-NEXT: ;;@ src.cpp:2:1
+;; CHECK-NEXT: (block $label$1
+;; CHECK-NEXT: ;;@ src.cpp:2:2
+;; CHECK-NEXT: (block $label$2
+;; CHECK-NEXT: (br $label$2)
+;; CHECK-NEXT: )
+;; CHECK-NEXT: )
+;; CHECK-NEXT: ;;@ src.cpp:3:1
+;; CHECK-NEXT: (return)
+;; CHECK-NEXT: )