Kaynağa Gözat

Fix how we check if the last asm.js stmt is a return and throw if the type doesn't match
Fixes OS#9592312

Michael Ferris 8 yıl önce
ebeveyn
işleme
42222cb5fb

+ 7 - 3
lib/Runtime/Language/AsmJsByteCodeGenerator.cpp

@@ -426,18 +426,22 @@ namespace Js
         // Emit a function body. Only explicit returns and the implicit "undef" at the bottom
         // get copied to the return register.
 
+        ParseNode *stmt = nullptr;
         while (varStmts->nop == knopList)
         {
-            ParseNode *stmt = ParserWrapper::GetBinaryLeft(varStmts);
+            stmt = ParserWrapper::GetBinaryLeft(varStmts);
             EmitTopLevelStatement( stmt );
             varStmts = ParserWrapper::GetBinaryRight(varStmts);
         }
         Assert(!varStmts->CapturesSyms());
 
         // if last statement isn't return, type must be void
-        if (varStmts->nop != knopReturn)
+        if (!stmt || stmt->nop != knopReturn)
         {
-            mFunction->CheckAndSetReturnType(AsmJsRetType::Void);
+            if (!mFunction->CheckAndSetReturnType(AsmJsRetType::Void))
+            {
+                throw AsmJsCompilationException(_u("Expected function return type to be void got %s instead"), mFunction->GetReturnType().toType().toChars());
+            }
         }
         EmitTopLevelStatement(varStmts);
     }

+ 13 - 14
test/AsmJs/JitToLoopBody.js

@@ -3,10 +3,10 @@
 // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
 //-------------------------------------------------------------------------------------------------------
 
-  // return double 
+  // return double
   // do while and while loops
   function AsmModule() {
-    "use asm";      
+    "use asm";
     var x1 = 10;
     function f3(x,y){
         x = x|0;
@@ -25,28 +25,27 @@
                     if((n|0) > 50)
                         return +y;
                     x = (x+1)|0;
-                    y = +(y * z) 
+                    y = +(y * z)
                     n = (n + 1)|0;
                 }while((n|0) < 100)
-            }            
+            }
         }
         return +y;
     }
-    
+
     function bar(k)
     {
         k = k|0;
-        if( (k|0) > 5) 
-            return +f3(1,1.5);  
-        else 
-            return 1.5;
+        if( (k|0) > 5)
+            return +f3(1,1.5);
+        return 1.5;
     }
-    
+
     return bar
 }
 
 var bar = AsmModule();
-print(bar(1))  
-print(bar(1))   
-print(bar(10))   
-print(bar(10))   
+print(bar(1))
+print(bar(1))
+print(bar(10))
+print(bar(10))

+ 2 - 2
test/AsmJs/constbrbug.baseline

@@ -1,2 +1,2 @@
-Successfully compiled asm.js code
-0
+Successfully compiled asm.js code
+0

+ 137 - 137
test/AsmJs/exports.baseline

@@ -1,137 +1,137 @@
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Warning: redefining export
-Successfully compiled asm.js code
-10
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Warning: redefining export
+Successfully compiled asm.js code
+10

+ 2 - 2
test/AsmJs/lambda.baseline

@@ -1,2 +1,2 @@
-Lambda functions are not supported.
-Asm.js compilation failed.
+Lambda functions are not supported.
+Asm.js compilation failed.

+ 7 - 0
test/AsmJs/return3.baseline

@@ -0,0 +1,7 @@
+
+return3.js(10, 7)
+	Asm.js Compilation Error function : AsmModule::conditionnalReturn
+	Expected function return type to be void got signed instead
+
+Asm.js compilation failed.
+undefined

+ 15 - 0
test/AsmJs/return3.js

@@ -0,0 +1,15 @@
+//-------------------------------------------------------------------------------------------------------
+// Copyright (C) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
+//-------------------------------------------------------------------------------------------------------
+
+let asmModule = (function AsmModule() {
+  'use asm';
+  function conditionnalReturn() {
+    if (0) {
+      return 0;
+    }
+  }
+  return conditionnalReturn;
+})();
+print(asmModule());

