diff options
author | David Edelsohn <edelsohn@gnu.org> | 2002-12-26 01:30:59 +0000 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 2002-12-25 20:30:59 -0500 |
commit | b21fb038c9fd9ecf5f5ce362a3d35d993f89b64b (patch) | |
tree | 51ce82ae9a824b258c27e92fd8ac2096bead4ab3 | |
parent | abd2dd6d2227ff0f588efcf85273f9dd4a2e042f (diff) | |
download | gcc-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/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 12 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 43 |
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, \ |