diff -r 9baa91bc7567 -r fc6cfe40e32a src/hotspot/share/adlc/output_c.cpp --- a/src/hotspot/share/adlc/output_c.cpp Fri Jul 13 11:21:55 2018 +0800 +++ b/src/hotspot/share/adlc/output_c.cpp Thu Jul 12 16:31:28 2018 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2018, 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 @@ -1936,6 +1936,7 @@ _AD.syntax_err( _ins_encode._linenum, "Parameter %s not passed to enc_class %s from instruct %s.\n", rep_var, _encoding._name, _inst._ident); + assert(false, "inst_rep_var == NULL, cannot continue."); } // Check if instruction's actual parameter is a local name in the instruction @@ -1976,8 +1977,8 @@ } else { // Check for unimplemented functionality before hard failure - assert( strcmp(opc->_ident,"label")==0, "Unimplemented() Label"); - assert( false, "ShouldNotReachHere()"); + assert(opc != NULL && strcmp(opc->_ident, "label") == 0, "Unimplemented Label"); + assert(false, "ShouldNotReachHere()"); } } // done checking which operand this is. } else { @@ -2450,8 +2451,8 @@ } else { // Check for unimplemented functionality before hard failure - assert( strcmp(opc->_ident,"label")==0, "Unimplemented() Label"); - assert( false, "ShouldNotReachHere()"); + assert(opc != NULL && strcmp(opc->_ident, "label") == 0, "Unimplemented Label"); + assert(false, "ShouldNotReachHere()"); } // all done } @@ -3305,9 +3306,11 @@ // Output the definitions for machine node specific pipeline data _machnodes.reset(); - for ( ; (machnode = (MachNodeForm*)_machnodes.iter()) != NULL; ) { - fprintf(_CPP_PIPELINE_file._fp, "const Pipeline * %sNode::pipeline() const { return (&pipeline_class_%03d); }\n", - machnode->_ident, ((class PipeClassForm *)_pipeline->_classdict[machnode->_machnode_pipe])->_num); + if (_pipeline != NULL) { + for ( ; (machnode = (MachNodeForm*)_machnodes.iter()) != NULL; ) { + fprintf(_CPP_PIPELINE_file._fp, "const Pipeline * %sNode::pipeline() const { return (&pipeline_class_%03d); }\n", + machnode->_ident, ((class PipeClassForm *)_pipeline->_classdict[machnode->_machnode_pipe])->_num); + } } fprintf(_CPP_PIPELINE_file._fp, "\n"); @@ -3315,13 +3318,15 @@ // Output the definitions for instruction pipeline static data references _instructions.reset(); - for ( ; (instr = (InstructForm*)_instructions.iter()) != NULL; ) { - if (instr->_ins_pipe && _pipeline->_classlist.search(instr->_ins_pipe)) { - fprintf(_CPP_PIPELINE_file._fp, "\n"); - fprintf(_CPP_PIPELINE_file._fp, "const Pipeline * %*sNode::pipeline_class() { return (&pipeline_class_%03d); }\n", - max_ident_len, instr->_ident, ((class PipeClassForm *)_pipeline->_classdict[instr->_ins_pipe])->_num); - fprintf(_CPP_PIPELINE_file._fp, "const Pipeline * %*sNode::pipeline() const { return (&pipeline_class_%03d); }\n", - max_ident_len, instr->_ident, ((class PipeClassForm *)_pipeline->_classdict[instr->_ins_pipe])->_num); + if (_pipeline != NULL) { + for ( ; (instr = (InstructForm*)_instructions.iter()) != NULL; ) { + if (instr->_ins_pipe && _pipeline->_classlist.search(instr->_ins_pipe)) { + fprintf(_CPP_PIPELINE_file._fp, "\n"); + fprintf(_CPP_PIPELINE_file._fp, "const Pipeline * %*sNode::pipeline_class() { return (&pipeline_class_%03d); }\n", + max_ident_len, instr->_ident, ((class PipeClassForm *)_pipeline->_classdict[instr->_ins_pipe])->_num); + fprintf(_CPP_PIPELINE_file._fp, "const Pipeline * %*sNode::pipeline() const { return (&pipeline_class_%03d); }\n", + max_ident_len, instr->_ident, ((class PipeClassForm *)_pipeline->_classdict[instr->_ins_pipe])->_num); + } } } }