Main.java revision be0cc08fb4faed1ab69361fcd030af65f9020393
1ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil/* 2ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil* Copyright (C) 2014 The Android Open Source Project 3ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil* 4ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil* Licensed under the Apache License, Version 2.0 (the "License"); 5ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil* you may not use this file except in compliance with the License. 6ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil* You may obtain a copy of the License at 7ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil* 8ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil* http://www.apache.org/licenses/LICENSE-2.0 9ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil* 10ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil* Unless required by applicable law or agreed to in writing, software 11ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil* distributed under the License is distributed on an "AS IS" BASIS, 12ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil* See the License for the specific language governing permissions and 14ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil* limitations under the License. 15ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil*/ 16ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 17ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdilpublic class ConstantFolding { 18ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 19ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil /** 20ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * Tiny three-register program exercising int constant folding 21ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * on negation. 22ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil */ 23ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 24ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: int ConstantFolding.IntNegation() constant_folding (before) 25be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const42:i\d+]] IntConstant 42 26be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Neg:i\d+]] Neg [ [[Const42]] ] 27be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: Return [ [[Neg]] ] 28ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 29ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: int ConstantFolding.IntNegation() constant_folding (after) 30be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[ConstN42:i\d+]] IntConstant -42 31be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: Return [ [[ConstN42]] ] 32ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 33ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil public static int IntNegation() { 34ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil int x, y; 35ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil x = 42; 36ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil y = -x; 37ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil return y; 38ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil } 39ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 40ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil /** 41ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * Tiny three-register program exercising int constant folding 42ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * on addition. 43ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil */ 44ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 45ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: int ConstantFolding.IntAddition1() constant_folding (before) 46be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const1:i\d+]] IntConstant 1 47be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const2:i\d+]] IntConstant 2 48be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Add:i\d+]] Add [ [[Const1]] [[Const2]] ] 49be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: Return [ [[Add]] ] 50ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 51ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: int ConstantFolding.IntAddition1() constant_folding (after) 52be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const3:i\d+]] IntConstant 3 53be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: Return [ [[Const3]] ] 54ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 55ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil public static int IntAddition1() { 56ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil int a, b, c; 57ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil a = 1; 58ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil b = 2; 59ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a + b; 60ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil return c; 61ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil } 62ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 63ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil /** 64ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * Small three-register program exercising int constant folding 65ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * on addition. 66ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil */ 67ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 68ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: int ConstantFolding.IntAddition2() constant_folding (before) 69be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const1:i\d+]] IntConstant 1 70be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const2:i\d+]] IntConstant 2 71be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const5:i\d+]] IntConstant 5 72be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const6:i\d+]] IntConstant 6 73be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Add1:i\d+]] Add [ [[Const1]] [[Const2]] ] 74be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Add2:i\d+]] Add [ [[Const5]] [[Const6]] ] 75be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Add3:i\d+]] Add [ [[Add1]] [[Add2]] ] 76be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: Return [ [[Add3]] ] 77ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 78ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: int ConstantFolding.IntAddition2() constant_folding (after) 79be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const14:i\d+]] IntConstant 14 80be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: Return [ [[Const14]] ] 81ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 82ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil public static int IntAddition2() { 83ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil int a, b, c; 84ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil a = 1; 85ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil b = 2; 86ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil a += b; 87ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil b = 5; 88ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = 6; 89ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil b += c; 90ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a + b; 91ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil return c; 92ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil } 93ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 94ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil /** 95ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * Tiny three-register program exercising int constant folding 96ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * on subtraction. 97ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil */ 98ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 99ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: int ConstantFolding.IntSubtraction() constant_folding (before) 100be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const5:i\d+]] IntConstant 5 101be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const2:i\d+]] IntConstant 2 102be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Sub:i\d+]] Sub [ [[Const5]] [[Const2]] ] 103be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: Return [ [[Sub]] ] 104ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 105ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: int ConstantFolding.IntSubtraction() constant_folding (after) 106be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const3:i\d+]] IntConstant 3 107be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: Return [ [[Const3]] ] 108ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 109ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil public static int IntSubtraction() { 110ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil int a, b, c; 111ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil a = 5; 112ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil b = 2; 113ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a - b; 114ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil return c; 115ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil } 116ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 117ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil /** 118ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * Tiny three-register program exercising long constant folding 119ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * on addition. 120ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil */ 121ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 122ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: long ConstantFolding.LongAddition() constant_folding (before) 123be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const1:j\d+]] LongConstant 1 124be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const2:j\d+]] LongConstant 2 125be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Add:j\d+]] Add [ [[Const1]] [[Const2]] ] 126be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: Return [ [[Add]] ] 127ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 128ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: long ConstantFolding.LongAddition() constant_folding (after) 129be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const3:j\d+]] LongConstant 3 130be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: Return [ [[Const3]] ] 131ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 132ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil public static long LongAddition() { 133ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil long a, b, c; 134ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil a = 1L; 135ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil b = 2L; 136ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a + b; 137ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil return c; 138ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil } 139ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 140ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil /** 141ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * Tiny three-register program exercising long constant folding 142ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * on subtraction. 143ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil */ 144ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 145ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: long ConstantFolding.LongSubtraction() constant_folding (before) 146be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const5:j\d+]] LongConstant 5 147be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const2:j\d+]] LongConstant 2 148be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Sub:j\d+]] Sub [ [[Const5]] [[Const2]] ] 149be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: Return [ [[Sub]] ] 150ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 151ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: long ConstantFolding.LongSubtraction() constant_folding (after) 152be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const3:j\d+]] LongConstant 3 153be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: Return [ [[Const3]] ] 154ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 155ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil public static long LongSubtraction() { 156ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil long a, b, c; 157ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil a = 5L; 158ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil b = 2L; 159ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a - b; 160ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil return c; 161ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil } 162ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 163ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil /** 164ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * Three-register program with a constant (static) condition. 165ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil */ 166ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 167ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: int ConstantFolding.StaticCondition() constant_folding (before) 168be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const5:i\d+]] IntConstant 5 169be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const2:i\d+]] IntConstant 2 170be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Cond:z\d+]] GreaterThanOrEqual [ [[Const5]] [[Const2]] ] 171be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: If [ [[Cond]] ] 172ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 173ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: int ConstantFolding.StaticCondition() constant_folding (after) 174be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const1:i\d+]] IntConstant 1 175be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: If [ [[Const1]] ] 176ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 177ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil public static int StaticCondition() { 178ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil int a, b, c; 179ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil a = 5; 180ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil b = 2; 181ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil if (a < b) 182ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a + b; 183ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil else 184ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a - b; 185ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil return c; 186ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil } 187ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 188ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil /** 189ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * Four-variable program with jumps leading to the creation of many 190ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * blocks. 191ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * 192ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * The intent of this test is to ensure that all constant expressions 193ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * are actually evaluated at compile-time, thanks to the reverse 194ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil * (forward) post-order traversal of the the dominator tree. 195ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil */ 196ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 197ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: int ConstantFolding.JumpsAndConditionals(boolean) constant_folding (before) 198be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const2:i\d+]] IntConstant 2 199be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const5:i\d+]] IntConstant 5 200be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Add:i\d+]] Add [ [[Const5]] [[Const2]] ] 201be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Sub:i\d+]] Sub [ [[Const5]] [[Const2]] ] 202be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Phi:i\d+]] Phi [ [[Add]] [[Sub]] ] 203be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: Return [ [[Phi]] ] 204ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 205ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil // CHECK-START: int ConstantFolding.JumpsAndConditionals(boolean) constant_folding (after) 206be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const3:i\d+]] IntConstant 3 207be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Const7:i\d+]] IntConstant 7 208be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: [[Phi:i\d+]] Phi [ [[Const7]] [[Const3]] ] 209be0cc08fb4faed1ab69361fcd030af65f9020393David Brazdil // CHECK-DAG: Return [ [[Phi]] ] 210ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil 211ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil public static int JumpsAndConditionals(boolean cond) { 212ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil int a, b, c; 213ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil a = 5; 214ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil b = 2; 215ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil if (cond) 216ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a + b; 217ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil else 218ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil c = a - b; 219ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil return c; 220ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil } 221ee690a3dd364c025ebc1767d9f84097bb7473eecDavid Brazdil} 222