Mercurial > hg > CbC > CbC_gcc
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 } \ |