summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/example/debug-location-propagation.cpp47
-rw-r--r--test/example/debug-location-propagation.txt1
-rw-r--r--test/lit/help/wasm-opt.test4
-rw-r--r--test/lit/help/wasm2js.test4
-rw-r--r--test/lit/wat-kitchen-sink.wast12
5 files changed, 68 insertions, 0 deletions
diff --git a/test/example/debug-location-propagation.cpp b/test/example/debug-location-propagation.cpp
new file mode 100644
index 000000000..b4685e391
--- /dev/null
+++ b/test/example/debug-location-propagation.cpp
@@ -0,0 +1,47 @@
+#include <cassert>
+#include <iostream>
+
+#include <binaryen-c.h>
+#include <wasm.h>
+
+int main() {
+ BinaryenModuleRef module = BinaryenModuleCreate();
+
+ BinaryenType ii[2] = {BinaryenTypeInt32(), BinaryenTypeInt32()};
+ BinaryenType params = BinaryenTypeCreate(ii, 2);
+ BinaryenType results = BinaryenTypeNone();
+
+ BinaryenExpressionRef x = BinaryenLocalGet(module, 0, BinaryenTypeInt32()),
+ y = BinaryenLocalGet(module, 1, BinaryenTypeInt32());
+ BinaryenExpressionRef add = BinaryenBinary(module, BinaryenAddInt32(), x, y);
+ BinaryenExpressionRef drop = BinaryenDrop(module, add);
+ BinaryenExpressionRef funcBody =
+ BinaryenBlock(module, "", &drop, 1, BinaryenTypeNone());
+
+ BinaryenFunctionRef adder =
+ BinaryenAddFunction(module, "adder", params, results, NULL, 0, funcBody);
+
+ BinaryenModuleAddDebugInfoFileName(module, "main");
+
+ BinaryenFunctionSetDebugLocation(adder, x, 0, 2, 13);
+ BinaryenFunctionSetDebugLocation(adder, drop, 0, 2, 2);
+
+ BinaryenModuleValidate(module);
+ BinaryenSetDebugInfo(true);
+ const char* runPasses[] = {"propagate-debug-locs"};
+ BinaryenModuleRunPasses(module, runPasses, 1);
+
+ auto& debugLocations = module->getFunction("adder")->debugLocations;
+ assert(debugLocations.size() == 4);
+ assert(debugLocations[x].columnNumber == 13);
+ assert(debugLocations[y].columnNumber == 13);
+ assert(debugLocations[add].columnNumber == 2);
+ assert(debugLocations[drop].columnNumber == 2);
+
+ BinaryenSetDebugInfo(false);
+ BinaryenModuleDispose(module);
+
+ std::cout << "success." << std::endl;
+
+ return 0;
+}
diff --git a/test/example/debug-location-propagation.txt b/test/example/debug-location-propagation.txt
new file mode 100644
index 000000000..b32bb74d2
--- /dev/null
+++ b/test/example/debug-location-propagation.txt
@@ -0,0 +1 @@
+success.
diff --git a/test/lit/help/wasm-opt.test b/test/lit/help/wasm-opt.test
index ff07586f2..849469178 100644
--- a/test/lit/help/wasm-opt.test
+++ b/test/lit/help/wasm-opt.test
@@ -368,6 +368,10 @@
;; CHECK-NEXT: --print-stack-ir print out Stack IR (useful for
;; CHECK-NEXT: internal debugging)
;; CHECK-NEXT:
+;; CHECK-NEXT: --propagate-debug-locs propagate debug location from
+;; CHECK-NEXT: parents or previous siblings to
+;; CHECK-NEXT: child nodes
+;; CHECK-NEXT:
;; CHECK-NEXT: --propagate-globals-globally propagate global values to other
;; CHECK-NEXT: globals (useful for tests)
;; CHECK-NEXT:
diff --git a/test/lit/help/wasm2js.test b/test/lit/help/wasm2js.test
index 493542135..4b0330db6 100644
--- a/test/lit/help/wasm2js.test
+++ b/test/lit/help/wasm2js.test
@@ -322,6 +322,10 @@
;; CHECK-NEXT: --print-stack-ir print out Stack IR (useful for
;; CHECK-NEXT: internal debugging)
;; CHECK-NEXT:
+;; CHECK-NEXT: --propagate-debug-locs propagate debug location from
+;; CHECK-NEXT: parents or previous siblings to
+;; CHECK-NEXT: child nodes
+;; CHECK-NEXT:
;; CHECK-NEXT: --propagate-globals-globally propagate global values to other
;; CHECK-NEXT: globals (useful for tests)
;; CHECK-NEXT:
diff --git a/test/lit/wat-kitchen-sink.wast b/test/lit/wat-kitchen-sink.wast
index 3c4c56ba6..772d3f5df 100644
--- a/test/lit/wat-kitchen-sink.wast
+++ b/test/lit/wat-kitchen-sink.wast
@@ -5235,6 +5235,13 @@
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (i32.const 2)
;; CHECK-NEXT: )
+ ;; CHECK-NEXT: ;;@ src.cpp:30:1
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.add
+ ;; CHECK-NEXT: (i32.const 100)
+ ;; CHECK-NEXT: (i32.const 200)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $source-map-propagation
;;@ src.cpp:10:1
@@ -5245,6 +5252,11 @@
drop
i32.const 2
drop
+ i32.const 100
+ i32.const 200
+ i32.add
+ ;;@ src.cpp:30:1
+ drop
)
;; CHECK: (func $use-types (type $107) (param $0 (ref $s0)) (param $1 (ref $s1)) (param $2 (ref $s2)) (param $3 (ref $s3)) (param $4 (ref $s4)) (param $5 (ref $s5)) (param $6 (ref $s6)) (param $7 (ref $s7)) (param $8 (ref $s8)) (param $9 (ref $a0)) (param $10 (ref $a1)) (param $11 (ref $a2)) (param $12 (ref $a3)) (param $13 (ref $subvoid)) (param $14 (ref $submany)) (param $15 (ref $all-types))