rs6000.c (rs6000_override_options): Convert to tartet_flags_explicit.
authorDavid Edelsohn <edelsohn@gnu.org>
Thu, 26 Dec 2002 01:30:59 +0000 (01:30 +0000)
committerDavid Edelsohn <dje@gcc.gnu.org>
Thu, 26 Dec 2002 01:30:59 +0000 (20:30 -0500)
        * 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

gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h

index dc85f61d1d887dee84c345c12f5b0370ce9d1ec7..d2e061443ab9b34cf01ea8d947cce6c2cc73e42f 100644 (file)
@@ -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.
index 6ca020966a1953574acded69f911b01e7b12c305..0a9360ff87a6ca298048b93ed4148ab85b730bc0 100644 (file)
@@ -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);
index 27954f2d2f2ed386ace0bcf58778dc8e2c30ba90..8e6d28f82bcd6f2ae1ed59e8bb4c15c12ab7a9ba 100644 (file)
@@ -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,             \