aboutsummaryrefslogtreecommitdiff
path: root/gcc/doc
diff options
context:
space:
mode:
authorKai Tietz <kai.tietz@onevision.com>2008-06-03 08:05:25 +0000
committerKai Tietz <ktietz@gcc.gnu.org>2008-06-03 10:05:25 +0200
commit7c8009267b4fd51593b4aca97b9e958e11f4bcf0 (patch)
tree46b72aba39009f675c2eb450ebc3d689c165e87a /gcc/doc
parent19df69a0d792f6eead0816d6f7b893814dcb5152 (diff)
downloadgcc-7c8009267b4fd51593b4aca97b9e958e11f4bcf0.zip
gcc-7c8009267b4fd51593b4aca97b9e958e11f4bcf0.tar.gz
gcc-7c8009267b4fd51593b4aca97b9e958e11f4bcf0.tar.bz2
tm.texi (OVERRIDE_ABI_FORMAT): New.
2008-06-03 Kai Tietz <kai.tietz@onevision.com> * doc/tm.texi (OVERRIDE_ABI_FORMAT): New. * doc/extend.texi (ms_abi,sysv_abi): New attribute description. * function.c (allocate_struct_function): Use of OVERRIDE_ABI_FORMAT. * config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use of cfun and DEFAULT_ABI to deceide abi mode. (DEFAULT_ABI): New. (REG_PARM_STACK_SPACE): Removed. (OUTGOING_REG_PARM_STACK_SPACE): Removed. (STACK_BOUNDARY): Use default target to deceide stack boundary. * config/i386/i386-protos.h (ix86_cfun_abi): New. (ix86_function_abi): Likewise. (ix86_function_type_abi): Likewise. (ix86_call_abi_override): Likewise. * confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX. * config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI. (X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi specific defines. (X86_64_REGPARM_MAX): New. (X86_64_SSE_REGPARM_MAX): New. (X64_REGPARM_MAX): New. (X64_SSE_REGPARM_MAX): New. (X86_32_REGPARM_MAX): New. (X86_32_SSE_REGPARM_MAX): New. (ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI. (ix86_function_regparm): Handle user calling abi. (ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI by DEFAULT_ABI versus SYSV_ABI check. (ix86_reg_parm_stack_space): New. (ix86_function_type_abi): New. (ix86_call_abi_override): New. (ix86_function_abi): New. (ix86_cfun_abi): New. (init_cumulative_args): Call abi specific initialization. (function_arg_advance): Remove TARGET_64BIT_MS_ABI. (function_arg_64): Extend SSE_REGPARM_MAX check. (function_arg (): Remove TARGET_64BIT_MS_ABI. (ix86_pass_by_reference): Likewise. (ix86_function_value_regno_p): Likewise. (function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX. (ix86_function_value_1): Replace TARGET_64BIT_MS_ABI. (return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI. (ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI. (setup_incoming_varargs_64): Adjust regparm for call abi. (ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI. (ix86_va_start): Likewise. (ix86_gimplify_va_arg): Likewise. (ix86_expand_prologue): Likewise. (output_pic_addr_const): Likewise. (ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI. (x86_this_parameter): Replace TARGET_64BIT_MS_ABI. (x86_output_mi_thunk): Likewise. (x86_function_profiler): Likewise. * config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi. (SYSV_ABI, MS_ABI): New constants. (DEFAULT_ABI): New. (init_regs): Add prototype of function in regclass.c file. (OVERRIDE_ABI_FORMAT): New. (CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part. (REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space. (OUTGOING_REG_PARM_STACK_SPACE): New. (ix86_reg_parm_stack_space): New prototype. (CUMULATIVE_ARGS): Add call_abi member. (machine_function): Add call_abi member. * config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace TARGET_64BIT_MS_ABI by DEFAULT_ABI compare to MS_ABI. From-SVN: r136311
Diffstat (limited to 'gcc/doc')
-rw-r--r--gcc/doc/extend.texi13
-rw-r--r--gcc/doc/tm.texi9
2 files changed, 22 insertions, 0 deletions
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index 103af2c..9c02560 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -2508,6 +2508,19 @@ instruction). Caveat: such addressing is by definition not position
independent and hence this attribute must not be used for objects
defined by shared libraries.
+@item ms_abi/sysv_abi
+@cindex @code[ms_abi} attribute
+@cindex @code{sysv_abi} attribute
+
+On 64-bit x86_65-*-* targets, you can use an ABI attribute to indicate
+which calling convention should be used for a function. The @code{ms_abi}
+attribute tells the compiler to use the Microsoft ABI, while the
+@code{sysv_abi} attribute tells the compiler to use the ABI used on
+GNU/Linux and other systems. The default is to use the Microsoft ABI
+when targeting Windows. On all other systems, the default is the AMD ABI.
+
+Note, This feature is currently sorried out for Windows targets trying to
+
@item naked
@cindex function without a prologue/epilogue code
Use this attribute on the ARM, AVR, IP2K and SPU ports to indicate that
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index 3e4d2b7..d18bf2e 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -4055,6 +4055,15 @@ arguments are passed on the stack, there is no need to store anything in
should not be empty, so use @code{int}.
@end defmac
+@defmac OVERRIDE_ABI_FORMAT (@var{fndecl})
+If defined, this macro is called before generating any code for a
+function, but after the @var{cfun} descriptor for the function has been
+created. The back end may use this macro to update @var{cfun} to
+reflect an ABI other than that which would normally be used by default.
+If the compiler is generating code for a compiler-generated function,
+@var{fndecl} may be @code{NULL}.
+@end defmac
+
@defmac INIT_CUMULATIVE_ARGS (@var{cum}, @var{fntype}, @var{libname}, @var{fndecl}, @var{n_named_args})
A C statement (sans semicolon) for initializing the variable
@var{cum} for the state at the beginning of the argument list. The