mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 11:04:34 +02:00
8016157: During CTW: C2: assert(!def_outside->member(r)) failed: Use of external LRG overlaps the same LRG defined in this block
Disable rematerialization for negD node Reviewed-by: kvn, roland
This commit is contained in:
parent
d6402d4452
commit
9129e6dc2b
2 changed files with 10 additions and 0 deletions
|
@ -235,6 +235,9 @@ bool InstructForm::is_parm(FormDict &globals) {
|
|||
return false;
|
||||
}
|
||||
|
||||
bool InstructForm::is_ideal_negD() const {
|
||||
return (_matrule && _matrule->_rChild && strcmp(_matrule->_rChild->_opType, "NegD") == 0);
|
||||
}
|
||||
|
||||
// Return 'true' if this instruction matches an ideal 'Copy*' node
|
||||
int InstructForm::is_ideal_copy() const {
|
||||
|
@ -533,6 +536,12 @@ bool InstructForm::rematerialize(FormDict &globals, RegisterForm *registers ) {
|
|||
if( data_type != Form::none )
|
||||
rematerialize = true;
|
||||
|
||||
// Ugly: until a better fix is implemented, disable rematerialization for
|
||||
// negD nodes because they are proved to be problematic.
|
||||
if (is_ideal_negD()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Constants
|
||||
if( _components.count() == 1 && _components[0]->is(Component::USE_DEF) )
|
||||
rematerialize = true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue