Mercurial > hg > graal-compiler
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 |