blob: da2ed92ef29b10daa674766bbb7b97e52ddb92af [file] [log] [blame]
/*
* Copyright (c) 2002, 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.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
*
* @summary converted from VM Testbase runtime/jbe/constprop/constprop02.
* VM Testbase keywords: [quick, runtime]
*
* @library /vmTestbase
* /test/lib
* @run driver jdk.test.lib.FileInstaller . .
* @run main/othervm vm.compiler.jbe.constprop.constprop02.constprop02
*/
package vm.compiler.jbe.constprop.constprop02;
// constprop02.java
/* Tests constant propagation by substitute integer, long, and double
by constant values.
*/
public class constprop02 {
public static void main(String args[]) {
boolean bPass = true;
constprop02 cpr = new constprop02();
bPass &= cpr.verify(cpr.testDiv_un_opt());
bPass &= cpr.verify(cpr.testDiv_hand_opt());
System.out.println("------------------------");
if (!bPass) {
throw new Error("Test constprop02 Failed.");
}
System.out.println("Test constprop02 Passed.");
}
String testDiv_un_opt() {
int ia, ib;
long lc, ld;
double de, df;
System.out.println("testDiv_un_opt:");
ia = ib = 513; if ( 1 != ia / ib) return "case 1 failed";
ia = -ia; if (-1 != ia / ib) return "case 2 failed";
ia = ib = 1073741824; if ( 1 != ia / ib) return "case 3 failed";
ia = -ia; if (-1 != ia / ib) return "case 4 failed";
lc = ld = 8L; if ( 1 != lc / ld) return "case 5 failed";
lc = -lc; if (-1 != lc / ld) return "case 6 failed";
lc = ld = 1073741824L; if ( 1 != lc / ld) return "case 7 failed";
lc = -lc; if (-1 != lc / ld) return "case 8 failed";
ib = 0;
try {
ia = ia / ib;
return "case 9 failed";
} catch (java.lang.Exception x) {/* good */}
ld = 0;
try {
lc = lc / ld;
return "case 10 failed";
} catch (java.lang.Exception x) {/* good */}
try {
lc = lc % ld;
return "case 11 failed";
} catch (java.lang.Exception x) {/* good */}
de = df = 16385.0;
if (1.0 != de / df) return "case 12 failed";
de = -de;
if (-1.0 != de / df) return "case 13 failed";
df = 0.0;
try {
de = de / df;
} catch (java.lang.Exception x) {
return "case 14 failed";
}
try {
de = de % df;
de = 5.66666666666 % df;
} catch (java.lang.Exception x) {
return "case 15 failed";
}
return null;
}
String testDiv_hand_opt() {
int ia, ib;
long lc, ld;
double de, df;
System.out.println("testDiv_hand_opt:");
if ( 1 != 513 / 513) return "case 1 failed";
if (-1 != -513 / 513) return "case 2 failed";
if ( 1 != 1073741824 / 1073741824) return "case 3 failed";
if (-1 != 1073741824 / -1073741824) return "case 4 failed";
if ( 1 != 8L / 8L) return "case 5 failed";
if (-1 != -8L / 8L) return "case 6 failed";
if ( 1 != 1073741824L / 1073741824L) return "case 7 failed";
if (-1 != 1073741824L / -1073741824L) return "case 8 failed";
ib = 0;
try {
ia = -1073741824 / ib;
return "case 9 failed";
} catch (java.lang.Exception x) {/* good */}
ld = 0L;
try {
lc = -1073741824L / ld;
return "case 10 failed";
} catch (java.lang.Exception x) {/* good */}
try {
lc = -1073741824L % ld;
return "case 11 failed";
} catch (java.lang.Exception x) {/* good */}
if (1.0 != 16385.0 / 16385.0) return "case 12 failed";
if (-1.0 != -16385.0 / 16385.0) return "case 13 failed";
df = 0.0;
try {
de = -1073741824L / df;
} catch (java.lang.Exception x) {
return "case 14 failed";
}
try {
de = -1073741824L % 0.0;
de = 5.66666666666 % df;
} catch (java.lang.Exception x) {
return "cnase 15 failed";
}
return null;
}
boolean verify(String str) {
boolean st = true;
if (null == str || str.equals(""))
System.out.println("OK");
else {
st = false;
System.out.println("** "+str+" **");
}
return st;
}
}