Index: test/mjsunit/regress/wasm/regression-648079.js |
diff --git a/test/mjsunit/regress/wasm/regression-648079.js b/test/mjsunit/regress/wasm/regression-648079.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e9d14175e4469ba129c0803934a9e02b23cdf84c |
--- /dev/null |
+++ b/test/mjsunit/regress/wasm/regression-648079.js |
@@ -0,0 +1,324 @@ |
+// Copyright 2016 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Flags: --expose-wasm |
+ |
+load("test/mjsunit/wasm/wasm-constants.js"); |
+load("test/mjsunit/wasm/wasm-module-builder.js"); |
+ |
+(function() { |
+"use asm"; |
+var builder = new WasmModuleBuilder(); |
+builder.addFunction("regression_648079", kSig_s_v) |
+ .addBody([ |
+ // locals: |
+ 0x00, |
+ // body: |
+ kExprI64RemU, |
+ kExprI64Ctz, |
+ kExprI64LeU, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprI64Ctz, |
+ kExprI64Ne, |
+ kExprI64ShrS, |
+ kExprI64GtS, |
+ kExprI64RemU, |
+ kExprUnreachable, |
+ kExprI64RemU, |
+ kExprI32Eqz, |
+ kExprI64LeU, |
+ kExprDrop, |
+ kExprF32Add, |
+ kExprI64Ior, |
+ kExprF32CopySign, |
+ kExprI64Ne, |
+ kExprI64GeS, |
+ kExprUnreachable, |
+ kExprF32Trunc, |
+ kExprF32Trunc, |
+ kExprUnreachable, |
+ kExprIf, 10, // @32 |
+ kExprBlock, 00, // @34 |
+ kExprBr, // depth=109 |
+ kExprI64Shl, |
+ kExprI64LeU, |
+ kExprI64GeS, |
+ kExprI64Clz, |
+ kExprF32Min, |
+ kExprF32Eq, |
+ kExprF32Trunc, |
+ kExprF32Trunc, |
+ kExprF32Trunc, |
+ kExprUnreachable, |
+ kExprI32Const, |
+ kExprUnreachable, |
+ kExprBr, // depth=101 |
+ kExprF32Div, |
+ kExprI64GtU, |
+ kExprI64GeS, |
+ kExprI64Clz, |
+ kExprSelect, |
+ kExprI64GtS, |
+ kExprI64RemU, |
+ kExprI64LeU, |
+ kExprI64Shl, |
+ kExprI64Ctz, |
+ kExprLoop, 01, // @63 i32 |
+ kExprElse, // @65 |
+ kExprI64LeU, |
+ kExprI64RemU, |
+ kExprI64Ne, |
+ kExprI64GeS, |
+ kExprI32Const, |
+ kExprI64GtS, |
+ kExprI64LoadMem32U, |
+ kExprI64Clz, |
+ kExprI64Shl, |
+ kExprI64Ne, |
+ kExprI64ShrS, |
+ kExprI64GtS, |
+ kExprI64DivU, |
+ kExprI64Ne, |
+ kExprI64GtS, |
+ kExprI64Ne, |
+ kExprI64Popcnt, |
+ kExprI64DivU, |
+ kExprI64DivU, |
+ kExprSelect, |
+ kExprI64Ctz, |
+ kExprI64Popcnt, |
+ kExprI64RemU, |
+ kExprI64Clz, |
+ kExprF64Sub, |
+ kExprF32Trunc, |
+ kExprF32Trunc, |
+ kExprI64RemU, |
+ kExprI64Ctz, |
+ kExprI64LeU, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprBrIf, // depth=116 |
+ kExprF32Min, |
+ kExprI64GtU, |
+ kExprBlock, 01, // @107 i32 |
+ kExprTeeLocal, |
+ kExprBlock, 01, // @111 i32 |
+ kExprBlock, 01, // @113 i32 |
+ kExprBlock, 01, // @115 i32 |
+ kExprBlock, 01, // @117 i32 |
+ kExprBlock, 01, // @119 i32 |
+ kExprBlock, 01, // @121 i32 |
+ kExprBlock, 01, // @123 i32 |
+ kExprBlock, 88, // @125 |
+ kExprF32Trunc, |
+ kExprF32Trunc, |
+ kExprF32Trunc, |
+ kExprUnreachable, |
+ kExprLoop, 40, // @131 |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprI32Add, |
+ kExprBlock, 05, // @136 |
+ kExprUnreachable, |
+ kExprIf, 02, // @139 i64 |
+ kExprBlock, 01, // @141 i32 |
+ kExprBrIf, // depth=16 |
+ kExprLoop, 00, // @145 |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprReturn, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprI64LoadMem16U, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprNop, |
+ kExprBr, // depth=1 |
+ kExprElse, // @164 |
+ kExprF32Trunc, |
+ kExprI32Add, |
+ kExprCallIndirect, // sig #1 |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprBlock, 00, // @172 |
+ kExprI64RemU, |
+ kExprI64Ctz, |
+ kExprI64LeU, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprDrop, |
+ kExprI64Popcnt, |
+ kExprF32Min, |
+ kExprUnreachable, |
+ kExprF64Sub, |
+ kExprI32Const, |
+ kExprUnreachable, |
+ kExprGetLocal, |
+ kExprI64LoadMem32U, |
+ kExprUnreachable, |
+ kExprI64RemU, |
+ kExprI32Eqz, |
+ kExprI64LeU, |
+ kExprDrop, |
+ kExprF32Add, |
+ kExprI64Ior, |
+ kExprF32CopySign, |
+ kExprI64Ne, |
+ kExprI64GeS, |
+ kExprUnreachable, |
+ kExprF32Trunc, |
+ kExprF32Trunc, |
+ kExprUnreachable, |
+ kExprIf, 10, // @216 |
+ kExprBlock, 00, // @218 |
+ kExprBr, // depth=109 |
+ kExprI64Shl, |
+ kExprI64LeU, |
+ kExprI64GeS, |
+ kExprI64Clz, |
+ kExprF32Min, |
+ kExprF32Eq, |
+ kExprF32Trunc, |
+ kExprF32Trunc, |
+ kExprF32Trunc, |
+ kExprUnreachable, |
+ kExprF64Min, |
+ kExprI32Const, |
+ kExprBr, // depth=101 |
+ kExprF32Div, |
+ kExprI64GtU, |
+ kExprI64GeS, |
+ kExprI64Clz, |
+ kExprI64Popcnt, |
+ kExprF64Lt, |
+ kExprF32Trunc, |
+ kExprF32Trunc, |
+ kExprF32Trunc, |
+ kExprUnreachable, |
+ kExprLoop, 01, // @247 i32 |
+ kExprElse, // @249 |
+ kExprI64LeU, |
+ kExprI64RemU, |
+ kExprI64Ne, |
+ kExprI64GeS, |
+ kExprI32Const, |
+ kExprBlock, 01, // @256 i32 |
+ kExprBlock, 01, // @258 i32 |
+ kExprBlock, 01, // @260 i32 |
+ kExprBlock, 01, // @262 i32 |
+ kExprBlock, 01, // @264 i32 |
+ kExprF32Ge, |
+ kExprF32Trunc, |
+ kExprF32Trunc, |
+ kExprF32Trunc, |
+ kExprUnreachable, |
+ kExprLoop, 40, // @271 |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprI32Add, |
+ kExprBlock, 01, // @276 i32 |
+ kExprUnreachable, |
+ kExprIf, 02, // @279 i64 |
+ kExprBlock, 00, // @281 |
+ kExprBrIf, // depth=16 |
+ kExprLoop, 00, // @285 |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprReturn, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprI64LoadMem16U, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprNop, |
+ kExprBr, // depth=1 |
+ kExprElse, // @304 |
+ kExprF32Trunc, |
+ kExprI32Add, |
+ kExprCallIndirect, // sig #1 |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprBlock, 00, // @312 |
+ kExprI64RemU, |
+ kExprI64Ctz, |
+ kExprI64LeU, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprDrop, |
+ kExprI64Popcnt, |
+ kExprF32Min, |
+ kExprUnreachable, |
+ kExprF64Sub, |
+ kExprI32Const, |
+ kExprUnreachable, |
+ kExprGetLocal, |
+ kExprI64LoadMem32U, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprNop, |
+ kExprBr, // depth=1 |
+ kExprElse, // @348 |
+ kExprF32Trunc, |
+ kExprI32Add, |
+ kExprCallIndirect, // sig #1 |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprBlock, 00, // @356 |
+ kExprI64RemU, |
+ kExprI64Ctz, |
+ kExprI64LeU, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprUnreachable, |
+ kExprDrop, |
+ kExprI64Popcnt, |
+ kExprF32Min, |
+ kExprUnreachable, |
+ kExprF64Sub, |
+ kExprI32Const, |
+ kExprUnreachable, |
+ kExprGetLocal, |
+ kExprI64LoadMem32U, |
+ kExprF64Min, |
+ kExprF64Min, |
+ kExprF64Min, |
+ kExprF64Min, |
+ kExprF64Min, |
+ kExprF32Trunc, |
+ kExprF32Trunc, |
+ kExprF32Trunc, |
+ kExprUnreachable, |
+ kExprF64Min, |
+ kExprF64Min, |
+ kExprF64Min, |
+ kExprF64Min, |
+ kExprF64Min, |
+ kExprF64Min, |
+ kExprF64Min, |
+ kExprF64Min, |
+ kExprF64Min, |
+ kExprF64Min, |
+ ]) |
+ .exportFunc(); |
+assertThrows(function() { builder.instantiate(); }); |
+})(); |