diff -r 6e1161923897 -r fb2b47f0e067 src/hotspot/share/adlc/formssel.cpp --- a/src/hotspot/share/adlc/formssel.cpp Fri Jul 19 02:40:59 2019 +0000 +++ b/src/hotspot/share/adlc/formssel.cpp Tue Jul 16 14:42:36 2019 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1513,7 +1513,7 @@ MatchNode *mnode = strcmp(_matrule->_opType, "Set") ? _matrule : _matrule->_rChild; - mnode->count_instr_names(names); + if (mnode != NULL) mnode->count_instr_names(names); uint first = 1; // Start with the predicate supplied in the .ad file. @@ -1726,26 +1726,25 @@ const char *description = NULL; const char *value = NULL; // Check if user provided any opcode definitions - if( this != NULL ) { - // Update 'value' if user provided a definition in the instruction - switch (desired_opcode) { - case PRIMARY: - description = "primary()"; - if( _primary != NULL) { value = _primary; } - break; - case SECONDARY: - description = "secondary()"; - if( _secondary != NULL ) { value = _secondary; } - break; - case TERTIARY: - description = "tertiary()"; - if( _tertiary != NULL ) { value = _tertiary; } - break; - default: - assert( false, "ShouldNotReachHere();"); - break; - } + // Update 'value' if user provided a definition in the instruction + switch (desired_opcode) { + case PRIMARY: + description = "primary()"; + if( _primary != NULL) { value = _primary; } + break; + case SECONDARY: + description = "secondary()"; + if( _secondary != NULL ) { value = _secondary; } + break; + case TERTIARY: + description = "tertiary()"; + if( _tertiary != NULL ) { value = _tertiary; } + break; + default: + assert( false, "ShouldNotReachHere();"); + break; } + if (value != NULL) { fprintf(fp, "(%s /*%s*/)", value, description); } @@ -3413,7 +3412,6 @@ // Count occurrences of operands names in the leaves of the instruction // match rule. void MatchNode::count_instr_names( Dict &names ) { - if( this == NULL ) return; if( _lChild ) _lChild->count_instr_names(names); if( _rChild ) _rChild->count_instr_names(names); if( !_lChild && !_rChild ) {