hotspot/test/compiler/loopopts/BadPredicateAfterPartialPeel.java
author duke
Wed, 05 Jul 2017 22:24:41 +0200
changeset 41867 d62173b931bf
parent 41705 332239c052cc
permissions -rw-r--r--
Merge
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
35558
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
     1
/*
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
     2
 * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
     4
 *
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
     7
 * published by the Free Software Foundation.
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
     8
 *
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    13
 * accompanied this code).
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    14
 *
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    18
 *
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    21
 * questions.
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    22
 */
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    23
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    24
/**
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    25
 * @test
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    26
 * @bug 8146792
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    27
 * @summary Predicate moved after partial peel may lead to broken graph
40059
c2304140ed64 8132919: Put compiler tests in packages
tpivovarova
parents: 35558
diff changeset
    28
 * @run main/othervm -XX:-TieredCompilation -XX:-BackgroundCompilation
c2304140ed64 8132919: Put compiler tests in packages
tpivovarova
parents: 35558
diff changeset
    29
 *      -XX:-UseOnStackReplacement
c2304140ed64 8132919: Put compiler tests in packages
tpivovarova
parents: 35558
diff changeset
    30
 *      -XX:CompileCommand=compileonly,compiler.loopopts.BadPredicateAfterPartialPeel::m
c2304140ed64 8132919: Put compiler tests in packages
tpivovarova
parents: 35558
diff changeset
    31
 *      -XX:CompileCommand=dontinline,compiler.loopopts.BadPredicateAfterPartialPeel::not_inlined*
c2304140ed64 8132919: Put compiler tests in packages
tpivovarova
parents: 35558
diff changeset
    32
 *      -XX:CompileCommand=quiet
c2304140ed64 8132919: Put compiler tests in packages
tpivovarova
parents: 35558
diff changeset
    33
 *      compiler.loopopts.BadPredicateAfterPartialPeel
35558
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    34
 */
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    35
40059
c2304140ed64 8132919: Put compiler tests in packages
tpivovarova
parents: 35558
diff changeset
    36
package compiler.loopopts;
c2304140ed64 8132919: Put compiler tests in packages
tpivovarova
parents: 35558
diff changeset
    37