+ 7 - 0
test/AsmJs/rlexe.xml

@@ -656,6 +656,13 @@
       <compile-flags>-off:deferparse -testtrace:asmjs -simdjs</compile-flags>
     </default>
   </test>
+  <test>
+    <default>
+      <files>return3.js</files>
+      <baseline>return3.baseline</baseline>
+      <compile-flags>-testtrace:asmjs</compile-flags>
+    </default>
+  </test>
   <test>
     <default>
       <files>returndouble.js</files>

+ 3 - 3
test/SIMD.bool16x8.asmjs/testBitwise.baseline

@@ -1,3 +1,3 @@
-Warning: redefining export
-Successfully compiled asm.js code
-PASS
+Warning: redefining export
+Successfully compiled asm.js code
+PASS

+ 3 - 3
test/SIMD.bool32x4.asmjs/testBitwise.baseline

@@ -1,3 +1,3 @@
-Warning: redefining export
-Successfully compiled asm.js code
-PASS
+Warning: redefining export
+Successfully compiled asm.js code
+PASS

+ 3 - 3
test/SIMD.bool8x16.asmjs/testBitwise.baseline

@@ -1,3 +1,3 @@
-Warning: redefining export
-Successfully compiled asm.js code
-PASS
+Warning: redefining export
+Successfully compiled asm.js code
+PASS

+ 12 - 11
test/SIMD.float32x4.asmjs/testCalls.js

