comparison src/share/vm/adlc/output_c.cpp @ 10389:f15fe46d8c00

8015266: fix some -Wsign-compare warnings in adlc Reviewed-by: kvn
author twisti
date Thu, 30 May 2013 08:37:08 -0700
parents 705ef39fcaa9
children 650868c062a9
comparison
equal deleted inserted replaced
10388:320b4e0f0892 10389:f15fe46d8c00
461 uint *res_mask = new uint [cyclemasksize]; 461 uint *res_mask = new uint [cyclemasksize];
462 uint resources_used = 0; 462 uint resources_used = 0;
463 uint resources_used_exclusively = 0; 463 uint resources_used_exclusively = 0;
464 464
465 for (pipeclass->_resUsage.reset(); 465 for (pipeclass->_resUsage.reset();
466 (piperesource = (const PipeClassResourceForm *)pipeclass->_resUsage.iter()) != NULL; ) 466 (piperesource = (const PipeClassResourceForm*)pipeclass->_resUsage.iter()) != NULL; ) {
467 element_count++; 467 element_count++;
468 }
468 469
469 // Pre-compute the string length 470 // Pre-compute the string length
470 int templen; 471 int templen;
471 int commentlen = 0; 472 int commentlen = 0;
472 int max_cycles = 0; 473 int max_cycles = 0;
480 481
481 int maskdigit = 0; 482 int maskdigit = 0;
482 for (i = rescount; i > 0; i /= 10) 483 for (i = rescount; i > 0; i /= 10)
483 maskdigit++; 484 maskdigit++;
484 485
485 static const char * pipeline_use_cycle_mask = "Pipeline_Use_Cycle_Mask"; 486 static const char* pipeline_use_cycle_mask = "Pipeline_Use_Cycle_Mask";
486 static const char * pipeline_use_element = "Pipeline_Use_Element"; 487 static const char* pipeline_use_element = "Pipeline_Use_Element";
487 488
488 templen = 1 + 489 templen = 1 +
489 (int)(strlen(pipeline_use_cycle_mask) + (int)strlen(pipeline_use_element) + 490 (int)(strlen(pipeline_use_cycle_mask) + (int)strlen(pipeline_use_element) +
490 (cyclemasksize * 12) + masklen + (cycledigit * 2) + 30) * element_count; 491 (cyclemasksize * 12) + masklen + (cycledigit * 2) + 30) * element_count;
491 492
494 char * last_comma = NULL; 495 char * last_comma = NULL;
495 496
496 templen = 0; 497 templen = 0;
497 498
498 for (pipeclass->_resUsage.reset(); 499 for (pipeclass->_resUsage.reset();
499 (piperesource = (const PipeClassResourceForm *)pipeclass->_resUsage.iter()) != NULL; ) { 500 (piperesource = (const PipeClassResourceForm*)pipeclass->_resUsage.iter()) != NULL; ) {
500 int used_mask = pipeline->_resdict[piperesource->_resource]->is_resource()->mask(); 501 int used_mask = pipeline->_resdict[piperesource->_resource]->is_resource()->mask();
501 502
502 if (!used_mask) 503 if (!used_mask) {
503 fprintf(stderr, "*** used_mask is 0 ***\n"); 504 fprintf(stderr, "*** used_mask is 0 ***\n");
505 }
504 506
505 resources_used |= used_mask; 507 resources_used |= used_mask;
506 508
507 uint lb, ub; 509 uint lb, ub;
508 510
509 for (lb = 0; (used_mask & (1 << lb)) == 0; lb++); 511 for (lb = 0; (used_mask & (1 << lb)) == 0; lb++);
510 for (ub = 31; (used_mask & (1 << ub)) == 0; ub--); 512 for (ub = 31; (used_mask & (1 << ub)) == 0; ub--);
511 513
512 if (lb == ub) 514 if (lb == ub) {
513 resources_used_exclusively |= used_mask; 515 resources_used_exclusively |= used_mask;
516 }
514 517
515 int formatlen = 518 int formatlen =
516 sprintf(&resource_mask[templen], " %s(0x%0*x, %*d, %*d, %s %s(", 519 sprintf(&resource_mask[templen], " %s(0x%0*x, %*d, %*d, %s %s(",
517 pipeline_use_element, 520 pipeline_use_element,
518 masklen, used_mask, 521 masklen, used_mask,
524 527
525 memset(res_mask, 0, cyclemasksize * sizeof(uint)); 528 memset(res_mask, 0, cyclemasksize * sizeof(uint));
526 529
527 int cycles = piperesource->_cycles; 530 int cycles = piperesource->_cycles;
528 uint stage = pipeline->_stages.index(piperesource->_stage); 531 uint stage = pipeline->_stages.index(piperesource->_stage);
529 if (NameList::Not_in_list == stage) { 532 if ((uint)NameList::Not_in_list == stage) {
530 fprintf(stderr, 533 fprintf(stderr,
531 "pipeline_res_mask_initializer: " 534 "pipeline_res_mask_initializer: "
532 "semantic error: " 535 "semantic error: "
533 "pipeline stage undeclared: %s\n", 536 "pipeline stage undeclared: %s\n",
534 piperesource->_stage); 537 piperesource->_stage);
535 exit(1); 538 exit(1);
536 } 539 }
537 uint upper_limit = stage+cycles-1; 540 uint upper_limit = stage + cycles - 1;
538 uint lower_limit = stage-1; 541 uint lower_limit = stage - 1;
539 uint upper_idx = upper_limit >> 5; 542 uint upper_idx = upper_limit >> 5;
540 uint lower_idx = lower_limit >> 5; 543 uint lower_idx = lower_limit >> 5;
541 uint upper_position = upper_limit & 0x1f; 544 uint upper_position = upper_limit & 0x1f;
542 uint lower_position = lower_limit & 0x1f; 545 uint lower_position = lower_limit & 0x1f;
543 546
544 uint mask = (((uint)1) << upper_position) - 1; 547 uint mask = (((uint)1) << upper_position) - 1;
545 548
546 while ( upper_idx > lower_idx ) { 549 while (upper_idx > lower_idx) {
547 res_mask[upper_idx--] |= mask; 550 res_mask[upper_idx--] |= mask;
548 mask = (uint)-1; 551 mask = (uint)-1;
549 } 552 }
550 553
551 mask -= (((uint)1) << lower_position) - 1; 554 mask -= (((uint)1) << lower_position) - 1;
563 resource_mask[templen++] = ','; 566 resource_mask[templen++] = ',';
564 resource_mask[templen++] = '\n'; 567 resource_mask[templen++] = '\n';
565 } 568 }
566 569
567 resource_mask[templen] = 0; 570 resource_mask[templen] = 0;
568 if (last_comma) 571 if (last_comma) {
569 last_comma[0] = ' '; 572 last_comma[0] = ' ';
573 }
570 574
571 // See if the same string is in the table 575 // See if the same string is in the table
572 int ndx = pipeline_res_mask.index(resource_mask); 576 int ndx = pipeline_res_mask.index(resource_mask);
573 577
574 // No, add it to the table 578 // No, add it to the table
578 582
579 if (strlen(resource_mask) > 0) 583 if (strlen(resource_mask) > 0)
580 fprintf(fp_cpp, "static const Pipeline_Use_Element pipeline_res_mask_%03d[%d] = {\n%s};\n\n", 584 fprintf(fp_cpp, "static const Pipeline_Use_Element pipeline_res_mask_%03d[%d] = {\n%s};\n\n",
581 ndx+1, element_count, resource_mask); 585 ndx+1, element_count, resource_mask);
582 586
583 char * args = new char [9 + 2*masklen + maskdigit]; 587 char* args = new char [9 + 2*masklen + maskdigit];
584 588
585 sprintf(args, "0x%0*x, 0x%0*x, %*d", 589 sprintf(args, "0x%0*x, 0x%0*x, %*d",
586 masklen, resources_used, 590 masklen, resources_used,
587 masklen, resources_used_exclusively, 591 masklen, resources_used_exclusively,
588 maskdigit, element_count); 592 maskdigit, element_count);
589 593
590 pipeline_res_args.addName(args); 594 pipeline_res_args.addName(args);
591 } 595 }
592 else 596 else {
593 delete [] resource_mask; 597 delete [] resource_mask;
598 }
594 599
595 delete [] res_mask; 600 delete [] res_mask;
596 //delete [] res_masks; 601 //delete [] res_masks;
597 602
598 return (ndx); 603 return (ndx);
1785 uint new_num_opnds = 1; 1790 uint new_num_opnds = 1;
1786 node->_components.reset(); 1791 node->_components.reset();
1787 // Skip first unique operands. 1792 // Skip first unique operands.
1788 for( i = 1; i < cur_num_opnds; i++ ) { 1793 for( i = 1; i < cur_num_opnds; i++ ) {
1789 comp = node->_components.iter(); 1794 comp = node->_components.iter();
1790 if( (int)i != node->unique_opnds_idx(i) ) { 1795 if (i != node->unique_opnds_idx(i)) {
1791 break; 1796 break;
1792 } 1797 }
1793 new_num_opnds++; 1798 new_num_opnds++;
1794 } 1799 }
1795 // Replace not unique operands with next unique operands. 1800 // Replace not unique operands with next unique operands.
1796 for( ; i < cur_num_opnds; i++ ) { 1801 for( ; i < cur_num_opnds; i++ ) {
1797 comp = node->_components.iter(); 1802 comp = node->_components.iter();
1798 int j = node->unique_opnds_idx(i); 1803 uint j = node->unique_opnds_idx(i);
1799 // unique_opnds_idx(i) is unique if unique_opnds_idx(j) is not unique. 1804 // unique_opnds_idx(i) is unique if unique_opnds_idx(j) is not unique.
1800 if( j != node->unique_opnds_idx(j) ) { 1805 if( j != node->unique_opnds_idx(j) ) {
1801 fprintf(fp," set_opnd_array(%d, opnd_array(%d)->clone(C)); // %s\n", 1806 fprintf(fp," set_opnd_array(%d, opnd_array(%d)->clone(C)); // %s\n",
1802 new_num_opnds, i, comp->_name); 1807 new_num_opnds, i, comp->_name);
1803 // delete not unique edges here 1808 // delete not unique edges here