Skip to content

Commit 0cec11d

Browse files
y1yang0kuaiwei
andcommittedJul 20, 2021
8270307: C2: assert(false) failed: bad AD file after JDK-8267687
Co-authored-by: Kuai Wei <kuaiwei.kw@alibaba-inc.com> Reviewed-by: kvn, thartmann
1 parent c130451 commit 0cec11d

File tree

2 files changed

+62
-0
lines changed

2 files changed

+62
-0
lines changed
 

‎src/hotspot/share/opto/movenode.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,9 @@ const Type* CMoveNode::Value(PhaseGVN* phase) const {
155155
if (phase->type(in(Condition)) == Type::TOP) {
156156
return Type::TOP;
157157
}
158+
if (phase->type(in(IfTrue)) == Type::TOP || phase->type(in(IfFalse)) == Type::TOP) {
159+
return Type::TOP;
160+
}
158161
const Type* t = phase->type(in(IfFalse))->meet_speculative(phase->type(in(IfTrue)));
159162
return t->filter(_type);
160163
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
* Copyright (c) 2021, Alibaba Group Holding Limited. 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+
/*
26+
* @test
27+
* @bug 8270307
28+
* @summary C2: assert(false) failed: bad AD file after JDK-8267687
29+
* @library /test/lib
30+
* @run main/othervm -Xcomp -XX:-TieredCompilation -XX:CompileOnly=TestCMoveHasTopInput.vMeth TestCMoveHasTopInput
31+
*/
32+
33+
public class TestCMoveHasTopInput {
34+
public static boolean arr[] = new boolean[20];
35+
36+
public void vMeth(long l) {
37+
for (int a = 2; a < 155; a++) {
38+
for (int b = 1; b < 10; ++b) {
39+
for (int c = 1; c < 2; c++) {
40+
l += 3 * l;
41+
arr[b - 1] = false;
42+
switch (a) {
43+
case 14:
44+
case 17:
45+
l -= b;
46+
break;
47+
}
48+
}
49+
}
50+
}
51+
}
52+
53+
public static void main(String... args) {
54+
TestCMoveHasTopInput test = new TestCMoveHasTopInput();
55+
for (int i = 0; i < 10; i++) {
56+
test.vMeth(i);
57+
}
58+
}
59+
}

0 commit comments

Comments
 (0)
Please sign in to comment.