@@ -7,11 +7,11 @@
 WScript.LoadScriptFile("..\\UnitTestFramework\\SimdJsHelpers.js");
 function asmModule(stdlib, imports) {
     "use asm";
-    
+
     var i4 = stdlib.SIMD.Int32x4;
     var i4check = i4.check;
     var i4splat = i4.splat;
-    
+
     var i4fromFloat32x4 = i4.fromFloat32x4;
     var i4fromFloat32x4Bits = i4.fromFloat32x4Bits;
     var i4lessThan = i4.lessThan;
@@ -24,10 +24,10 @@ function asmModule(stdlib, imports) {
     var i4not = i4.not;
 
 
-    var f4 = stdlib.SIMD.Float32x4;  
+    var f4 = stdlib.SIMD.Float32x4;
     var f4check = f4.check;
     var f4splat = f4.splat;
-    
+
     var f4fromInt32x4 = f4.fromInt32x4;
     var f4fromInt32x4Bits = f4.fromInt32x4Bits;
     var f4abs = f4.abs;
@@ -39,7 +39,7 @@ function asmModule(stdlib, imports) {
     var f4min = f4.min;
     var f4max = f4.max;
     var f4sqrt = f4.sqrt;
-    
+
     var f4lessThan = f4.lessThan;
     var f4lessThanOrEqual = f4.lessThanOrEqual;
     var f4equal = f4.equal;
@@ -56,10 +56,10 @@ function asmModule(stdlib, imports) {
 
     var globImportF4 = f4check(imports.g1);       // global var import
     var globImportI4 = i4check(imports.g2);       // global var import
-    
+
     var g1 = f4(-5033.2,-3401.0,665.34,32234.1);          // global var initialized
     var g2 = i4(1065353216, -1073741824, -1077936128, 1082130432);          // global var initialized
-    
+
     var gval = 1234;
     var gval2 = 1234.0;
 
@@ -85,7 +85,7 @@ function asmModule(stdlib, imports) {
 
         return f4check(x);
     }
-    
+
     function func2(a, count, b, c, d, i)
     {
         a = f4check(a);
@@ -120,8 +120,8 @@ function asmModule(stdlib, imports) {
         double3 = +double3;
         g = f4check(g);
         h = f4check(h);
-        float4 = fround(float4);        
-        
+        float4 = fround(float4);
+
         var x = f4(0.0,0.0,0.0,0.0);
         var y = f4(0.0,0.0,0.0,0.0);
         var loopIndex = 0;
@@ -144,8 +144,9 @@ function asmModule(stdlib, imports) {
                 return f4check(value1);
             }
         }
+        return f4check(value1);
     }
-    
+
     // TODO: Test conversion of returned value
     function value()
     {

+ 14 - 13
test/SIMD.int16x8.asmjs/testCalls.js

@@ -9,7 +9,7 @@ function asmModule(stdlib, imports) {
     var i4check = i4.check;
     /*
     var i4splat = i4.splat;
-    
+
     var i4fromFloat32x4 = i4.fromFloat32x4;
     var i4fromFloat32x4Bits = i4.fromFloat32x4Bits;
     //var i4abs = i4.abs;
@@ -34,7 +34,7 @@ function asmModule(stdlib, imports) {
     var i8 = stdlib.SIMD.Int16x8;
     var i8check = i8.check;
 
-    var f4 = stdlib.SIMD.Float32x4;  
+    var f4 = stdlib.SIMD.Float32x4;
     var f4check = f4.check;
     var f4splat = f4.splat;
     var i8extractLane = i8.extractLane;
@@ -46,7 +46,7 @@ function asmModule(stdlib, imports) {
     var f4sub = f4.sub;
     var f4mul = f4.mul;
     var f4div = f4.div;
-    
+
     var f4min = f4.min;
     var f4max = f4.max;
 
@@ -63,20 +63,20 @@ function asmModule(stdlib, imports) {
 
     var f4select = f4.select;
 
-    
+
     var fround = stdlib.Math.fround;
 
     var globImportF4 = f4check(imports.g1);       // global var import
     var globImportI8 = i8check(imports.g2);       // global var import
-    
+
     var g1 = f4(-5033.2,-3401.0,665.34,32234.1);          // global var initialized
     var g2 = i8(1065353216, -1073741824, -1077936128, 1082130432, 1065353216, -1073741824, -1077936128, 1082130432);          // global var initialized
-    
+
     var gval = 1234;
     var gval2 = 1234.0;
 
 
-    
+
     var loopCOUNT = 3;
 
     function func1(a, b)
@@ -97,7 +97,7 @@ function asmModule(stdlib, imports) {
 
         return i8check(x);
     }
-    
+
     function func2(a, b, c, d)
     {
         a = i8check(a);
@@ -112,7 +112,7 @@ function asmModule(stdlib, imports) {
 
             x = i8check(func1(a, b));
             y = i8check(func1(c, d));
-            
+
 
         }
 
@@ -129,8 +129,8 @@ function asmModule(stdlib, imports) {
         e = i8check(e);
         f = i8check(f);
         g = i8check(g);
-        h = i8check(h);        
-        
+        h = i8check(h);
+
         var x = i8(-1, -2, -3, -4, -5, -6, -7, -8);
         var y = i8(1, 2, 3, 4, 5, 6, 7, 8);
         var loopIndex = 0;
@@ -139,7 +139,7 @@ function asmModule(stdlib, imports) {
 
             x = i8check(func2(a, b, c, d));
             y = i8check(func2(e, f, g, h));
-            
+
         }
 
         //return i8check(i8add(x,y));
@@ -156,8 +156,9 @@ function asmModule(stdlib, imports) {
                 return i8check(value1);
             }
         }
+        return i8check(value1);
     }
-    
+
     // TODO: Test conversion of returned value
     function value()
     {

+ 17 - 16
test/SIMD.int32x4.asmjs/testCalls.js

@@ -6,11 +6,11 @@
 this.WScript.LoadScriptFile("..\\UnitTestFramework\\SimdJsHelpers.js");
 function asmModule(stdlib, imports) {
     "use asm";
-    
+
     var i4 = stdlib.SIMD.Int32x4;
     var i4check = i4.check;
     var i4splat = i4.splat;
-    
+
     var i4fromFloat32x4 = i4.fromFloat32x4;
     var i4fromFloat32x4Bits = i4.fromFloat32x4Bits;
     //var i4abs = i4.abs;
@@ -32,10 +32,10 @@ function asmModule(stdlib, imports) {
     //var i4shiftRightByScalar = i4.shiftRightByScalar;
     //var i4shiftRightArithmeticByScalar = i4.shiftRightArithmeticByScalar;
 
-    var f4 = stdlib.SIMD.Float32x4;  
+    var f4 = stdlib.SIMD.Float32x4;
     var f4check = f4.check;
     var f4splat = f4.splat;
-    
+
     var f4fromInt32x4 = f4.fromInt32x4;
     var f4fromInt32x4Bits = f4.fromInt32x4Bits;
     var f4abs = f4.abs;
@@ -44,7 +44,7 @@ function asmModule(stdlib, imports) {
     var f4sub = f4.sub;
     var f4mul = f4.mul;
     var f4div = f4.div;
-    
+
     var f4min = f4.min;
     var f4max = f4.max;
 
@@ -61,21 +61,21 @@ function asmModule(stdlib, imports) {
 
     var f4select = f4.select;
 
-    
+
 
     var fround = stdlib.Math.fround;
 
     var globImportF4 = f4check(imports.g1);       // global var import
     var globImportI4 = i4check(imports.g2);       // global var import
-    
+
     var g1 = f4(-5033.2,-3401.0,665.34,32234.1);          // global var initialized
     var g2 = i4(1065353216, -1073741824, -1077936128, 1082130432);          // global var initialized
-    
+
     var gval = 1234;
     var gval2 = 1234.0;
 
 
-    
+
     var loopCOUNT = 3;
 
     function func1(a, b)
@@ -94,7 +94,7 @@ function asmModule(stdlib, imports) {
 
         return i4check(x);
     }
-    
+
     function func2(a, b, c, d)
     {
         a = i4check(a);
@@ -109,7 +109,7 @@ function asmModule(stdlib, imports) {
 
             x = i4check(func1(a, b));
             y = i4check(func1(c, d));
-            
+
 
         }
 
@@ -125,8 +125,8 @@ function asmModule(stdlib, imports) {
         e = i4check(e);
         f = i4check(f);
         g = i4check(g);
-        h = i4check(h);        
-        
+        h = i4check(h);
+
         var x = i4(0,0,0,0);
         var y = i4(0,0,0,0);
         var loopIndex = 0;
@@ -135,7 +135,7 @@ function asmModule(stdlib, imports) {
 
             x = i4check(func2(a, b, c, d));
             y = i4check(func2(e, f, g, h));
-            
+
         }
 
         return i4check(i4add(x,y));
@@ -151,8 +151,9 @@ function asmModule(stdlib, imports) {
                 return i4check(value1);
             }
         }
+        return i4check(value1);
     }
-    
+
     // TODO: Test conversion of returned value
     function value()
     {
@@ -170,7 +171,7 @@ function asmModule(stdlib, imports) {
 
         return +ret;
     }
-    
+
     return {func1:func1, func2:func2, func3:func3, func4:func4/*, func5:func5, func6:func6*/};
 }
 

+ 12 - 11
test/SIMD.int8x16.asmjs/testCalls.js

@@ -35,10 +35,10 @@ function asmModule(stdlib, imports) {
     var i16 = stdlib.SIMD.Int8x16;
     var i16check = i16.check;
 
-    var f4 = stdlib.SIMD.Float32x4;  
+    var f4 = stdlib.SIMD.Float32x4;
     var f4check = f4.check;
     var f4splat = f4.splat;
-    
+
     var f4fromInt32x4 = f4.fromInt32x4;
     var f4fromInt32x4Bits = f4.fromInt32x4Bits;
     var f4abs = f4.abs;
@@ -69,15 +69,15 @@ function asmModule(stdlib, imports) {
 
     var globImportF4 = f4check(imports.g1);       // global var import
     var globImporti16 = i16check(imports.g2);       // global var import
-    
+
     var g1 = f4(-5033.2,-3401.0,665.34,32234.1);          // global var initialized
     var g2 = i16(1065353216, -1073741824, -1077936128, 1082130432, 1065353216, -1073741824, -1077936128, 1082130432, 1033216, -11824, -106128, 1081302, 53216, -10, -10779, 1082130432);          // global var initialized
-    
+
     var gval = 1234;
     var gval2 = 1234.0;
 
 
-    
+
     var loopCOUNT = 3;
 
     function func1(a, b)
@@ -97,7 +97,7 @@ function asmModule(stdlib, imports) {
         g2 = x;
         return i16check(x);
     }
-    
+
     function func2(a, b, c, d)
     {
         a = i16check(a);
@@ -112,7 +112,7 @@ function asmModule(stdlib, imports) {
 
             x = i16check(func1(a, b));
             y = i16check(func1(c, d));
-            
+
 
         }
 
@@ -129,8 +129,8 @@ function asmModule(stdlib, imports) {
         e = i16check(e);
         f = i16check(f);
         g = i16check(g);
-        h = i16check(h);        
-        
+        h = i16check(h);
+
         var x = i16(-1, -2, -3, -4, -5, -6, -7, -8, 1024, 1025, 1026, 1027, -1028, -1029, -1030, -1031);
         var y = i16(-1, -2, -3, -4, -5, -6, -7, -8, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031);
         var loopIndex = 0;
@@ -139,7 +139,7 @@ function asmModule(stdlib, imports) {
 
             x = i16check(func2(a, b, c, d));
             y = i16check(func2(e, f, g, h));
-            
+
         }
 
         //return i16check(i16add(x,y));
@@ -156,8 +156,9 @@ function asmModule(stdlib, imports) {
                 return i16check(value1);
             }
         }
+        return i16check(value1);
     }
-    
+
     // TODO: Test conversion of returned value
     function value()
     {

+ 14 - 13
test/SIMD.uint16x8.asmjs/testCalls.js

@@ -9,7 +9,7 @@ function asmModule(stdlib, imports) {
     var i4 = stdlib.SIMD.Int32x4;
     var i4check = i4.check;
     var i4splat = i4.splat;
-    
+
     var i4fromFloat32x4 = i4.fromFloat32x4;
     var i4fromFloat32x4Bits = i4.fromFloat32x4Bits;
     //var i4abs = i4.abs;
@@ -34,10 +34,10 @@ function asmModule(stdlib, imports) {
     var u8 = stdlib.SIMD.Uint16x8;
     var u8check = u8.check;
 
-    var f4 = stdlib.SIMD.Float32x4;  
+    var f4 = stdlib.SIMD.Float32x4;
     var f4check = f4.check;
     var f4splat = f4.splat;
-    
+
     var f4fromInt32x4 = f4.fromInt32x4;
     var f4fromInt32x4Bits = f4.fromInt32x4Bits;
     var f4abs = f4.abs;
@@ -46,7 +46,7 @@ function asmModule(stdlib, imports) {
     var f4sub = f4.sub;
     var f4mul = f4.mul;
     var f4div = f4.div;
-    
+
     var f4min = f4.min;
     var f4max = f4.max;
 
@@ -71,10 +71,10 @@ function asmModule(stdlib, imports) {
 
     var globImportF4 = f4check(imports.g1);       // global var import
     var globImportU8 = u8check(imports.g2);       // global var import
-    
+
     var g1 = f4(-5033.2,-3401.0,665.34,32234.1);          // global var initialized
     var g2 = u8(1065353216, -1073741824, -1077936128, 1082130432, 1065353216, -1073741824, -1077936128, 1082130432);          // global var initialized
-    
+
     var gval = 1234;
     var gval2 = 1234.0;
 
@@ -107,7 +107,7 @@ function asmModule(stdlib, imports) {
         g2 = x;
         return i8check(i8fromU8bits(x));
     }
-    
+
     function func2(a, b, c, d)
     {
         a = i8check(a);
@@ -122,7 +122,7 @@ function asmModule(stdlib, imports) {
 
             x = u8fromI8bits(i8check(func1(a, b)));
             y = u8fromI8bits(i8check(func1(c, d)));
-            
+
 
         }
 
@@ -139,8 +139,8 @@ function asmModule(stdlib, imports) {
         e = i8check(e);
         f = i8check(f);
         g = i8check(g);
-        h = i8check(h);        
-        
+        h = i8check(h);
+
         var x = u8(-1, -2, -3, -4, -5, -6, -7, -8);
         var y = u8(1, 2, 3, 4, 5, 6, 7, 8);
         var loopIndex = 0;
@@ -149,7 +149,7 @@ function asmModule(stdlib, imports) {
 
             x = u8fromI8bits(i8check(func2(a, b, c, d)));
             y = u8fromI8bits(i8check(func2(e, f, g, h)));
-            
+
         }
 
         //return i8check(u8add(x,y));
@@ -166,8 +166,9 @@ function asmModule(stdlib, imports) {
                 return i8check(i8fromU8bits(value1));
             }
         }
+        return i8check(i8fromU8bits(value1));
     }
-    
+
     // TODO: Test conversion of returned value
     function value()
     {
@@ -235,7 +236,7 @@ var u8fromI8 = SIMD.Uint16x8.fromInt16x8Bits;
 
 var ret1 = u8fromI8(m.func1(i8fromU8(s1), i8fromU8(s2)));
 var ret2 = u8fromI8(m.func2(i8fromU8(s1), i8fromU8(s2), i8fromU8(s3), i8fromU8(s4)));
-var ret3 = u8fromI8(m.func3(i8fromU8(s1), i8fromU8(s2), i8fromU8(s3), i8fromU8(s4), 
+var ret3 = u8fromI8(m.func3(i8fromU8(s1), i8fromU8(s2), i8fromU8(s3), i8fromU8(s4),
 i8fromU8(s5), i8fromU8(s6), i8fromU8(s7), i8fromU8(s8)));
 var ret4 = u8fromI8(m.func4());
 var ret5 = u8fromI8(m.func5());

+ 12 - 11
test/SIMD.uint32x4.asmjs/testCalls.js

@@ -34,10 +34,10 @@ function asmModule(stdlib, imports) {
     var u4check = u4.check;
 
     var u4extractLane = u4.extractLane;
-    var f4 = stdlib.SIMD.Float32x4;  
+    var f4 = stdlib.SIMD.Float32x4;
     var f4check = f4.check;
     var f4splat = f4.splat;
-    
+
     var f4fromInt32x4 = f4.fromInt32x4;
     var f4fromInt32x4Bits = f4.fromInt32x4Bits;
     var f4abs = f4.abs;
@@ -46,7 +46,7 @@ function asmModule(stdlib, imports) {
     var f4sub = f4.sub;
     var f4mul = f4.mul;
     var f4div = f4.div;
-    
+
     var f4min = f4.min;
     var f4max = f4.max;
 
@@ -63,17 +63,17 @@ function asmModule(stdlib, imports) {
 
     var f4select = f4.select;
 
-  
+
 
 
     var fround = stdlib.Math.fround;
 
     var globImportF4 = f4check(imports.g1);       // global var import
     var globImportU4 = u4check(imports.g2);       // global var import
-    
+
     var g1 = f4(-5033.2,-3401.0,665.34,32234.1);          // global var initialized
     var g2 = u4(1065353216, -1073741824, -1077936128, 1082130432);          // global var initialized
-    
+
     var gval = 1234;
     var gval2 = 1234.0;
 
@@ -100,7 +100,7 @@ function asmModule(stdlib, imports) {
 
         return i4check(i4fu4(x));
     }
-    
+
     function func2(a, b, c, d)
     {
         a = i4check(a);
@@ -129,8 +129,8 @@ function asmModule(stdlib, imports) {
         e = i4check(e);
         f = i4check(f);
         g = i4check(g);
-        h = i4check(h);        
-        
+        h = i4check(h);
+
         var x = u4(-1, -2, -3, -4);
         var y = u4(1, 2, 3, 4);
         var loopIndex = 0;
@@ -139,7 +139,7 @@ function asmModule(stdlib, imports) {
 
             x = u4fi4(i4check(func2(a, b, c, d)))
             y = u4fi4(i4check(func2(e, f, g, h)));
-            
+
         }
 
         //return i4check(i8add(x,y));
@@ -156,8 +156,9 @@ function asmModule(stdlib, imports) {
                 return i4check(i4fu4(value1));
             }
         }
+        return i4check(i4fu4(value1));
     }
-    
+
     // TODO: Test conversion of returned value
     function value()
     {

+ 12 - 11
test/SIMD.uint8x16.asmjs/testCalls.js

@@ -37,10 +37,10 @@ function asmModule(stdlib, imports) {
 
     var u16extractLane = u16.extractLane;
 
-    var f4 = stdlib.SIMD.Float32x4;  
+    var f4 = stdlib.SIMD.Float32x4;
     var f4check = f4.check;
     var f4splat = f4.splat;
-    
+
     var f4fromInt32x4 = f4.fromInt32x4;
     var f4fromInt32x4Bits = f4.fromInt32x4Bits;
     var f4abs = f4.abs;
@@ -49,7 +49,7 @@ function asmModule(stdlib, imports) {
     var f4sub = f4.sub;
     var f4mul = f4.mul;
     var f4div = f4.div;
-    
+
     var f4min = f4.min;
     var f4max = f4.max;
 
@@ -66,16 +66,16 @@ function asmModule(stdlib, imports) {
 
     var f4select = f4.select;
 
-    
+
 
     var fround = stdlib.Math.fround;
 
     var globImportF4 = f4check(imports.g1);       // global var import
     var globImportU16 = u16check(imports.g2);       // global var import
-    
+
     var g1 = f4(-5033.2,-3401.0,665.34,32234.1);          // global var initialized
     var g2 = u16(1065353216, -1073741824, -1077936128, 1082130432, 1065353216, -1073741824, -1077936128, 1082130432, 1033216, -11824, -106128, 1081302, 53216, -10, -10779, 1082130432);          // global var initialized
-    
+
     var gval = 1234;
     var gval2 = 1234.0;
 
@@ -103,7 +103,7 @@ function asmModule(stdlib, imports) {
         g2 = x;
         return i16check(i16fu16(x));
     }
-    
+
     function func2(a, b, c, d)
     {
         a = i16check(a);
@@ -132,8 +132,8 @@ function asmModule(stdlib, imports) {
         e = i16check(e);
         f = i16check(f);
         g = i16check(g);
-        h = i16check(h);        
-        
+        h = i16check(h);
+
         var x = u16(-1, -2, -3, -4, -5, -6, -7, -8, 1024, 1025, 1026, 1027, -1028, -1029, -1030, -1031);
         var y = u16(-1, -2, -3, -4, -5, -6, -7, -8, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031);
         var loopIndex = 0;
@@ -142,7 +142,7 @@ function asmModule(stdlib, imports) {
 
             x = u16fi16(i16check(func2(a, b, c, d)));
             y = u16fi16(i16check(func2(e, f, g, h)));
-            
+
         }
 
         //return i16check(u16add(x,y));
@@ -159,8 +159,9 @@ function asmModule(stdlib, imports) {
                 return i16check(i16fu16(value1));
             }
         }
+        return i16check(i16fu16(value1));
     }
-    
+
     // TODO: Test conversion of returned value
     function value()
     {