comparison gcc/config/pdp11/pdp11.h @ 55:77e2b8dfacca gcc-4.4.5

update it from 4.4.3 to 4.5.0
author ryoma <e075725@ie.u-ryukyu.ac.jp>
date Fri, 12 Feb 2010 23:39:51 +0900
parents a06113de4d67
children b7f97abdc517
comparison
equal deleted inserted replaced
52:c156f1bd5cd9 55:77e2b8dfacca
244 #define STACK_POINTER_REGNUM 6 244 #define STACK_POINTER_REGNUM 6
245 245
246 /* Base register for access to local variables of the function. */ 246 /* Base register for access to local variables of the function. */
247 #define FRAME_POINTER_REGNUM 5 247 #define FRAME_POINTER_REGNUM 5
248 248
249 /* Value should be nonzero if functions must have frame pointers.
250 Zero means the frame pointer need not be set up (and parms
251 may be accessed via the stack pointer) in functions that seem suitable.
252 This is computed in `reload', in reload1.c.
253 */
254
255 #define FRAME_POINTER_REQUIRED 0
256
257 /* Base register for access to arguments of the function. */ 249 /* Base register for access to arguments of the function. */
258 #define ARG_POINTER_REGNUM 5 250 #define ARG_POINTER_REGNUM 5
259 251
260 /* Register in which static-chain is passed to a function. */ 252 /* Register in which static-chain is passed to a function. */
261 /* ??? - i don't want to give up a reg for this! */ 253 /* ??? - i don't want to give up a reg for this! */
377 `Q' is for memory references that require an extra word after the opcode. 369 `Q' is for memory references that require an extra word after the opcode.
378 `R' is for memory references which are encoded within the opcode. */ 370 `R' is for memory references which are encoded within the opcode. */
379 371
380 #define EXTRA_CONSTRAINT(OP,CODE) \ 372 #define EXTRA_CONSTRAINT(OP,CODE) \
381 ((GET_CODE (OP) != MEM) ? 0 \ 373 ((GET_CODE (OP) != MEM) ? 0 \
382 : !legitimate_address_p (GET_MODE (OP), XEXP (OP, 0)) ? 0 \ 374 : !memory_address_p (GET_MODE (OP), XEXP (OP, 0)) ? 0 \
383 : ((CODE) == 'Q') ? !simple_memory_operand (OP, GET_MODE (OP)) \ 375 : ((CODE) == 'Q') ? !simple_memory_operand (OP, GET_MODE (OP)) \
384 : ((CODE) == 'R') ? simple_memory_operand (OP, GET_MODE (OP)) \ 376 : ((CODE) == 'R') ? simple_memory_operand (OP, GET_MODE (OP)) \
385 : 0) 377 : 0)
386 378
387 /* Given an rtx X being reloaded into a reg required to be 379 /* Given an rtx X being reloaded into a reg required to be
600 592
601 /* Maximum number of registers that can appear in a valid memory address. */ 593 /* Maximum number of registers that can appear in a valid memory address. */
602 594
603 #define MAX_REGS_PER_ADDRESS 1 595 #define MAX_REGS_PER_ADDRESS 1
604 596
605 /* Recognize any constant value that is a valid address. */
606
607 #define CONSTANT_ADDRESS_P(X) CONSTANT_P (X)
608
609 /* Nonzero if the constant value X is a legitimate general operand. 597 /* Nonzero if the constant value X is a legitimate general operand.
610 It is given that X satisfies CONSTANT_P or is a CONST_DOUBLE. */ 598 It is given that X satisfies CONSTANT_P or is a CONST_DOUBLE. */
611 599
612 #define LEGITIMATE_CONSTANT_P(X) \ 600 #define LEGITIMATE_CONSTANT_P(X) \
613 (GET_CODE (X) != CONST_DOUBLE || legitimate_const_double_p (X)) 601 (GET_CODE (X) != CONST_DOUBLE || legitimate_const_double_p (X))
751 goto ADDR; \ 739 goto ADDR; \
752 \ 740 \
753 /* anything else is invalid */ \ 741 /* anything else is invalid */ \
754 fail: ; \ 742 fail: ; \
755 } 743 }
756
757
758 /* Go to LABEL if ADDR (a legitimate address expression)
759 has an effect that depends on the machine mode it is used for.
760 On the pdp this is for predec/postinc, and this is now treated
761 generically in recog.c. */
762
763 #define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR,LABEL)
764 744
765 745
766 /* Specify the machine mode that this machine uses 746 /* Specify the machine mode that this machine uses
767 for the index in the tablejump instruction. */ 747 for the index in the tablejump instruction. */
768 #define CASE_VECTOR_MODE HImode 748 #define CASE_VECTOR_MODE HImode
997 #define ASM_OUTPUT_REG_POP(FILE,REGNO) \ 977 #define ASM_OUTPUT_REG_POP(FILE,REGNO) \
998 ( \ 978 ( \
999 fprintf (FILE, "\tmov (sp)+, %s\n", reg_names[REGNO]) \ 979 fprintf (FILE, "\tmov (sp)+, %s\n", reg_names[REGNO]) \
1000 ) 980 )
1001 981
1002 /* trampoline - how should i do it in separate i+d ?
1003 have some allocate_trampoline magic???
1004
1005 the following should work for shared I/D: */
1006
1007 /* lets see whether this works as trampoline:
1008 MV #STATIC, $4 0x940Y 0x0000 <- STATIC; Y = STATIC_CHAIN_REGNUM
1009 JMP FUNCTION 0x0058 0x0000 <- FUNCTION
1010 */
1011
1012 #define TRAMPOLINE_TEMPLATE(FILE) \
1013 { \
1014 gcc_assert (!TARGET_SPLIT); \
1015 \
1016 assemble_aligned_integer (2, GEN_INT (0x9400+STATIC_CHAIN_REGNUM)); \
1017 assemble_aligned_integer (2, const0_rtx); \
1018 assemble_aligned_integer (2, GEN_INT(0x0058)); \
1019 assemble_aligned_integer (2, const0_rtx); \
1020 }
1021
1022 #define TRAMPOLINE_SIZE 8 982 #define TRAMPOLINE_SIZE 8
1023 #define TRAMPOLINE_ALIGNMENT 16 983 #define TRAMPOLINE_ALIGNMENT 16
1024
1025 /* Emit RTL insns to initialize the variable parts of a trampoline.
1026 FNADDR is an RTX for the address of the function's pure code.
1027 CXT is an RTX for the static chain value for the function. */
1028
1029 #define INITIALIZE_TRAMPOLINE(TRAMP,FNADDR,CXT) \
1030 { \
1031 gcc_assert (!TARGET_SPLIT); \
1032 \
1033 emit_move_insn (gen_rtx_MEM (HImode, plus_constant (TRAMP, 2)), CXT); \
1034 emit_move_insn (gen_rtx_MEM (HImode, plus_constant (TRAMP, 6)), FNADDR); \
1035 }
1036
1037 984
1038 /* Some machines may desire to change what optimizations are 985 /* Some machines may desire to change what optimizations are
1039 performed for various optimization levels. This macro, if 986 performed for various optimization levels. This macro, if
1040 defined, is executed once just after the optimization level is 987 defined, is executed once just after the optimization level is
1041 determined and before the remainder of the command options have 988 determined and before the remainder of the command options have
1045 LEVEL is the optimization level specified; 2 if -O2 is 992 LEVEL is the optimization level specified; 2 if -O2 is
1046 specified, 1 if -O is specified, and 0 if neither is specified. */ 993 specified, 1 if -O is specified, and 0 if neither is specified. */
1047 994
1048 #define OPTIMIZATION_OPTIONS(LEVEL,SIZE) \ 995 #define OPTIMIZATION_OPTIONS(LEVEL,SIZE) \
1049 { \ 996 { \
997 flag_finite_math_only = 0; \
998 flag_trapping_math = 0; \
999 flag_signaling_nans = 0; \
1050 if (LEVEL >= 3) \ 1000 if (LEVEL >= 3) \
1051 { \ 1001 { \
1052 flag_omit_frame_pointer = 1; \ 1002 flag_omit_frame_pointer = 1; \
1053 /* flag_unroll_loops = 1; */ \ 1003 /* flag_unroll_loops = 1; */ \
1054 } \ 1004 } \