Mercurial > hg > CbC > CbC_gcc
comparison gcc/tree-stdarg.c @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | b7f97abdc517 |
children | 04ced10e8804 |
comparison
equal
deleted
inserted
replaced
65:65488c3d617d | 67:f6334be47118 |
---|---|
24 #include "coretypes.h" | 24 #include "coretypes.h" |
25 #include "tm.h" | 25 #include "tm.h" |
26 #include "tree.h" | 26 #include "tree.h" |
27 #include "function.h" | 27 #include "function.h" |
28 #include "langhooks.h" | 28 #include "langhooks.h" |
29 #include "diagnostic.h" | |
30 #include "gimple-pretty-print.h" | 29 #include "gimple-pretty-print.h" |
31 #include "target.h" | 30 #include "target.h" |
32 #include "tree-flow.h" | 31 #include "tree-flow.h" |
33 #include "tree-pass.h" | 32 #include "tree-pass.h" |
34 #include "tree-stdarg.h" | 33 #include "tree-stdarg.h" |
511 { | 510 { |
512 tree rhs = gimple_assign_rhs1 (stmt); | 511 tree rhs = gimple_assign_rhs1 (stmt); |
513 enum tree_code rhs_code = gimple_assign_rhs_code (stmt); | 512 enum tree_code rhs_code = gimple_assign_rhs_code (stmt); |
514 | 513 |
515 /* x = *ap_temp; */ | 514 /* x = *ap_temp; */ |
516 if (gimple_assign_rhs_code (stmt) == INDIRECT_REF | 515 if (gimple_assign_rhs_code (stmt) == MEM_REF |
517 && TREE_OPERAND (rhs, 0) == use | 516 && TREE_OPERAND (rhs, 0) == use |
518 && TYPE_SIZE_UNIT (TREE_TYPE (rhs)) | 517 && TYPE_SIZE_UNIT (TREE_TYPE (rhs)) |
519 && host_integerp (TYPE_SIZE_UNIT (TREE_TYPE (rhs)), 1) | 518 && host_integerp (TYPE_SIZE_UNIT (TREE_TYPE (rhs)), 1) |
520 && si->offsets[SSA_NAME_VERSION (use)] != -1) | 519 && si->offsets[SSA_NAME_VERSION (use)] != -1) |
521 { | 520 { |
522 unsigned HOST_WIDE_INT gpr_size; | 521 unsigned HOST_WIDE_INT gpr_size; |
523 tree access_size = TYPE_SIZE_UNIT (TREE_TYPE (rhs)); | 522 tree access_size = TYPE_SIZE_UNIT (TREE_TYPE (rhs)); |
524 | 523 |
525 gpr_size = si->offsets[SSA_NAME_VERSION (use)] | 524 gpr_size = si->offsets[SSA_NAME_VERSION (use)] |
525 + tree_low_cst (TREE_OPERAND (rhs, 1), 0) | |
526 + tree_low_cst (access_size, 1); | 526 + tree_low_cst (access_size, 1); |
527 if (gpr_size >= VA_LIST_MAX_GPR_SIZE) | 527 if (gpr_size >= VA_LIST_MAX_GPR_SIZE) |
528 cfun->va_list_gpr_size = VA_LIST_MAX_GPR_SIZE; | 528 cfun->va_list_gpr_size = VA_LIST_MAX_GPR_SIZE; |
529 else if (gpr_size > cfun->va_list_gpr_size) | 529 else if (gpr_size > cfun->va_list_gpr_size) |
530 cfun->va_list_gpr_size = gpr_size; | 530 cfun->va_list_gpr_size = gpr_size; |
634 { | 634 { |
635 case BUILT_IN_VA_START: | 635 case BUILT_IN_VA_START: |
636 break; | 636 break; |
637 /* If old style builtins are used, don't optimize anything. */ | 637 /* If old style builtins are used, don't optimize anything. */ |
638 case BUILT_IN_SAVEREGS: | 638 case BUILT_IN_SAVEREGS: |
639 case BUILT_IN_ARGS_INFO: | |
640 case BUILT_IN_NEXT_ARG: | 639 case BUILT_IN_NEXT_ARG: |
641 va_list_escapes = true; | 640 va_list_escapes = true; |
642 continue; | 641 continue; |
643 default: | 642 default: |
644 continue; | 643 continue; |