comparison src/share/vm/adlc/output_h.cpp @ 17937:78bbf4d43a14

8037816: Fix for 8036122 breaks build with Xcode5/clang 8043029: Change 8037816 breaks HS build with older GCC versions which don't support diagnostic pragmas 8043164: Format warning in traceStream.hpp Summary: Backport of main fix + two corrections, enables clang compilation, turns on format attributes, corrects/mutes warnings Reviewed-by: kvn, coleenp, iveresov, twisti
author drchase
date Thu, 22 May 2014 15:52:41 -0400
parents 17b2fbdb6637
children 52b4284cb496
comparison
equal deleted inserted replaced
17935:7384f6a12fc1 17937:78bbf4d43a14
1 /* 1 /*
2 * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
384 384
385 // Generate the format rule for condition codes 385 // Generate the format rule for condition codes
386 static void defineCCodeDump(OperandForm* oper, FILE *fp, int i) { 386 static void defineCCodeDump(OperandForm* oper, FILE *fp, int i) {
387 assert(oper != NULL, "what"); 387 assert(oper != NULL, "what");
388 CondInterface* cond = oper->_interface->is_CondInterface(); 388 CondInterface* cond = oper->_interface->is_CondInterface();
389 fprintf(fp, " if( _c%d == BoolTest::eq ) st->print(\"%s\");\n",i,cond->_equal_format); 389 fprintf(fp, " if( _c%d == BoolTest::eq ) st->print_raw(\"%s\");\n",i,cond->_equal_format);
390 fprintf(fp, " else if( _c%d == BoolTest::ne ) st->print(\"%s\");\n",i,cond->_not_equal_format); 390 fprintf(fp, " else if( _c%d == BoolTest::ne ) st->print_raw(\"%s\");\n",i,cond->_not_equal_format);
391 fprintf(fp, " else if( _c%d == BoolTest::le ) st->print(\"%s\");\n",i,cond->_less_equal_format); 391 fprintf(fp, " else if( _c%d == BoolTest::le ) st->print_raw(\"%s\");\n",i,cond->_less_equal_format);
392 fprintf(fp, " else if( _c%d == BoolTest::ge ) st->print(\"%s\");\n",i,cond->_greater_equal_format); 392 fprintf(fp, " else if( _c%d == BoolTest::ge ) st->print_raw(\"%s\");\n",i,cond->_greater_equal_format);
393 fprintf(fp, " else if( _c%d == BoolTest::lt ) st->print(\"%s\");\n",i,cond->_less_format); 393 fprintf(fp, " else if( _c%d == BoolTest::lt ) st->print_raw(\"%s\");\n",i,cond->_less_format);
394 fprintf(fp, " else if( _c%d == BoolTest::gt ) st->print(\"%s\");\n",i,cond->_greater_format); 394 fprintf(fp, " else if( _c%d == BoolTest::gt ) st->print_raw(\"%s\");\n",i,cond->_greater_format);
395 fprintf(fp, " else if( _c%d == BoolTest::overflow ) st->print(\"%s\");\n",i,cond->_overflow_format); 395 fprintf(fp, " else if( _c%d == BoolTest::overflow ) st->print_raw(\"%s\");\n",i,cond->_overflow_format);
396 fprintf(fp, " else if( _c%d == BoolTest::no_overflow ) st->print(\"%s\");\n",i,cond->_no_overflow_format); 396 fprintf(fp, " else if( _c%d == BoolTest::no_overflow ) st->print_raw(\"%s\");\n",i,cond->_no_overflow_format);
397 } 397 }
398 398
399 // Output code that dumps constant values, increment "i" if type is constant 399 // Output code that dumps constant values, increment "i" if type is constant
400 static uint dump_spec_constant(FILE *fp, const char *ideal_type, uint i, OperandForm* oper) { 400 static uint dump_spec_constant(FILE *fp, const char *ideal_type, uint i, OperandForm* oper) {
401 if (!strcmp(ideal_type, "ConI")) { 401 if (!strcmp(ideal_type, "ConI")) {
414 else if (!strcmp(ideal_type, "ConNKlass")) { 414 else if (!strcmp(ideal_type, "ConNKlass")) {
415 fprintf(fp," _c%d->dump_on(st);\n", i); 415 fprintf(fp," _c%d->dump_on(st);\n", i);
416 ++i; 416 ++i;
417 } 417 }
418 else if (!strcmp(ideal_type, "ConL")) { 418 else if (!strcmp(ideal_type, "ConL")) {
419 fprintf(fp," st->print(\"#\" INT64_FORMAT, _c%d);\n", i); 419 fprintf(fp," st->print(\"#\" INT64_FORMAT, (int64_t)_c%d);\n", i);
420 fprintf(fp," st->print(\"/\" PTR64_FORMAT, _c%d);\n", i); 420 fprintf(fp," st->print(\"/\" PTR64_FORMAT, (uint64_t)_c%d);\n", i);
421 ++i; 421 ++i;
422 } 422 }
423 else if (!strcmp(ideal_type, "ConF")) { 423 else if (!strcmp(ideal_type, "ConF")) {
424 fprintf(fp," st->print(\"#%%f\", _c%d);\n", i); 424 fprintf(fp," st->print(\"#%%f\", _c%d);\n", i);
425 fprintf(fp," jint _c%di = JavaValue(_c%d).get_jint();\n", i, i); 425 fprintf(fp," jint _c%di = JavaValue(_c%d).get_jint();\n", i, i);
427 ++i; 427 ++i;
428 } 428 }
429 else if (!strcmp(ideal_type, "ConD")) { 429 else if (!strcmp(ideal_type, "ConD")) {
430 fprintf(fp," st->print(\"#%%f\", _c%d);\n", i); 430 fprintf(fp," st->print(\"#%%f\", _c%d);\n", i);
431 fprintf(fp," jlong _c%dl = JavaValue(_c%d).get_jlong();\n", i, i); 431 fprintf(fp," jlong _c%dl = JavaValue(_c%d).get_jlong();\n", i, i);
432 fprintf(fp," st->print(\"/\" PTR64_FORMAT, _c%dl);\n", i); 432 fprintf(fp," st->print(\"/\" PTR64_FORMAT, (uint64_t)_c%dl);\n", i);
433 ++i; 433 ++i;
434 } 434 }
435 else if (!strcmp(ideal_type, "Bool")) { 435 else if (!strcmp(ideal_type, "Bool")) {
436 defineCCodeDump(oper, fp,i); 436 defineCCodeDump(oper, fp,i);
437 ++i; 437 ++i;
469 469
470 // Check if this is a standard string or a replacement variable 470 // Check if this is a standard string or a replacement variable
471 if ( string != NameList::_signal ) { 471 if ( string != NameList::_signal ) {
472 // Normal string 472 // Normal string
473 // Pass through to st->print 473 // Pass through to st->print
474 fprintf(fp," st->print(\"%s\");\n", string); 474 fprintf(fp," st->print_raw(\"%s\");\n", string);
475 } else { 475 } else {
476 // Replacement variable 476 // Replacement variable
477 const char *rep_var = oper._format->_rep_vars.iter(); 477 const char *rep_var = oper._format->_rep_vars.iter();
478 // Check that it is a local name, and an operand 478 // Check that it is a local name, and an operand
479 const Form* form = oper._localNames[rep_var]; 479 const Form* form = oper._localNames[rep_var];
540 540
541 // Check if this is a standard string or a replacement variable 541 // Check if this is a standard string or a replacement variable
542 if ( string != NameList::_signal ) { 542 if ( string != NameList::_signal ) {
543 // Normal string 543 // Normal string
544 // Pass through to st->print 544 // Pass through to st->print
545 fprintf(fp," st->print(\"%s\");\n", string); 545 fprintf(fp," st->print_raw(\"%s\");\n", string);
546 } else { 546 } else {
547 // Replacement variable 547 // Replacement variable
548 const char *rep_var = oper._format->_rep_vars.iter(); 548 const char *rep_var = oper._format->_rep_vars.iter();
549 // Check that it is a local name, and an operand 549 // Check that it is a local name, and an operand
550 const Form* form = oper._localNames[rep_var]; 550 const Form* form = oper._localNames[rep_var];
667 assert( false, "ShouldNotReachHere()"); 667 assert( false, "ShouldNotReachHere()");
668 } 668 }
669 } else if( string == NameList::_signal2 ) // Raw program text 669 } else if( string == NameList::_signal2 ) // Raw program text
670 fputs(inst._format->_strings.iter(), fp); 670 fputs(inst._format->_strings.iter(), fp);
671 else 671 else
672 fprintf(fp,"st->print(\"%s\");\n", string); 672 fprintf(fp,"st->print_raw(\"%s\");\n", string);
673 } // Done with all format strings 673 } // Done with all format strings
674 } // Done generating the user-defined portion of the format 674 } // Done generating the user-defined portion of the format
675 675
676 // Add call debug info automatically 676 // Add call debug info automatically
677 Form::CallType call_type = inst.is_ideal_call(); 677 Form::CallType call_type = inst.is_ideal_call();
694 fprintf(fp," st->print(\" %%s\", _name);"); 694 fprintf(fp," st->print(\" %%s\", _name);");
695 break; 695 break;
696 default: 696 default:
697 assert(0,"ShouldNotReachHere"); 697 assert(0,"ShouldNotReachHere");
698 } 698 }
699 fprintf(fp, " st->print_cr(\"\");\n" ); 699 fprintf(fp, " st->cr();\n" );
700 fprintf(fp, " if (_jvms) _jvms->format(ra, this, st); else st->print_cr(\" No JVM State Info\");\n" ); 700 fprintf(fp, " if (_jvms) _jvms->format(ra, this, st); else st->print_cr(\" No JVM State Info\");\n" );
701 fprintf(fp, " st->print(\" # \");\n" ); 701 fprintf(fp, " st->print(\" # \");\n" );
702 fprintf(fp, " if( _jvms && _oop_map ) _oop_map->print_on(st);\n"); 702 fprintf(fp, " if( _jvms && _oop_map ) _oop_map->print_on(st);\n");
703 } 703 }
704 else if(inst.is_ideal_safepoint()) { 704 else if(inst.is_ideal_safepoint()) {
705 fprintf(fp, " st->print(\"\");\n" ); 705 fprintf(fp, " st->print_raw(\"\");\n" );
706 fprintf(fp, " if (_jvms) _jvms->format(ra, this, st); else st->print_cr(\" No JVM State Info\");\n" ); 706 fprintf(fp, " if (_jvms) _jvms->format(ra, this, st); else st->print_cr(\" No JVM State Info\");\n" );
707 fprintf(fp, " st->print(\" # \");\n" ); 707 fprintf(fp, " st->print(\" # \");\n" );
708 fprintf(fp, " if( _jvms && _oop_map ) _oop_map->print_on(st);\n"); 708 fprintf(fp, " if( _jvms && _oop_map ) _oop_map->print_on(st);\n");
709 } 709 }
710 else if( inst.is_ideal_if() ) { 710 else if( inst.is_ideal_if() ) {