Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/h8300/h8300.h @ 63:b7f97abdc517 gcc-4.6-20100522
update gcc from gcc-4.5.0 to gcc-4.6
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 24 May 2010 12:47:05 +0900 |
parents | 77e2b8dfacca |
children | f6334be47118 |
comparison
equal
deleted
inserted
replaced
56:3c8a44c06a95 | 63:b7f97abdc517 |
---|---|
606 /* 1 if N is a possible register number for function argument passing. | 606 /* 1 if N is a possible register number for function argument passing. |
607 On the H8, no registers are used in this way. */ | 607 On the H8, no registers are used in this way. */ |
608 | 608 |
609 #define FUNCTION_ARG_REGNO_P(N) (TARGET_QUICKCALL ? N < 3 : 0) | 609 #define FUNCTION_ARG_REGNO_P(N) (TARGET_QUICKCALL ? N < 3 : 0) |
610 | 610 |
611 /* When defined, the compiler allows registers explicitly used in the | 611 /* When this hook returns true for MODE, the compiler allows |
612 rtl to be used as spill registers but prevents the compiler from | 612 registers explicitly used in the rtl to be used as spill registers |
613 extending the lifetime of these registers. */ | 613 but prevents the compiler from extending the lifetime of these |
614 | 614 registers. */ |
615 #define SMALL_REGISTER_CLASSES 1 | 615 #define TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P hook_bool_mode_true |
616 | 616 |
617 /* Define a data type for recording info about an argument list | 617 /* Define a data type for recording info about an argument list |
618 during the scan of that argument list. This data type should | 618 during the scan of that argument list. This data type should |
619 hold all necessary information about the function itself | 619 hold all necessary information about the function itself |
620 and about the args processed so far, enough to enable macros | 620 and about the args processed so far, enough to enable macros |
799 && GET_CODE (XEXP (XEXP (XEXP (OP, 0), 0), 1)) == CONST_INT \ | 799 && GET_CODE (XEXP (XEXP (XEXP (OP, 0), 0), 1)) == CONST_INT \ |
800 && (TARGET_H8300S \ | 800 && (TARGET_H8300S \ |
801 || SYMBOL_REF_FLAG (XEXP (XEXP (XEXP (OP, 0), 0), 0)))) \ | 801 || SYMBOL_REF_FLAG (XEXP (XEXP (XEXP (OP, 0), 0), 0)))) \ |
802 || (GET_CODE (OP) == MEM \ | 802 || (GET_CODE (OP) == MEM \ |
803 && h8300_eightbit_constant_address_p (XEXP (OP, 0))) \ | 803 && h8300_eightbit_constant_address_p (XEXP (OP, 0))) \ |
804 || (GET_CODE (OP) == MEM && TARGET_H8300S \ | 804 || (GET_CODE (OP) == MEM && (TARGET_H8300S || TARGET_H8300SX) \ |
805 && GET_CODE (XEXP (OP, 0)) == CONST_INT)) | 805 && GET_CODE (XEXP (OP, 0)) == CONST_INT)) |
806 | 806 |
807 /* Multi-letter constraints starting with W are to be used for | 807 /* Multi-letter constraints starting with W are to be used for |
808 operands that require a memory operand, i.e,. that are never used | 808 operands that require a memory operand, i.e,. that are never used |
809 along with register constraints (see EXTRA_MEMORY_CONSTRAINTS). | 809 along with register constraints (see EXTRA_MEMORY_CONSTRAINTS). */ |
810 For operands that require a memory operand (or not) but that always | |
811 accept a register, a multi-letter constraint starting with Y should | |
812 be used instead. */ | |
813 | 810 |
814 #define OK_FOR_WU(OP) \ | 811 #define OK_FOR_WU(OP) \ |
815 (GET_CODE (OP) == MEM && OK_FOR_U (OP)) | 812 (GET_CODE (OP) == MEM && OK_FOR_U (OP)) |
816 | 813 |
817 #define OK_FOR_W(OP, STR) \ | 814 #define OK_FOR_W(OP, STR) \ |
820 | 817 |
821 #define CONSTRAINT_LEN_FOR_W(STR) \ | 818 #define CONSTRAINT_LEN_FOR_W(STR) \ |
822 ((STR)[1] == 'U' ? 2 \ | 819 ((STR)[1] == 'U' ? 2 \ |
823 : 0) | 820 : 0) |
824 | 821 |
825 /* We don't have any constraint starting with Y yet, but before | 822 /* Multi-letter constraints starting with Y are to be used for operands |
826 someone uses it for a one-letter constraint and we're left without | 823 that are constant immediates and have single 1 or 0 in their binary |
827 any upper-case constraints left, we reserve it for extensions | 824 representation. */ |
828 here. */ | 825 |
829 #define OK_FOR_Y(OP, STR) \ | 826 #define OK_FOR_Y2(OP) \ |
830 (0) | 827 ((GET_CODE (OP) == CONST_INT) && (exact_log2 (INTVAL (OP) & 0xff) != -1)) |
828 | |
829 #define OK_FOR_Y0(OP) \ | |
830 ((GET_CODE (OP) == CONST_INT) && (exact_log2 (~INTVAL (OP) & 0xff) != -1)) | |
831 | |
832 #define OK_FOR_Y(OP, STR) \ | |
833 ((STR)[1] == '2' ? OK_FOR_Y2 (OP) \ | |
834 : (STR)[1] == '0' ? OK_FOR_Y0 (OP) \ | |
835 : 0) | |
831 | 836 |
832 #define CONSTRAINT_LEN_FOR_Y(STR) \ | 837 #define CONSTRAINT_LEN_FOR_Y(STR) \ |
833 (0) | 838 ((STR)[1] == '2' ? 2 \ |
839 : (STR)[1] == '0' ? 2 \ | |
840 : 0) | |
834 | 841 |
835 #define OK_FOR_Z(OP) \ | 842 #define OK_FOR_Z(OP) \ |
836 (TARGET_H8300SX \ | 843 (TARGET_H8300SX \ |
837 && GET_CODE (OP) == MEM \ | 844 && GET_CODE (OP) == MEM \ |
838 && CONSTANT_P (XEXP ((OP), 0))) | 845 && CONSTANT_P (XEXP ((OP), 0))) |