Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1463)

Unified Diff: gcc/gcc/config/ia64/ia64.h

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gcc/gcc/config/i386/t-rtems-i386 ('k') | gcc/gcc/config/ia64/itanium1.md » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gcc/gcc/config/ia64/ia64.h
diff --git a/gcc/gcc/config/ia64/ia64.h b/gcc/gcc/config/ia64/ia64.h
index 0e3c87bf66c4d94a1bb6e830845f7c224338e394..53bbda2b1ede8a9a965cf41d533c2f4408bafa2f 100644
--- a/gcc/gcc/config/ia64/ia64.h
+++ b/gcc/gcc/config/ia64/ia64.h
@@ -1,6 +1,6 @@
/* Definitions of target machine GNU compiler. IA-64 version.
- Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
- Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
+ 2009 Free Software Foundation, Inc.
Contributed by James E. Wilson <wilson@cygnus.com> and
David Mosberger <davidm@hpl.hp.com>.
@@ -73,6 +73,8 @@ extern unsigned int ia64_section_threshold;
#define TARGET_HPUX 0
#define TARGET_HPUX_LD 0
+#define TARGET_ABI_OPEN_VMS 0
+
#ifndef TARGET_ILP32
#define TARGET_ILP32 0
#endif
@@ -94,7 +96,7 @@ enum ia64_inline_type
/* Default target_flags if no switches are specified */
#ifndef TARGET_DEFAULT
-#define TARGET_DEFAULT (MASK_DWARF2_ASM)
+#define TARGET_DEFAULT (MASK_DWARF2_ASM | MASK_FUSED_MADD)
#endif
#ifndef TARGET_CPU_DEFAULT
@@ -279,11 +281,17 @@ while (0)
#define DOUBLE_TYPE_SIZE 64
-/* long double is XFmode normally, TFmode for HPUX. */
-#define LONG_DOUBLE_TYPE_SIZE (TARGET_HPUX ? 128 : 80)
+/* long double is XFmode normally, and TFmode for HPUX. It should be
+ TFmode for VMS as well but we only support up to DFmode now. */
+#define LONG_DOUBLE_TYPE_SIZE \
+ (TARGET_HPUX ? 128 \
+ : TARGET_ABI_OPEN_VMS ? 64 \
+ : 80)
+
+/* We always want the XFmode operations from libgcc2.c, except on VMS
+ where this yields references to unimplemented "insns". */
+#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE (TARGET_ABI_OPEN_VMS ? 64 : 80)
-/* We always want the XFmode operations from libgcc2.c. */
-#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 80
/* On HP-UX, we use the l suffix for TFmode in libgcc2.c. */
#define LIBGCC2_TF_CEXT l
@@ -1005,11 +1013,6 @@ enum reg_class
/* Eliminating the Frame Pointer and the Arg Pointer */
-/* A C expression which is nonzero if a function must have and use a frame
- pointer. This expression is evaluated in the reload pass. If its value is
- nonzero the function will have a frame pointer. */
-#define FRAME_POINTER_REQUIRED 0
-
/* Show we can debug even without a frame pointer. */
#define CAN_DEBUG_WITHOUT_FP
@@ -1024,13 +1027,6 @@ enum reg_class
{FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}, \
}
-/* A C expression that returns nonzero if the compiler is allowed to try to
- replace register number FROM with register number TO. The frame pointer
- is automatically handled. */
-
-#define CAN_ELIMINATE(FROM, TO) \
- (TO == BR_REG (0) ? current_function_is_leaf : 1)
-
/* This macro is similar to `INITIAL_FRAME_POINTER_OFFSET'. It
specifies the initial difference between the specified pair of
registers. This macro must be defined if `ELIMINABLE_REGS' is
@@ -1082,12 +1078,16 @@ enum reg_class
`FUNCTION_ARG' and other related values. For some target machines, the type
`int' suffices and can hold the number of bytes of argument so far. */
+enum ivms_arg_type {I64, FF, FD, FG, FS, FT};
+/* VMS floating point formats VAX F, VAX D, VAX G, IEEE S, IEEE T. */
+
typedef struct ia64_args
{
int words; /* # words of arguments so far */
int int_regs; /* # GR registers used so far */
int fp_regs; /* # FR registers used so far */
int prototype; /* whether function prototyped */
+ enum ivms_arg_type atypes[8]; /* which VMS float type or if not float */
} CUMULATIVE_ARGS;
/* A C statement (sans semicolon) for initializing the variable CUM for the
@@ -1099,6 +1099,9 @@ do { \
(CUM).int_regs = 0; \
(CUM).fp_regs = 0; \
(CUM).prototype = ((FNTYPE) && TYPE_ARG_TYPES (FNTYPE)) || (LIBNAME); \
+ (CUM).atypes[0] = (CUM).atypes[1] = (CUM).atypes[2] = I64; \
+ (CUM).atypes[3] = (CUM).atypes[4] = (CUM).atypes[5] = I64; \
+ (CUM).atypes[6] = (CUM).atypes[7] = I64; \
} while (0)
/* Like `INIT_CUMULATIVE_ARGS' but overrides it for the purposes of finding the
@@ -1113,6 +1116,9 @@ do { \
(CUM).int_regs = 0; \
(CUM).fp_regs = 0; \
(CUM).prototype = 1; \
+ (CUM).atypes[0] = (CUM).atypes[1] = (CUM).atypes[2] = I64; \
+ (CUM).atypes[3] = (CUM).atypes[4] = (CUM).atypes[5] = I64; \
+ (CUM).atypes[6] = (CUM).atypes[7] = I64; \
} while (0)
/* A C statement (sans semicolon) to update the summarizer variable CUM to
@@ -1241,31 +1247,6 @@ do { \
#define STACK_SAVEAREA_MODE(LEVEL) \
((LEVEL) == SAVE_NONLOCAL ? OImode : Pmode)
-/* Output assembler code for a block containing the constant parts of
- a trampoline, leaving space for the variable parts.
-
- The trampoline should set the static chain pointer to value placed
- into the trampoline and should branch to the specified routine.
- To make the normal indirect-subroutine calling convention work,
- the trampoline must look like a function descriptor; the first
- word being the target address and the second being the target's
- global pointer.
-
- We abuse the concept of a global pointer by arranging for it
- to point to the data we need to load. The complete trampoline
- has the following form:
-
- +-------------------+ \
- TRAMP: | __ia64_trampoline | |
- +-------------------+ > fake function descriptor
- | TRAMP+16 | |
- +-------------------+ /
- | target descriptor |
- +-------------------+
- | static link |
- +-------------------+
-*/
-
/* A C expression for the size in bytes of the trampoline, as an integer. */
#define TRAMPOLINE_SIZE 32
@@ -1273,11 +1254,6 @@ do { \
/* Alignment required for trampolines, in bits. */
#define TRAMPOLINE_ALIGNMENT 64
-
-/* A C statement to initialize the variable parts of a trampoline. */
-
-#define INITIALIZE_TRAMPOLINE(ADDR, FNADDR, STATIC_CHAIN) \
- ia64_initialize_trampoline((ADDR), (FNADDR), (STATIC_CHAIN))
/* Addressing Modes */
@@ -1344,13 +1320,6 @@ do { \
#define REG_OK_FOR_INDEX_P(X) REG_OK_FOR_BASE_P (X)
-/* A C statement or compound statement with a conditional `goto LABEL;'
- executed if memory address X (an RTX) can have different meanings depending
- on the machine mode of the memory reference it is used for or if the address
- is valid for some modes but not others. */
-
-#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL)
-
/* A C expression that is nonzero if X is a legitimate constant for an
immediate operand on the target machine. */
@@ -1508,8 +1477,11 @@ do { \
do { \
assemble_name (STREAM, NAME); \
fputs (" = ", STREAM); \
+ if (ISDIGIT (*VALUE)) \
+ ia64_asm_output_label = 1; \
assemble_name (STREAM, VALUE); \
fputc ('\n', STREAM); \
+ ia64_asm_output_label = 0; \
} while (0)
@@ -1938,7 +1910,7 @@ extern int ia64_final_schedule;
#define EH_RETURN_DATA_REGNO(N) ((N) < 4 ? (N) + 15 : INVALID_REGNUM)
/* This function contains machine specific function data. */
-struct machine_function GTY(())
+struct GTY(()) machine_function
{
/* The new stack pointer when unwinding from EH. */
rtx ia64_eh_epilogue_sp;
« no previous file with comments | « gcc/gcc/config/i386/t-rtems-i386 ('k') | gcc/gcc/config/ia64/itanium1.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698