1 /*
2  * Copyright (c) 2011, 2018, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.
8  *
9  * This code is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12  * version 2 for more details (a copy is included in the LICENSE file that
13  * accompanied this code).
14  *
15  * You should have received a copy of the GNU General Public License version
16  * 2 along with this work; if not, write to the Free Software Foundation,
17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20  * or visit www.oracle.com if you need additional information or have any
21  * questions.
22  */
23 
24 
25 package org.graalvm.compiler.jtt.loop;
26 
27 import org.junit.Test;
28 
29 import org.graalvm.compiler.jtt.JTTTest;
30 
31 public class LoopInline extends JTTTest {
32 
test(int arg)33     public static int test(int arg) {
34         int count = 0;
35         for (int i = 0; i < arg; i++) {
36             count += foo(i);
37             if (count > 15) {
38                 count -= foo(3);
39                 break;
40             }
41         }
42         return count;
43     }
44 
foo(int t)45     public static int foo(int t) {
46         int sum = 0;
47         for (int i = 0; i < t; i++) {
48             sum += i;
49             if (i == 4) {
50                 sum += foo2(sum);
51                 break;
52             }
53         }
54         return sum;
55     }
56 
foo2(int i)57     public static int foo2(int i) {
58         int j = i;
59         int sum = 0;
60         while (j > 0) {
61             sum += j * j;
62             j--;
63         }
64         return sum;
65     }
66 
67     @Test
run0()68     public void run0() throws Throwable {
69         runTest("test", 0);
70     }
71 
72     @Test
run1()73     public void run1() throws Throwable {
74         runTest("test", 10);
75     }
76 
77 }
78