mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 19:14:38 +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;
|
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
|
// Return 'true' if this instruction matches an ideal 'Copy*' node
|
||||||
int InstructForm::is_ideal_copy() const {
|
int InstructForm::is_ideal_copy() const {
|
||||||
|
@ -533,6 +536,12 @@ bool InstructForm::rematerialize(FormDict &globals, RegisterForm *registers ) {
|
||||||
if( data_type != Form::none )
|
if( data_type != Form::none )
|
||||||
rematerialize = true;
|
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
|
// Constants
|
||||||
if( _components.count() == 1 && _components[0]->is(Component::USE_DEF) )
|
if( _components.count() == 1 && _components[0]->is(Component::USE_DEF) )
|
||||||
rematerialize = true;
|
rematerialize = true;
|
||||||
|
|
|
@ -147,6 +147,7 @@ public:
|
||||||
virtual int is_empty_encoding() const; // _size=0 and/or _insencode empty
|
virtual int is_empty_encoding() const; // _size=0 and/or _insencode empty
|
||||||
virtual int is_tls_instruction() const; // tlsLoadP rule or ideal ThreadLocal
|
virtual int is_tls_instruction() const; // tlsLoadP rule or ideal ThreadLocal
|
||||||
virtual int is_ideal_copy() const; // node matches ideal 'Copy*'
|
virtual int is_ideal_copy() const; // node matches ideal 'Copy*'
|
||||||
|
virtual bool is_ideal_negD() const; // node matches ideal 'NegD'
|
||||||
virtual bool is_ideal_if() const; // node matches ideal 'If'
|
virtual bool is_ideal_if() const; // node matches ideal 'If'
|
||||||
virtual bool is_ideal_fastlock() const; // node matches 'FastLock'
|
virtual bool is_ideal_fastlock() const; // node matches 'FastLock'
|
||||||
virtual bool is_ideal_membar() const; // node matches ideal 'MemBarXXX'
|
virtual bool is_ideal_membar() const; // node matches ideal 'MemBarXXX'
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue