Commit b21fb038 by David Edelsohn Committed by David Edelsohn

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
parent abd2dd6d
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> Wed Dec 25 20:30:53 CET 2002 Jan Hubicka <jh@suse.cz>
* i386.md (memory attribute): Fix setcc attribute. * i386.md (memory attribute): Fix setcc attribute.
......
...@@ -574,12 +574,12 @@ rs6000_override_options (default_cpu) ...@@ -574,12 +574,12 @@ rs6000_override_options (default_cpu)
/* If -mmultiple or -mno-multiple was explicitly used, don't /* If -mmultiple or -mno-multiple was explicitly used, don't
override with the processor default */ override with the processor default */
if (TARGET_MULTIPLE_SET) if ((target_flags_explicit & MASK_MULTIPLE) != 0)
target_flags = (target_flags & ~MASK_MULTIPLE) | multiple; target_flags = (target_flags & ~MASK_MULTIPLE) | multiple;
/* If -mstring or -mno-string was explicitly used, don't override /* If -mstring or -mno-string was explicitly used, don't override
with the processor default. */ with the processor default. */
if (TARGET_STRING_SET) if ((target_flags_explicit & MASK_STRING) != 0)
target_flags = (target_flags & ~MASK_STRING) | string; target_flags = (target_flags & ~MASK_STRING) | string;
/* Don't allow -mmultiple or -mstring on little endian systems /* Don't allow -mmultiple or -mstring on little endian systems
...@@ -588,19 +588,19 @@ rs6000_override_options (default_cpu) ...@@ -588,19 +588,19 @@ rs6000_override_options (default_cpu)
trap. The 750 does not cause an alignment trap (except when the trap. The 750 does not cause an alignment trap (except when the
target is unaligned). */ target is unaligned). */
if (! BYTES_BIG_ENDIAN && rs6000_cpu != PROCESSOR_PPC750) if (!BYTES_BIG_ENDIAN && rs6000_cpu != PROCESSOR_PPC750)
{ {
if (TARGET_MULTIPLE) if (TARGET_MULTIPLE)
{ {
target_flags &= ~MASK_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"); warning ("-mmultiple is not supported on little endian systems");
} }
if (TARGET_STRING) if (TARGET_STRING)
{ {
target_flags &= ~MASK_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"); warning ("-mstring is not supported on little endian systems");
} }
} }
...@@ -696,7 +696,7 @@ rs6000_override_options (default_cpu) ...@@ -696,7 +696,7 @@ rs6000_override_options (default_cpu)
/* Set TARGET_AIX_STRUCT_RET last, after the ABI is determined. /* Set TARGET_AIX_STRUCT_RET last, after the ABI is determined.
If -maix-struct-return or -msvr4-struct-return was explicitly If -maix-struct-return or -msvr4-struct-return was explicitly
used, don't override with the ABI default. */ 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) if (DEFAULT_ABI == ABI_V4 && !DRAFT_V4_STRUCT_RET)
target_flags = (target_flags & ~MASK_AIX_STRUCT_RET); target_flags = (target_flags & ~MASK_AIX_STRUCT_RET);
......
...@@ -162,30 +162,27 @@ extern int target_flags; ...@@ -162,30 +162,27 @@ extern int target_flags;
#define MASK_SOFT_FLOAT 0x00000800 #define MASK_SOFT_FLOAT 0x00000800
/* Enable load/store multiple, even on PowerPC */ /* Enable load/store multiple, even on PowerPC */
#define MASK_MULTIPLE 0x00001000 #define MASK_MULTIPLE 0x00001000
#define MASK_MULTIPLE_SET 0x00002000
/* Use string instructions for block moves */ /* Use string instructions for block moves */
#define MASK_STRING 0x00004000 #define MASK_STRING 0x00002000
#define MASK_STRING_SET 0x00008000
/* Disable update form of load/store */ /* Disable update form of load/store */
#define MASK_NO_UPDATE 0x00010000 #define MASK_NO_UPDATE 0x00004000
/* Disable fused multiply/add operations */ /* 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. */ /* Nonzero if we need to schedule the prolog and epilog. */
#define MASK_SCHED_PROLOG 0x00040000 #define MASK_SCHED_PROLOG 0x00010000
/* Use AltiVec instructions. */ /* Use AltiVec instructions. */
#define MASK_ALTIVEC 0x00080000 #define MASK_ALTIVEC 0x00020000
/* Return small structures in memory (as the AIX ABI requires). */ /* Return small structures in memory (as the AIX ABI requires). */
#define MASK_AIX_STRUCT_RET 0x00100000 #define MASK_AIX_STRUCT_RET 0x00040000
#define MASK_AIX_STRUCT_RET_SET 0x00200000
/* 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 0x00800000 -> 0x40000000, and 0x80000000 is not available
because target_flags is signed. */ because target_flags is signed. */
...@@ -200,10 +197,8 @@ extern int target_flags; ...@@ -200,10 +197,8 @@ extern int target_flags;
#define TARGET_MINIMAL_TOC (target_flags & MASK_MINIMAL_TOC) #define TARGET_MINIMAL_TOC (target_flags & MASK_MINIMAL_TOC)
#define TARGET_64BIT (target_flags & MASK_64BIT) #define TARGET_64BIT (target_flags & MASK_64BIT)
#define TARGET_SOFT_FLOAT (target_flags & MASK_SOFT_FLOAT) #define TARGET_SOFT_FLOAT (target_flags & MASK_SOFT_FLOAT)
#define TARGET_MULTIPLE (target_flags & MASK_MULTIPLE) #define TARGET_MULTIPLE (target_flags & MASK_MULTIPLE)
#define TARGET_MULTIPLE_SET (target_flags & MASK_MULTIPLE_SET)
#define TARGET_STRING (target_flags & MASK_STRING) #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_UPDATE (target_flags & MASK_NO_UPDATE)
#define TARGET_NO_FUSED_MADD (target_flags & MASK_NO_FUSED_MADD) #define TARGET_NO_FUSED_MADD (target_flags & MASK_NO_FUSED_MADD)
#define TARGET_SCHED_PROLOG (target_flags & MASK_SCHED_PROLOG) #define TARGET_SCHED_PROLOG (target_flags & MASK_SCHED_PROLOG)
...@@ -293,18 +288,14 @@ extern int target_flags; ...@@ -293,18 +288,14 @@ extern int target_flags;
N_("Use hardware fp")}, \ N_("Use hardware fp")}, \
{"soft-float", MASK_SOFT_FLOAT, \ {"soft-float", MASK_SOFT_FLOAT, \
N_("Do not use hardware fp")}, \ N_("Do not use hardware fp")}, \
{"multiple", MASK_MULTIPLE | MASK_MULTIPLE_SET, \ {"multiple", MASK_MULTIPLE, \
N_("Generate load/store multiple instructions")}, \ N_("Generate load/store multiple instructions")}, \
{"no-multiple", - MASK_MULTIPLE, \ {"no-multiple", - MASK_MULTIPLE, \
N_("Do not generate load/store multiple instructions")},\ N_("Do not generate load/store multiple instructions")},\
{"no-multiple", MASK_MULTIPLE_SET, \ {"string", MASK_STRING, \
""}, \
{"string", MASK_STRING | MASK_STRING_SET, \
N_("Generate string instructions for block moves")},\ N_("Generate string instructions for block moves")},\
{"no-string", - MASK_STRING, \ {"no-string", - MASK_STRING, \
N_("Do not generate string instructions for block moves")},\ N_("Do not generate string instructions for block moves")},\
{"no-string", MASK_STRING_SET, \
""}, \
{"update", - MASK_NO_UPDATE, \ {"update", - MASK_NO_UPDATE, \
N_("Generate load/store with update instructions")},\ N_("Generate load/store with update instructions")},\
{"no-update", MASK_NO_UPDATE, \ {"no-update", MASK_NO_UPDATE, \
...@@ -321,17 +312,13 @@ extern int target_flags; ...@@ -321,17 +312,13 @@ extern int target_flags;
""}, \ ""}, \
{"no-sched-epilog", -MASK_SCHED_PROLOG, \ {"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)")},\ 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)")},\ 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,\
""},\
{"no-aix-struct-return", MASK_AIX_STRUCT_RET_SET,\
""},\ ""},\
{"no-svr4-struct-return", MASK_AIX_STRUCT_RET | MASK_AIX_STRUCT_RET_SET,\ {"no-svr4-struct-return", MASK_AIX_STRUCT_RET, \
""},\ ""},\
SUBTARGET_SWITCHES \ SUBTARGET_SWITCHES \
{"", TARGET_DEFAULT | MASK_SCHED_PROLOG, \ {"", TARGET_DEFAULT | MASK_SCHED_PROLOG, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment