< prev index next >

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/CompareCanonicalizerTest2.java

Print this page
rev 52509 : [mq]: graal2

*** 1,7 **** /* ! * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 22,79 **** */ package org.graalvm.compiler.core.test; - import static org.graalvm.compiler.graph.test.matchers.NodeIterableIsEmpty.isNotEmpty; - import org.graalvm.compiler.nodes.StructuredGraph; import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions; - import org.graalvm.compiler.nodes.calc.IntegerLessThanNode; import org.graalvm.compiler.phases.common.CanonicalizerPhase; import org.graalvm.compiler.phases.tiers.PhaseContext; - import org.junit.Assert; import org.junit.Test; public class CompareCanonicalizerTest2 extends GraalCompilerTest { ! @SuppressWarnings("unused") private static int sink0; ! @SuppressWarnings("unused") private static int sink1; private StructuredGraph getCanonicalizedGraph(String name) { ! StructuredGraph graph = parseEager(name, AllowAssumptions.YES); new CanonicalizerPhase().apply(graph, new PhaseContext(getProviders())); return graph; } ! public void testIntegerTestCanonicalization(String name) { ! StructuredGraph graph = getCanonicalizedGraph(name); ! Assert.assertThat(graph.getNodes().filter(IntegerLessThanNode.class), isNotEmpty()); } @Test public void test0() { ! testIntegerTestCanonicalization("integerTestCanonicalization0"); } @Test public void test1() { ! testIntegerTestCanonicalization("integerTestCanonicalization1"); } ! public static void integerTestCanonicalization0(int a) { ! if (1 < a + 1) { ! sink1 = 0; ! } else { ! sink0 = -1; } } ! public static void integerTestCanonicalization1(int a) { ! if (a - 1 < -1) { ! sink1 = 0; ! } else { ! sink0 = -1; } } } --- 22,97 ---- */ package org.graalvm.compiler.core.test; import org.graalvm.compiler.nodes.StructuredGraph; import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions; import org.graalvm.compiler.phases.common.CanonicalizerPhase; import org.graalvm.compiler.phases.tiers.PhaseContext; import org.junit.Test; public class CompareCanonicalizerTest2 extends GraalCompilerTest { ! @SuppressWarnings("unused") private static boolean sink; private StructuredGraph getCanonicalizedGraph(String name) { ! StructuredGraph graph = getRegularGraph(name); new CanonicalizerPhase().apply(graph, new PhaseContext(getProviders())); return graph; } ! private StructuredGraph getRegularGraph(String name) { ! StructuredGraph graph = parseEager(name, AllowAssumptions.YES); ! return graph; } @Test public void test0() { ! assertEquals(getCanonicalizedGraph("integerTestCanonicalization0"), getRegularGraph("integerTestCanonicalization0")); ! } ! ! public static void integerTestCanonicalization0(int a) { ! sink = 1 < a + 1; } @Test public void test1() { ! assertEquals(getCanonicalizedGraph("integerTestCanonicalization1"), getRegularGraph("integerTestCanonicalization1")); } ! public static void integerTestCanonicalization1(int a) { ! sink = a - 1 < -1; ! } ! ! @Test ! public void test2() { ! assertEquals(getCanonicalizedGraph("integerTestCanonicalization2a"), getCanonicalizedGraph("integerTestCanonicalization2Reference")); ! assertEquals(getCanonicalizedGraph("integerTestCanonicalization2b"), getCanonicalizedGraph("integerTestCanonicalization2Reference")); } + + public static boolean integerTestCanonicalization2a(Object[] arr) { + return arr.length - 1 < 0; } ! public static boolean integerTestCanonicalization2b(Object[] arr) { ! return arr.length < 1; } + + public static boolean integerTestCanonicalization2Reference(Object[] arr) { + return arr.length == 0; + } + + @Test + public void test3() { + assertEquals(getCanonicalizedGraph("integerTestCanonicalization3"), getCanonicalizedGraph("integerTestCanonicalization3Reference")); + } + + public static boolean integerTestCanonicalization3(Object[] arr) { + return ((long) (arr.length - 1)) - 1 < 0; + } + + public static boolean integerTestCanonicalization3Reference(Object[] arr) { + return arr.length < 2; } }
< prev index next >