aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJ"orn Rennecke <amylaar@cygnus.co.uk>2000-06-01 23:36:32 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2000-06-02 00:36:32 +0100
commitaff2c0666a8bee4aa6643c79bd9abd581e166db6 (patch)
treea516bb82583cc6ba62d20699789b29d1f54218d0 /gcc
parent18fa855f72928698ab520e2f8536c273867096e7 (diff)
downloadgcc-aff2c0666a8bee4aa6643c79bd9abd581e166db6.zip
gcc-aff2c0666a8bee4aa6643c79bd9abd581e166db6.tar.gz
gcc-aff2c0666a8bee4aa6643c79bd9abd581e166db6.tar.bz2
sh.h (CPP_SPEC): Add -D__NOMACSAVE__ for -mnomacsave.
* sh.h (CPP_SPEC): Add -D__NOMACSAVE__ for -mnomacsave. (CONDITIONAL_REGISTER_USAGE): Mac registers are call used for TARGET_NOMACSAVE. (NOMACSAVE_BIT): Define. (TARGET_NOMACSAVE): Define. (TARGET_SWITCHES): Add "nomacsave". From-SVN: r34350
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/sh/sh.h8
2 files changed, 16 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 67cd6fa..8636b79 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+Fri Jun 2 00:22:52 2000 J"orn Rennecke <amylaar@cygnus.co.uk>
+
+ * sh.h (CPP_SPEC): Add -D__NOMACSAVE__ for -mnomacsave.
+ (CONDITIONAL_REGISTER_USAGE): Mac registers are call used
+ for TARGET_NOMACSAVE.
+ (NOMACSAVE_BIT): Define.
+ (TARGET_NOMACSAVE): Define.
+ (TARGET_SWITCHES): Add "nomacsave".
+
2000-06-02 Toshiyasu Morita <toshi.morita@sega.com>
* sh.md (untyped_call): Remove excess parameters
diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h
index 07c971f..6f14d3c 100644
--- a/gcc/config/sh/sh.h
+++ b/gcc/config/sh/sh.h
@@ -48,6 +48,7 @@ extern int code_for_indirect_jump_scratch;
%{m4-single:-D__SH4_SINGLE__} \
%{m4:-D__SH4__} \
%{!m1:%{!m2:%{!m3:%{!m3e:%{!m4:%{!m4-single:%{!m4-single-only:-D__sh1__}}}}}}} \
+%{mnomacsave:-D__NOMACSAVE__} \
%{mhitachi:-D__HITACHI__}"
#define CPP_PREDEFINES "-D__sh__ -Acpu(sh) -Amachine(sh)"
@@ -77,7 +78,7 @@ extern int code_for_indirect_jump_scratch;
} \
} \
/* Hitachi saves and restores mac registers on call. */ \
- if (TARGET_HITACHI) \
+ if (TARGET_HITACHI && ! TARGET_NOMACSAVE) \
{ \
call_used_regs[MACH_REG] = 0; \
call_used_regs[MACL_REG] = 0; \
@@ -103,6 +104,7 @@ extern int target_flags;
#define BIGTABLE_BIT (1<<14)
#define RELAX_BIT (1<<15)
#define HITACHI_BIT (1<<22)
+#define NOMACSAVE_BIT (1<<23)
#define PADSTRUCT_BIT (1<<28)
#define LITTLE_ENDIAN_BIT (1<<29)
#define IEEE_BIT (1<<30)
@@ -162,6 +164,9 @@ extern int target_flags;
/* Nonzero if using Hitachi's calling convention. */
#define TARGET_HITACHI (target_flags & HITACHI_BIT)
+/* Nonzero if not saving macl/mach when using -mhitachi */
+#define TARGET_NOMACSAVE (target_flags & NOMACSAVE_BIT)
+
/* Nonzero if padding structures to a multiple of 4 bytes. This is
incompatible with Hitachi's compiler, and gives unusual structure layouts
which confuse programmers.
@@ -185,6 +190,7 @@ extern int target_flags;
{"dalign", DALIGN_BIT}, \
{"fmovd", FMOVD_BIT}, \
{"hitachi", HITACHI_BIT}, \
+ {"nomacsave", NOMACSAVE_BIT}, \
{"ieee", IEEE_BIT}, \
{"isize", ISIZE_BIT}, \
{"l", LITTLE_ENDIAN_BIT}, \