aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Edelsohn <edelsohn@gnu.org>2002-12-26 01:30:59 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2002-12-25 20:30:59 -0500
commitb21fb038c9fd9ecf5f5ce362a3d35d993f89b64b (patch)
tree51ce82ae9a824b258c27e92fd8ac2096bead4ab3
parentabd2dd6d2227ff0f588efcf85273f9dd4a2e042f (diff)
downloadgcc-b21fb038c9fd9ecf5f5ce362a3d35d993f89b64b.zip
gcc-b21fb038c9fd9ecf5f5ce362a3d35d993f89b64b.tar.gz
gcc-b21fb038c9fd9ecf5f5ce362a3d35d993f89b64b.tar.bz2
rs6000.c (rs6000_override_options): Convert to tartet_flags_explicit.
* config/rs6000/rs6000.c (rs6000_override_options): Convert to tartet_flags_explicit. * config/rs6000/rs6000.h (MASK_MULTIPLE_SET, MASK_STRING_SET): Delete. Compact target_flags bits. (TARGET_MULTIPLE_SET, TARGET_STRING_SET): Delete. (TARGET_SWITCHES): Delete references to *_SET flags. From-SVN: r60504
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/rs6000/rs6000.c12
-rw-r--r--gcc/config/rs6000/rs6000.h43
3 files changed, 30 insertions, 34 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dc85f61..d2e0614 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,12 @@
+2002-12-25 David Edelsohn <edelsohn@gnu.org>
+
+ * config/rs6000/rs6000.c (rs6000_override_options): Convert to
+ tartet_flags_explicit.
+ * config/rs6000/rs6000.h (MASK_MULTIPLE_SET, MASK_STRING_SET): Delete.
+ Compact target_flags bits.
+ (TARGET_MULTIPLE_SET, TARGET_STRING_SET): Delete.
+ (TARGET_SWITCHES): Delete references to *_SET flags.
+
Wed Dec 25 20:30:53 CET 2002 Jan Hubicka <jh@suse.cz>
* i386.md (memory attribute): Fix setcc attribute.
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 6ca0209..0a9360f 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -574,12 +574,12 @@ rs6000_override_options (default_cpu)
/* If -mmultiple or -mno-multiple was explicitly used, don't
override with the processor default */
- if (TARGET_MULTIPLE_SET)
+ if ((target_flags_explicit & MASK_MULTIPLE) != 0)
target_flags = (target_flags & ~MASK_MULTIPLE) | multiple;
/* If -mstring or -mno-string was explicitly used, don't override
with the processor default. */
- if (TARGET_STRING_SET)
+ if ((target_flags_explicit & MASK_STRING) != 0)
target_flags = (target_flags & ~MASK_STRING) | string;
/* Don't allow -mmultiple or -mstring on little endian systems
@@ -588,19 +588,19 @@ rs6000_override_options (default_cpu)
trap. The 750 does not cause an alignment trap (except when the
target is unaligned). */
- if (! BYTES_BIG_ENDIAN && rs6000_cpu != PROCESSOR_PPC750)
+ if (!BYTES_BIG_ENDIAN && rs6000_cpu != PROCESSOR_PPC750)
{
if (TARGET_MULTIPLE)
{
target_flags &= ~MASK_MULTIPLE;
- if (TARGET_MULTIPLE_SET)
+ if ((target_flags_explicit & MASK_MULTIPLE) != 0)
warning ("-mmultiple is not supported on little endian systems");
}
if (TARGET_STRING)
{
target_flags &= ~MASK_STRING;
- if (TARGET_STRING_SET)
+ if ((target_flags_explicit & MASK_STRING) != 0)
warning ("-mstring is not supported on little endian systems");
}
}
@@ -696,7 +696,7 @@ rs6000_override_options (default_cpu)
/* Set TARGET_AIX_STRUCT_RET last, after the ABI is determined.
If -maix-struct-return or -msvr4-struct-return was explicitly
used, don't override with the ABI default. */
- if (!(target_flags & MASK_AIX_STRUCT_RET_SET))
+ if ((target_flags_explicit & MASK_AIX_STRUCT_RET) == 0)
{
if (DEFAULT_ABI == ABI_V4 && !DRAFT_V4_STRUCT_RET)
target_flags = (target_flags & ~MASK_AIX_STRUCT_RET);
diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h
index 27954f2..8e6d28f 100644
--- a/gcc/config/rs6000/rs6000.h
+++ b/gcc/config/rs6000/rs6000.h
@@ -162,30 +162,27 @@ extern int target_flags;
#define MASK_SOFT_FLOAT 0x00000800
/* Enable load/store multiple, even on PowerPC */
-#define MASK_MULTIPLE 0x00001000
-#define MASK_MULTIPLE_SET 0x00002000
+#define MASK_MULTIPLE 0x00001000
/* Use string instructions for block moves */
-#define MASK_STRING 0x00004000
-#define MASK_STRING_SET 0x00008000
+#define MASK_STRING 0x00002000
/* Disable update form of load/store */
-#define MASK_NO_UPDATE 0x00010000
+#define MASK_NO_UPDATE 0x00004000
/* Disable fused multiply/add operations */
-#define MASK_NO_FUSED_MADD 0x00020000
+#define MASK_NO_FUSED_MADD 0x00008000
/* Nonzero if we need to schedule the prolog and epilog. */
-#define MASK_SCHED_PROLOG 0x00040000
+#define MASK_SCHED_PROLOG 0x00010000
/* Use AltiVec instructions. */
-#define MASK_ALTIVEC 0x00080000
+#define MASK_ALTIVEC 0x00020000
/* Return small structures in memory (as the AIX ABI requires). */
-#define MASK_AIX_STRUCT_RET 0x00100000
-#define MASK_AIX_STRUCT_RET_SET 0x00200000
+#define MASK_AIX_STRUCT_RET 0x00040000
-/* The only remaining free bit is 0x00400000. sysv4.h uses
+/* The only remaining free bits are 0x00780000. sysv4.h uses
0x00800000 -> 0x40000000, and 0x80000000 is not available
because target_flags is signed. */
@@ -200,10 +197,8 @@ extern int target_flags;
#define TARGET_MINIMAL_TOC (target_flags & MASK_MINIMAL_TOC)
#define TARGET_64BIT (target_flags & MASK_64BIT)
#define TARGET_SOFT_FLOAT (target_flags & MASK_SOFT_FLOAT)
-#define TARGET_MULTIPLE (target_flags & MASK_MULTIPLE)
-#define TARGET_MULTIPLE_SET (target_flags & MASK_MULTIPLE_SET)
+#define TARGET_MULTIPLE (target_flags & MASK_MULTIPLE)
#define TARGET_STRING (target_flags & MASK_STRING)
-#define TARGET_STRING_SET (target_flags & MASK_STRING_SET)
#define TARGET_NO_UPDATE (target_flags & MASK_NO_UPDATE)
#define TARGET_NO_FUSED_MADD (target_flags & MASK_NO_FUSED_MADD)
#define TARGET_SCHED_PROLOG (target_flags & MASK_SCHED_PROLOG)
@@ -293,18 +288,14 @@ extern int target_flags;
N_("Use hardware fp")}, \
{"soft-float", MASK_SOFT_FLOAT, \
N_("Do not use hardware fp")}, \
- {"multiple", MASK_MULTIPLE | MASK_MULTIPLE_SET, \
+ {"multiple", MASK_MULTIPLE, \
N_("Generate load/store multiple instructions")}, \
{"no-multiple", - MASK_MULTIPLE, \
N_("Do not generate load/store multiple instructions")},\
- {"no-multiple", MASK_MULTIPLE_SET, \
- ""}, \
- {"string", MASK_STRING | MASK_STRING_SET, \
+ {"string", MASK_STRING, \
N_("Generate string instructions for block moves")},\
{"no-string", - MASK_STRING, \
N_("Do not generate string instructions for block moves")},\
- {"no-string", MASK_STRING_SET, \
- ""}, \
{"update", - MASK_NO_UPDATE, \
N_("Generate load/store with update instructions")},\
{"no-update", MASK_NO_UPDATE, \
@@ -321,17 +312,13 @@ extern int target_flags;
""}, \
{"no-sched-epilog", -MASK_SCHED_PROLOG, \
""}, \
- {"aix-struct-return", MASK_AIX_STRUCT_RET | MASK_AIX_STRUCT_RET_SET, \
+ {"aix-struct-return", MASK_AIX_STRUCT_RET, \
N_("Return all structures in memory (AIX default)")},\
- {"svr4-struct-return", - MASK_AIX_STRUCT_RET,\
+ {"svr4-struct-return", - MASK_AIX_STRUCT_RET, \
N_("Return small structures in registers (SVR4 default)")},\
- {"svr4-struct-return",MASK_AIX_STRUCT_RET_SET,\
- ""},\
- {"no-aix-struct-return", - MASK_AIX_STRUCT_RET,\
- ""},\
- {"no-aix-struct-return", MASK_AIX_STRUCT_RET_SET,\
+ {"no-aix-struct-return", - MASK_AIX_STRUCT_RET, \
""},\
- {"no-svr4-struct-return", MASK_AIX_STRUCT_RET | MASK_AIX_STRUCT_RET_SET,\
+ {"no-svr4-struct-return", MASK_AIX_STRUCT_RET, \
""},\
SUBTARGET_SWITCHES \
{"", TARGET_DEFAULT | MASK_SCHED_PROLOG, \