Index: test/mjsunit/regress/regress-2612.js |
diff --git a/test/mjsunit/regress/regress-2451.js b/test/mjsunit/regress/regress-2612.js |
similarity index 63% |
copy from test/mjsunit/regress/regress-2451.js |
copy to test/mjsunit/regress/regress-2612.js |
index 465e4e68c26f3e3e119cbaf82d50c8f83c6efa9a..06db07733d393f5327be977c56d2b764fbe1f0b1 100644 |
--- a/test/mjsunit/regress/regress-2451.js |
+++ b/test/mjsunit/regress/regress-2612.js |
@@ -25,17 +25,52 @@ |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
-// Flags: --allow-natives-syntax |
+// Flags: --allow-natives-syntax --nodead-code-elimination |
+// Flags: --nofold-constants --nouse-gvn |
-function f() { |
- assertEquals(-1.0, Math.round(-1.5)); |
- assertEquals(-2.0, Math.round(-2.5)); |
- assertEquals(-1.0, Math.round(-0.5000000000000001)); |
+// Create a function to get a long series of removable simulates. |
+// f() { |
+// var _0 = <random>, _1 = <random>, ... _1000 = <random>, |
+// _1001 = <random var> + <random var>, |
+// _1002 = <random var> + <random var>, |
+// ... |
+// _99999 = <random var> + <random var>, |
+// x = 1; |
+// return _0; |
+// } |
+ |
+var seed = 1; |
+ |
+function rand() { |
+ seed = seed * 171 % 1337 + 17; |
+ return (seed % 1000) / 1000; |
} |
-f(); |
+function randi(max) { |
+ seed = seed * 131 % 1773 + 13; |
+ return seed % max; |
+} |
+ |
+function varname(i) { |
+ return "_" + i; |
+} |
+ |
+var source = "var "; |
+ |
+for (var i = 0; i < 1000; i++) { |
+ source += [varname(i), "=", rand(), ","].join(""); |
+} |
+ |
+for (var i = 1000; i < 100000; i++) { |
+ source += [varname(i), "=", |
+ varname(randi(i)), "+", |
+ varname(randi(i)), ","].join(""); |
+} |
+ |
+source += "x=1; return _0;" |
+var f = new Function(source); |
+ |
f(); |
%OptimizeFunctionOnNextCall(f); |
f(); |
-assertTrue(%GetOptimizationStatus(f) != 2); |