8248467: C2: compiler/intrinsics/object/TestClone fails with -XX:+VerifyGraphEdges

Fix assert by taking MemBarNodes into account whose precedence edge can be NULL.

Reviewed-by: kvn, thartmann
This commit is contained in:
Christian Hagedorn 2020-07-22 10:28:34 +02:00
parent 73c75ed838
commit 4f99e1fb11
2 changed files with 8 additions and 3 deletions
src/hotspot/share/opto
test/hotspot/jtreg/compiler/intrinsics/object

@ -2141,8 +2141,9 @@ void Node::verify_edges(Unique_Node_List &visited) {
}
assert( cnt == 0,"Mismatched edge count.");
} else if (n == NULL) {
assert(i >= req() || i == 0 || is_Region() || is_Phi() || is_ArrayCopy()
|| (is_Unlock() && i == req()-1), "only region, phi, arraycopy or unlock nodes have null data edges");
assert(i >= req() || i == 0 || is_Region() || is_Phi() || is_ArrayCopy() || (is_Unlock() && i == req()-1)
|| (is_MemBar() && i == 5), // the precedence edge to a membar can be removed during macro node expansion
"only region, phi, arraycopy, unlock or membar nodes have null data edges");
} else {
assert(n->is_top(), "sanity");
// Nothing to check.

@ -23,7 +23,7 @@
/*
* @test
* @bug 8033626 8246453
* @bug 8033626 8246453 8248467
* @summary assert(ex_map->jvms()->same_calls_as(_exceptions->jvms())) failed: all collected exceptions must come from the same place
* @modules java.base/jdk.internal.misc
* @library /test/lib
@ -35,6 +35,10 @@
* -XX:+IgnoreUnrecognizedVMOptions -XX:+StressReflectiveCode
* -XX:CompileCommand=compileonly,compiler.intrinsics.object.TestClone::test*
* compiler.intrinsics.object.TestClone
* @run main/othervm -XX:-TieredCompilation -Xbatch
* -XX:+IgnoreUnrecognizedVMOptions -XX:+StressReflectiveCode -XX:+VerifyGraphEdges
* -XX:CompileCommand=compileonly,compiler.intrinsics.object.TestClone::test*
* compiler.intrinsics.object.TestClone
*/
package compiler.intrinsics.object;