comparison src/share/vm/c1/c1_RangeCheckElimination.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 55fb97c4c58d
children 52b4284cb496
comparison
equal deleted inserted replaced
17935:7384f6a12fc1 17937:78bbf4d43a14
1 /* 1 /*
2 * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 2012, 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.
60 _ir = ir; 60 _ir = ir;
61 _number_of_instructions = Instruction::number_of_instructions(); 61 _number_of_instructions = Instruction::number_of_instructions();
62 _optimistic = ir->compilation()->is_optimistic(); 62 _optimistic = ir->compilation()->is_optimistic();
63 63
64 TRACE_RANGE_CHECK_ELIMINATION( 64 TRACE_RANGE_CHECK_ELIMINATION(
65 tty->print_cr(""); 65 tty->cr();
66 tty->print_cr("Range check elimination"); 66 tty->print_cr("Range check elimination");
67 ir->method()->print_name(tty); 67 ir->method()->print_name(tty);
68 tty->print_cr(""); 68 tty->cr();
69 ); 69 );
70 70
71 TRACE_RANGE_CHECK_ELIMINATION( 71 TRACE_RANGE_CHECK_ELIMINATION(
72 tty->print_cr("optimistic=%d", (int)_optimistic); 72 tty->print_cr("optimistic=%d", (int)_optimistic);
73 ); 73 );
1022 if ((bound->has_lower() || bound->has_upper()) && (bound->lower_instr() != phi || bound->upper_instr() != phi || bound->lower() != 0 || bound->upper() != 0)) { 1022 if ((bound->has_lower() || bound->has_upper()) && (bound->lower_instr() != phi || bound->upper_instr() != phi || bound->lower() != 0 || bound->upper() != 0)) {
1023 TRACE_RANGE_CHECK_ELIMINATION(tty->fill_to(2*block->dominator_depth()); 1023 TRACE_RANGE_CHECK_ELIMINATION(tty->fill_to(2*block->dominator_depth());
1024 tty->print("i%d", phi->id()); 1024 tty->print("i%d", phi->id());
1025 tty->print(": "); 1025 tty->print(": ");
1026 bound->print(); 1026 bound->print();
1027 tty->print_cr(""); 1027 tty->cr();
1028 ); 1028 );
1029 } 1029 }
1030 }); 1030 });
1031 1031
1032 while (!instr->as_BlockEnd()) { 1032 while (!instr->as_BlockEnd()) {
1037 if ((bound->has_lower() || bound->has_upper()) && (bound->lower_instr() != instr || bound->upper_instr() != instr || bound->lower() != 0 || bound->upper() != 0)) { 1037 if ((bound->has_lower() || bound->has_upper()) && (bound->lower_instr() != instr || bound->upper_instr() != instr || bound->lower() != 0 || bound->upper() != 0)) {
1038 TRACE_RANGE_CHECK_ELIMINATION(tty->fill_to(2*block->dominator_depth()); 1038 TRACE_RANGE_CHECK_ELIMINATION(tty->fill_to(2*block->dominator_depth());
1039 tty->print("i%d", instr->id()); 1039 tty->print("i%d", instr->id());
1040 tty->print(": "); 1040 tty->print(": ");
1041 bound->print(); 1041 bound->print();
1042 tty->print_cr(""); 1042 tty->cr();
1043 ); 1043 );
1044 } 1044 }
1045 } 1045 }
1046 } 1046 }
1047 instr = instr->next(); 1047 instr = instr->next();
1398 return _lower_instr; 1398 return _lower_instr;
1399 } 1399 }
1400 1400
1401 // print 1401 // print
1402 void RangeCheckEliminator::Bound::print() { 1402 void RangeCheckEliminator::Bound::print() {
1403 tty->print(""); 1403 tty->print("%s", "");
1404 if (this->_lower_instr || this->_lower != min_jint) { 1404 if (this->_lower_instr || this->_lower != min_jint) {
1405 if (this->_lower_instr) { 1405 if (this->_lower_instr) {
1406 tty->print("i%d", this->_lower_instr->id()); 1406 tty->print("i%d", this->_lower_instr->id());
1407 if (this->_lower > 0) { 1407 if (this->_lower > 0) {
1408 tty->print("+%d", _lower); 1408 tty->print("+%d", _lower);