8341831: PhaseCFG::insert_anti_dependences asserts with "no loads"

Reviewed-by: dlong, kvn
This commit is contained in:
Igor Veresov 2024-10-14 16:44:53 +00:00
parent 9e262df813
commit a8a8b2deba
2 changed files with 11 additions and 3 deletions

View File

@ -763,7 +763,17 @@ Block* PhaseCFG::insert_anti_dependences(Block* LCA, Node* load, bool verify) {
worklist_def_use_mem_states.pop();
uint op = use_mem_state->Opcode();
assert(!use_mem_state->needs_anti_dependence_check(), "no loads");
#ifdef ASSERT
// CacheWB nodes are peculiar in a sense that they both are anti-dependent and produce memory.
// Allow them to be treated as a store.
bool is_cache_wb = false;
if (use_mem_state->is_Mach()) {
int ideal_op = use_mem_state->as_Mach()->ideal_Opcode();
is_cache_wb = (ideal_op == Op_CacheWB);
}
assert(!use_mem_state->needs_anti_dependence_check() || is_cache_wb, "no loads");
#endif
// MergeMems do not directly have anti-deps.
// Treat them as internal nodes in a forward tree of memory states,

View File

@ -43,8 +43,6 @@
# :hotspot_compiler
applications/ctw/modules/java_base_2.java 8341831 linux-x64
compiler/ciReplay/TestSAServer.java 8029528 generic-all
compiler/compilercontrol/jcmd/ClearDirectivesFileStackTest.java 8225370 generic-all