aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1992-04-07 21:51:39 -0700
committerJim Wilson <wilson@gcc.gnu.org>1992-04-07 21:51:39 -0700
commit0be8e85950ca7f3732cbfa67271fc4b8ff56c418 (patch)
treee36d99a84fc0b8aa4a10f5ac31209199024aea27 /gcc
parentb82fb2631beb78bef09e7aefb3d7821a5816f97c (diff)
downloadgcc-0be8e85950ca7f3732cbfa67271fc4b8ff56c418.zip
gcc-0be8e85950ca7f3732cbfa67271fc4b8ff56c418.tar.gz
gcc-0be8e85950ca7f3732cbfa67271fc4b8ff56c418.tar.bz2
*** empty log message ***
From-SVN: r707
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/sparc/sparc.h19
1 files changed, 10 insertions, 9 deletions
diff --git a/gcc/config/sparc/sparc.h b/gcc/config/sparc/sparc.h
index 42e6520..b997b4a 100644
--- a/gcc/config/sparc/sparc.h
+++ b/gcc/config/sparc/sparc.h
@@ -88,7 +88,11 @@ extern int target_flags;
Like -dalign in Sun cc. */
#define TARGET_HOPE_ALIGN (target_flags & 16)
-/* Nonzero means that make sure all doubles are on 8-byte boundaries. */
+/* Nonzero means make sure all doubles are on 8-byte boundaries.
+ This option results in a calling convention that is incompatible with
+ every other sparc compiler in the world, and thus should only ever be
+ used for experimenting. Also, varargs won't work with it, but it doesn't
+ seem worth trying to fix. */
#define TARGET_FORCE_ALIGN (target_flags & 32)
/* Macro to define tables used to set the flags.
@@ -559,14 +563,11 @@ extern char leaf_reg_backmap[];
/* Offset of first parameter from the argument pointer register value.
This is 64 for the ins and locals, plus 4 for the struct-return reg
- even if this function isn't going to use it. */
-#define FIRST_PARM_OFFSET(FNDECL) (STRUCT_VALUE_OFFSET + UNITS_PER_WORD)
-
-/* Offset from top-of-stack address to location to store the
- function parameter if it can't go in a register.
- Addresses for following parameters are computed relative to this one. */
-#define FIRST_PARM_CALLER_OFFSET(FNDECL) \
- (STRUCT_VALUE_OFFSET + UNITS_PER_WORD - STACK_POINTER_OFFSET)
+ even if this function isn't going to use it.
+ If TARGET_FORCE_ALIGN, we must reserve 4 more bytes to ensure that the
+ stack remains aligned. */
+#define FIRST_PARM_OFFSET(FNDECL) \
+ (STRUCT_VALUE_OFFSET + UNITS_PER_WORD + (TARGET_FORCE_ALIGN ? 4 : 0))
/* When a parameter is passed in a register, stack space is still
allocated for it. */