From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- js/src/jit-test/tests/wasm/regress/teavm-bugs.js | 53 ++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 js/src/jit-test/tests/wasm/regress/teavm-bugs.js (limited to 'js/src/jit-test/tests/wasm/regress/teavm-bugs.js') diff --git a/js/src/jit-test/tests/wasm/regress/teavm-bugs.js b/js/src/jit-test/tests/wasm/regress/teavm-bugs.js new file mode 100644 index 0000000000..bd81820951 --- /dev/null +++ b/js/src/jit-test/tests/wasm/regress/teavm-bugs.js @@ -0,0 +1,53 @@ +// Register allocation issue with LCompareI64AndBranch. +let params = ''; +let locals = ''; +let tests = '(i64.const 0)'; + +for (let i = 15; i --> 0;) { + params += `\n(param i64)`; + locals += `\n(local i64)`; + tests = ` + (if (result i64) + (i64.eq + (local.get ${i + 8}) + (local.get ${i}) + ) + (then (local.get ${i + 8})) + (else ${tests}) + )`; +} + +let code = `(module + (func $i64 + ${params} (result i64) ${locals} + ${tests} + ) +)` + +wasmEvalText(code); + +// Bounds check elimination. +assertEq(wasmEvalText(`(module + (memory 1) + (func (param $p i32) (result i32) (local $l i32) + (local.set $l (i32.const 0)) + (if + (local.get $p) + (then (local.set $l + (i32.add + (local.get $l) + (i32.load8_s (local.get $p)) + ) + )) + ) + (local.set $l + (i32.add + (local.get $l) + (i32.load8_s (local.get $p)) + ) + ) + (local.get $l) + ) + (data (i32.const 0) "\\00\\01\\02\\03\\04\\05\\06\\07\\08\\09\\0a\\0b\\0c\\0d\\0e\\0f") + (export "test" (func 0)) +)`).exports["test"](3), 6); -- cgit v1.2.3