1*795d594fSAndroid Build Coastguard Worker /* 2*795d594fSAndroid Build Coastguard Worker * Copyright (C) 2022 The Android Open Source Project 3*795d594fSAndroid Build Coastguard Worker * 4*795d594fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*795d594fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*795d594fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*795d594fSAndroid Build Coastguard Worker * 8*795d594fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*795d594fSAndroid Build Coastguard Worker * 10*795d594fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*795d594fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*795d594fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*795d594fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*795d594fSAndroid Build Coastguard Worker * limitations under the License. 15*795d594fSAndroid Build Coastguard Worker */ 16*795d594fSAndroid Build Coastguard Worker 17*795d594fSAndroid Build Coastguard Worker public class Main { main(String args[])18*795d594fSAndroid Build Coastguard Worker public static void main(String args[]) { 19*795d594fSAndroid Build Coastguard Worker Test227365246 test227365246 = new Test227365246(); 20*795d594fSAndroid Build Coastguard Worker test227365246.$noinline$mainTest(args); 21*795d594fSAndroid Build Coastguard Worker 22*795d594fSAndroid Build Coastguard Worker Test216608614 test216608614 = new Test216608614(); 23*795d594fSAndroid Build Coastguard Worker test216608614.$noinline$mainTest(args); 24*795d594fSAndroid Build Coastguard Worker 25*795d594fSAndroid Build Coastguard Worker Test216629762 test216629762 = new Test216629762(); 26*795d594fSAndroid Build Coastguard Worker test216629762.$noinline$mainTest(args); 27*795d594fSAndroid Build Coastguard Worker } 28*795d594fSAndroid Build Coastguard Worker } 29*795d594fSAndroid Build Coastguard Worker 30*795d594fSAndroid Build Coastguard Worker class Test227365246 { 31*795d594fSAndroid Build Coastguard Worker int N = 400; 32*795d594fSAndroid Build Coastguard Worker int iFld; 33*795d594fSAndroid Build Coastguard Worker $noinline$mainTest(String[] strArr1)34*795d594fSAndroid Build Coastguard Worker void $noinline$mainTest(String[] strArr1) { 35*795d594fSAndroid Build Coastguard Worker int i17, i18 = 5788, i19, i21, i22 = 127, i23; 36*795d594fSAndroid Build Coastguard Worker byte[] byArr = new byte[N]; 37*795d594fSAndroid Build Coastguard Worker for (i17 = 14; 297 > i17; ++i17) 38*795d594fSAndroid Build Coastguard Worker for (int ax$2 = 151430; ax$2 < 235417; ax$2 += 2) {} 39*795d594fSAndroid Build Coastguard Worker try { 40*795d594fSAndroid Build Coastguard Worker for (i19 = 4; 179 > i19; ++i19) { 41*795d594fSAndroid Build Coastguard Worker i18 *= i18; 42*795d594fSAndroid Build Coastguard Worker for (i21 = 1; i21 < 58; i21++) 43*795d594fSAndroid Build Coastguard Worker for (i23 = i21; 1 + 400 > i23; i23++) { 44*795d594fSAndroid Build Coastguard Worker byArr[i23] -= i22; 45*795d594fSAndroid Build Coastguard Worker i18 += i23; 46*795d594fSAndroid Build Coastguard Worker switch (i19 % 5) { 47*795d594fSAndroid Build Coastguard Worker case 107: 48*795d594fSAndroid Build Coastguard Worker i19 >>= iFld; 49*795d594fSAndroid Build Coastguard Worker } 50*795d594fSAndroid Build Coastguard Worker } 51*795d594fSAndroid Build Coastguard Worker } 52*795d594fSAndroid Build Coastguard Worker } catch (ArrayIndexOutOfBoundsException exc1) { 53*795d594fSAndroid Build Coastguard Worker } 54*795d594fSAndroid Build Coastguard Worker System.out.println("i17 i18 b = " + i17 + "," + i18 + "," + 0); 55*795d594fSAndroid Build Coastguard Worker } 56*795d594fSAndroid Build Coastguard Worker } 57*795d594fSAndroid Build Coastguard Worker 58*795d594fSAndroid Build Coastguard Worker class Test216608614 { 59*795d594fSAndroid Build Coastguard Worker int N = 400; 60*795d594fSAndroid Build Coastguard Worker long lFld; 61*795d594fSAndroid Build Coastguard Worker double dFld; 62*795d594fSAndroid Build Coastguard Worker int iArrFld[]=new int[N]; $noinline$mainTest(String[] strArr1)63*795d594fSAndroid Build Coastguard Worker void $noinline$mainTest(String[] strArr1) { 64*795d594fSAndroid Build Coastguard Worker // Note: The original bug report started with `l=-1213929899L` but this took 65*795d594fSAndroid Build Coastguard Worker // too long when running with interpreter without JIT and we want to allow 66*795d594fSAndroid Build Coastguard Worker // this test to run for all configurations. Starting with `l=-1000000L` was 67*795d594fSAndroid Build Coastguard Worker // enough to allow JIT to compile the method for OSR and trigger the bug on host. 68*795d594fSAndroid Build Coastguard Worker long l=-1000000L; 69*795d594fSAndroid Build Coastguard Worker int i19= 46, i20=100, i21, i22=13, i25; 70*795d594fSAndroid Build Coastguard Worker try { 71*795d594fSAndroid Build Coastguard Worker do 72*795d594fSAndroid Build Coastguard Worker for (; i19 < 172; ++i19) 73*795d594fSAndroid Build Coastguard Worker lFld = (long) dFld; 74*795d594fSAndroid Build Coastguard Worker while (++l < 146); 75*795d594fSAndroid Build Coastguard Worker for (i21 = 8;; ++i21) 76*795d594fSAndroid Build Coastguard Worker for (i25 = 1; i25 < 2; i25++) { 77*795d594fSAndroid Build Coastguard Worker i20 = i22 % 1650388388; 78*795d594fSAndroid Build Coastguard Worker i20 = iArrFld[i21]; 79*795d594fSAndroid Build Coastguard Worker i22 = 60; 80*795d594fSAndroid Build Coastguard Worker } 81*795d594fSAndroid Build Coastguard Worker } catch (ArrayIndexOutOfBoundsException exc1) { 82*795d594fSAndroid Build Coastguard Worker } finally { 83*795d594fSAndroid Build Coastguard Worker } 84*795d594fSAndroid Build Coastguard Worker System.out.println("l i19 i20 = " + l + "," + i19 + "," + i20); 85*795d594fSAndroid Build Coastguard Worker } 86*795d594fSAndroid Build Coastguard Worker } 87*795d594fSAndroid Build Coastguard Worker 88*795d594fSAndroid Build Coastguard Worker class Test216629762 { 89*795d594fSAndroid Build Coastguard Worker static int N = 400; 90*795d594fSAndroid Build Coastguard Worker int iFld=29275; 91*795d594fSAndroid Build Coastguard Worker volatile double dFld; 92*795d594fSAndroid Build Coastguard Worker static long lArrFld[][]=new long[N][N]; 93*795d594fSAndroid Build Coastguard Worker $noinline$mainTest(String[] strArr1)94*795d594fSAndroid Build Coastguard Worker void $noinline$mainTest(String[] strArr1) { 95*795d594fSAndroid Build Coastguard Worker int i8, i10=181, i11, i12=-57574, i13=69, i15= 6, i16= 186, i17= 227; 96*795d594fSAndroid Build Coastguard Worker try { 97*795d594fSAndroid Build Coastguard Worker for (i11 = 6; i11 < 278 + 400; ++i11) 98*795d594fSAndroid Build Coastguard Worker i12 *= iFld; 99*795d594fSAndroid Build Coastguard Worker for (;; i13++) { 100*795d594fSAndroid Build Coastguard Worker i10 /= i10; 101*795d594fSAndroid Build Coastguard Worker i16 += i15; 102*795d594fSAndroid Build Coastguard Worker lArrFld[i13][i15] >>= 31616; 103*795d594fSAndroid Build Coastguard Worker for (i17 = 1; i17 < 1 + 400; i17++) 104*795d594fSAndroid Build Coastguard Worker dFld += dFld; 105*795d594fSAndroid Build Coastguard Worker } 106*795d594fSAndroid Build Coastguard Worker } 107*795d594fSAndroid Build Coastguard Worker catch (ArrayIndexOutOfBoundsException exc2) { 108*795d594fSAndroid Build Coastguard Worker i16 += i12; 109*795d594fSAndroid Build Coastguard Worker } 110*795d594fSAndroid Build Coastguard Worker System.out.println("i16 b i17 = " + i16 + "," + 0 + "," + i17); 111*795d594fSAndroid Build Coastguard Worker } 112*795d594fSAndroid Build Coastguard Worker } 113