35558
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    38
public class BadPredicateAfterPartialPeel {
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    39
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    40
    static void not_inlined1() {}
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    41
    static void not_inlined4() {}
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    42
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    43
    static int m_helper(int i, int i3, int i4) {
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    44
        return i3 == 4 ? i4 : i;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    45
    }
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    46
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    47
    static float[] array = new float[1000];
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    48
    static int[] array2 = new int[1000];
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    49
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    50
    boolean flag;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    51
    int j;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    52
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    53
    static void m(BadPredicateAfterPartialPeel o1, BadPredicateAfterPartialPeel o2, BadPredicateAfterPartialPeel o, int i4) {
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    54
        int i1 = 1;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    55
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    56
        // To delay partial peeling to the loop opts pass right before CCP
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    57
        int i2 = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    58
        for (; i2 < 10; i2 += i1);
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    59
        i2 = i2 / 10;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    60
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    61
        // Simplified during CCP:
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    62
        int i3 = 2;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    63
        for (; i3 < 4; i3 *= 2);
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    64
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    65
        // Loop is partial peeled right before CCP
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    66
        int i = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    67
        boolean b = true;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    68
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    69
        not_inlined1();
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    70
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    71
        array[0] = -1;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    72
        do {
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    73
            // peeled section starts here
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    74
            o.flag = false;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    75
            o.j = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    76
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    77
            if (b) {
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    78
                // The following store will be pinned between
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    79
                // predicates and the loop after partial peeling. All
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    80
                // control flow will be optimized out and so nothing
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    81
                // will prevent predicates from being moved out the
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    82
                // loop.
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    83
                array[i] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    84
            }
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    85
            if (array[0] != 0) {
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    86
            }
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    87
            if (i >= 10) {
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    88
                // peeled section ends here
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    89
                return;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    90
            }
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    91
            i += i2;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    92
            b = false;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    93
            int i5 = m_helper(i, i3, i4); // This will be simpliflied during CCP
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    94
            if (array[i5] != 0) { // and this will become a predicate
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    95
            }
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    96
            if (o2.flag) {
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    97
            }
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    98
            // A bunch of stuff to grow loop body size and prevent peeling:
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
    99
            array2[0] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   100
            array2[1] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   101
            array2[2] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   102
            array2[3] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   103
            array2[4] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   104
            array2[5] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   105
            array2[6] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   106
            array2[7] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   107
            array2[8] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   108
            array2[9] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   109
            array2[10] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   110
            array2[11] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   111
            array2[12] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   112
            array2[13] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   113
            array2[14] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   114
            array2[15] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   115
            array2[16] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   116
            array2[17] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   117
            array2[18] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   118
            array2[19] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   119
            array2[20] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   120
            array2[21] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   121
            array2[22] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   122
            array2[23] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   123
            array2[24] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   124
            array2[25] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   125
            array2[26] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   126
            array2[27] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   127
            array2[28] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   128
            array2[29] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   129
            array2[30] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   130
            array2[31] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   131
            array2[32] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   132
            array2[33] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   133
            array2[34] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   134
            array2[35] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   135
            array2[36] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   136
            array2[37] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   137
            array2[38] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   138
            array2[39] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   139
            array2[40] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   140
            array2[41] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   141
            array2[42] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   142
            array2[43] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   143
            array2[44] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   144
            array2[45] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   145
            array2[46] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   146
            array2[47] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   147
            array2[48] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   148
            array2[49] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   149
            array2[50] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   150
            array2[51] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   151
            array2[52] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   152
            array2[53] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   153
            array2[54] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   154
            array2[55] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   155
            array2[56] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   156
            array2[57] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   157
            array2[58] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   158
            array2[59] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   159
            array2[60] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   160
            array2[61] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   161
            array2[62] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   162
            array2[63] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   163
            array2[64] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   164
            array2[65] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   165
            array2[66] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   166
            array2[67] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   167
            array2[68] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   168
            array2[69] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   169
            array2[70] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   170
            array2[71] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   171
            array2[72] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   172
            array2[73] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   173
            array2[74] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   174
            array2[75] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   175
            array2[76] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   176
            array2[77] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   177
            array2[78] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   178
            array2[79] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   179
            array2[80] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   180
            array2[81] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   181
            array2[82] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   182
            array2[83] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   183
            array2[84] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   184
            array2[85] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   185
            array2[86] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   186
            array2[87] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   187
            array2[88] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   188
            array2[89] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   189
            array2[90] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   190
            array2[91] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   191
            array2[92] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   192
            array2[93] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   193
            array2[94] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   194
            array2[95] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   195
            array2[96] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   196
            array2[97] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   197
            array2[98] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   198
            array2[99] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   199
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   200
            array2[100] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   201
            array2[101] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   202
            array2[102] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   203
            array2[103] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   204
            array2[104] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   205
            array2[105] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   206
            array2[106] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   207
            array2[107] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   208
            array2[108] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   209
            array2[109] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   210
            array2[110] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   211
            array2[111] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   212
            array2[112] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   213
            array2[113] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   214
            array2[114] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   215
            array2[115] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   216
            array2[116] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   217
            array2[117] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   218
            array2[118] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   219
            array2[119] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   220
            array2[120] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   221
            array2[121] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   222
            array2[122] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   223
            array2[123] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   224
            array2[124] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   225
            array2[125] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   226
            array2[126] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   227
            array2[127] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   228
            array2[128] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   229
            array2[129] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   230
            array2[130] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   231
            array2[131] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   232
            array2[132] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   233
            array2[133] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   234
            array2[134] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   235
            array2[135] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   236
            array2[136] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   237
            array2[137] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   238
            array2[138] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   239
            array2[139] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   240
            array2[140] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   241
            array2[141] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   242
            array2[142] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   243
            array2[143] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   244
            array2[144] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   245
            array2[145] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   246
            array2[146] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   247
            array2[147] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   248
            array2[148] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   249
            array2[149] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   250
            array2[150] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   251
            array2[151] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   252
            array2[152] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   253
            array2[153] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   254
            array2[154] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   255
            array2[155] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   256
            array2[156] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   257
            array2[157] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   258
            array2[158] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   259
            array2[159] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   260
            array2[160] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   261
            array2[161] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   262
            array2[162] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   263
            array2[163] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   264
            array2[164] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   265
            array2[165] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   266
            array2[166] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   267
            array2[167] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   268
            array2[168] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   269
            array2[169] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   270
            array2[170] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   271
            array2[171] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   272
            array2[172] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   273
            array2[173] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   274
            array2[174] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   275
            array2[175] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   276
            array2[176] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   277
            array2[177] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   278
            array2[178] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   279
            array2[179] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   280
            array2[180] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   281
            array2[181] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   282
            array2[182] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   283
            array2[183] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   284
            array2[184] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   285
            array2[185] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   286
            array2[186] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   287
            array2[187] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   288
            array2[188] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   289
            array2[189] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   290
            array2[190] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   291
            array2[191] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   292
            array2[192] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   293
            array2[193] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   294
            array2[194] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   295
            array2[195] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   296
            array2[196] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   297
            array2[197] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   298
            array2[198] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   299
            array2[199] = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   300
            if (o1.j >= 20) {
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   301
                break;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   302
            }
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   303
            o1.j++;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   304
        } while(true);
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   305
        not_inlined4();
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   306
    }
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   307
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   308
    static public void main(String[] args) {
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   309
        BadPredicateAfterPartialPeel o1 = new BadPredicateAfterPartialPeel();
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   310
        BadPredicateAfterPartialPeel o2 = new BadPredicateAfterPartialPeel();
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   311
        for (int i = 0; i < 20000; i++) {
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   312
            o1.j = 0;
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   313
            m(o1, o2, o2, 0);
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   314
            m_helper(i, 2, i); // pollute profile
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   315
        }
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   316
    }
9b3b2740c3ec 8146792: Predicate moved after partial peel may lead to broken graph
roland
parents:
diff changeset
   317
}