| 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(); });
 | 
| +})();
 | 
| 
 |