1/* 2 * Copyright (c) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15declare function print(arg:any):void; 16 17function testcase1() { 18 let testArray: Int32Array = new Int32Array([1, 2, 3]); 19 let len: number = testArray.length; 20 let a: number = testArray[0]; 21 let res: number = 5 + len; 22 print(res) 23} 24 25function testcase2() { 26 let testArray: Int32Array = new Int32Array([1, 2, 3]); 27 let a: number = testArray[0]; 28 let len: number = testArray.length - 1; 29 let res: number = 6 + len; 30 print(res) 31} 32 33function testcase3() { 34 let testArray: Int32Array = new Int32Array([1, 2, 3]); 35 let len: number = testArray.length; 36 let sum: number = 0; 37 for(let i = 0; i < len; i++) { 38 print(i + 1); 39 sum += testArray[i]; 40 } 41} 42 43function testcase4() { 44 let testArray: Int32Array = new Int32Array([1, 2, 3]); 45 let len: number = testArray.length - 1; 46 let sum: number = 0; 47 for(let i = 0; i < len; i++) { 48 sum += testArray[i]; 49 print(i + 1); 50 } 51} 52 53function testcase5() { 54 let testArray: number[] = [1, 2, 3]; 55 let a: number = testArray[0]; 56 let res: number = 5 + testArray.length; 57 print(res); 58} 59 60function testcase6() { 61 let testArray: number[] = [1, 2, 3]; 62 let len: number = testArray.length - 1; 63 let sum: number = 0; 64 let i: number = 0; 65 for(let i = 0; i < len; i++) { 66 sum += testArray[i]; 67 print(i + 1); 68 } 69} 70 71//mod CheckRightIsZero 72function testcase7() { 73 const a: number= 20; 74 let b: number = 5 % a;// not gen CheckRightIsZero 75 let c: number = 5 % b;// gen CheckRightIsZero 76} 77 78//mul_with_overcheck 79function testcase8(a:number, x:number) { 80 let z = a >>> 1; 81 let b: number = z % 10;//range[0, 4095] 82 83 let c: number = 10 * b;//not gen mul_with_overcheck, range[0,262143] 84 let d: number = c * b;//not gen mul_with_overcheck, range[0,1073741823] 85 let e: number = d * c;//gen mul_with_overcheck 86 87 x = x >>> 1; 88 let h: number = x * x;//gen mul_with_overcheck 89} 90 91testcase1(); // 8 92testcase2(); // 8 93 94testcase3(); 95testcase4(); 96 97testcase5(); 98testcase6(); 99 100testcase7(); 101testcase8(4, 107341001);//deopt