rs6000-cpus.def (POWERPC_MASKS): Don't assume OPTION_MASK_STRICT_ALIGN is defined.
authorMichael Meissner <meissner@linux.vnet.ibm.com>
Fri, 19 Oct 2012 19:10:03 +0000 (19:10 +0000)
committerMichael Meissner <meissner@gcc.gnu.org>
Fri, 19 Oct 2012 19:10:03 +0000 (19:10 +0000)
[gcc]
2012-10-19  Michael Meissner  <meissner@linux.vnet.ibm.com>
    Dominique Dhumieres  <dominiq@lps.ens.fr>

* config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Don't assume
OPTION_MASK_STRICT_ALIGN is defined.
(MASK_STRICT_ALIGN): If OPTION_MASK_STRICT_ALIGN is not defined,
define this to 0 for the 3 ports that use it.

* config/rs6000/rs6000.c (OPTION_MASK_STRICT_ALIGN): Don't do
check for ports not having -mstrict-align here, move test to
rs6000-cpus.def.
(MASK_STRICT_ALIGN): Likewise.
(rs6000_debug_reg_global): Print out correct target flag words if
-mdebug=reg.

[libobjc]
2012-10-19  Michael Meissner  <meissner@linux.vnet.ibm.com>

* encoding.c (TARGET_VSX): Provide definitions based on the
current compilation options, and not based off the target options
structure.
(TARGET_ALTIVEC): Likewise.
(TARGET_64BIT): Likewise.

Co-Authored-By: Dominique d'Humieres <dominiq@lps.ens.fr>
From-SVN: r192623

gcc/ChangeLog
gcc/config/rs6000/rs6000-cpus.def
gcc/config/rs6000/rs6000.c
libobjc/ChangeLog
libobjc/encoding.c

index 6e87fadae853f642349d731d5651068c7d2c6d53..6e44c8af0973550038c90fb8d3b5104dee9fd299 100644 (file)
@@ -1,3 +1,18 @@
+2012-10-19  Michael Meissner  <meissner@linux.vnet.ibm.com>
+           Dominique Dhumieres  <dominiq@lps.ens.fr>
+
+       * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Don't assume
+       OPTION_MASK_STRICT_ALIGN is defined.
+       (MASK_STRICT_ALIGN): If OPTION_MASK_STRICT_ALIGN is not defined,
+       define this to 0 for the 3 ports that use it.
+
+       * config/rs6000/rs6000.c (OPTION_MASK_STRICT_ALIGN): Don't do
+       check for ports not having -mstrict-align here, move test to
+       rs6000-cpus.def.
+       (MASK_STRICT_ALIGN): Likewise.
+       (rs6000_debug_reg_global): Print out correct target flag words if
+       -mdebug=reg.
+
 2012-10-19  Marek Polacek  <polacek@redhat.com>
 
        PR middle-end/54945
index fd43146495d9da4c8d0b8806a12602db1bf8da33..a0aadf1cf3eafd75c2052dc5aeec7a8b3a014387 100644 (file)
 
 #define POWERPC_7400_MASK      (OPTION_MASK_PPC_GFXOPT | OPTION_MASK_ALTIVEC)
 
+/* Deal with ports that do not have -mstrict-align.  */
+#ifdef OPTION_MASK_STRICT_ALIGN
+#define OPTION_MASK_STRICT_ALIGN_OPTIONAL OPTION_MASK_STRICT_ALIGN
+#else
+#define OPTION_MASK_STRICT_ALIGN 0
+#define OPTION_MASK_STRICT_ALIGN_OPTIONAL 0
+#ifndef MASK_STRICT_ALIGN
+#define MASK_STRICT_ALIGN 0
+#endif
+#endif
+
 /* Mask of all options to set the default isa flags based on -mcpu=<xxx>.  */
 #define POWERPC_MASKS          (OPTION_MASK_ALTIVEC                    \
                                 | OPTION_MASK_CMPB                     \
@@ -64,7 +75,7 @@
                                 | OPTION_MASK_PPC_GPOPT                \
                                 | OPTION_MASK_RECIP_PRECISION          \
                                 | OPTION_MASK_SOFT_FLOAT               \
-                                | OPTION_MASK_STRICT_ALIGN             \
+                                | OPTION_MASK_STRICT_ALIGN_OPTIONAL    \
                                 | OPTION_MASK_VSX)
 
 #endif
index 81dc6f32daa18d92fc8a98421d920696de128353..02309d5001c7e5b9a58cab79ff23885fd907d98f 100644 (file)
@@ -1121,10 +1121,6 @@ static const struct attribute_spec rs6000_attribute_table[] =
   { NULL,        0, 0, false, false, false, NULL, false }
 };
 \f
-#ifndef OPTION_MASK_STRICT_ALIGN
-#define OPTION_MASK_STRICT_ALIGN 0
-#define MASK_STRICT_ALIGN 0
-#endif
 #ifndef TARGET_PROFILE_KERNEL
 #define TARGET_PROFILE_KERNEL 0
 #endif
@@ -1805,10 +1801,11 @@ rs6000_debug_reg_global (void)
     fprintf (stderr, DEBUG_FMT_S, "tune", "<none>");
 
   cl_target_option_save (&cl_opts, &global_options);
-  rs6000_print_isa_options (stderr, 0, "target_flags", target_flags);
+  rs6000_print_isa_options (stderr, 0, "rs6000_isa_flags",
+                           rs6000_isa_flags);
 
-  rs6000_print_isa_options (stderr, 0, "target_flags_explicit",
-                           target_flags_explicit);
+  rs6000_print_isa_options (stderr, 0, "rs6000_isa_flags_explicit",
+                           rs6000_isa_flags_explicit);
 
   rs6000_print_builtin_options (stderr, 0, "rs6000_builtin_mask",
                                rs6000_builtin_mask);
index 9bccceaab893e120a9ad22ab9035738bf0dd9e05..53ceee35fcc5d5e26a8c79e849f0bd17587a3f42 100644 (file)
@@ -1,3 +1,11 @@
+2012-10-19  Michael Meissner  <meissner@linux.vnet.ibm.com>
+
+       * encoding.c (TARGET_VSX): Provide definitions based on the
+       current compilation options, and not based off the target options
+       structure.
+       (TARGET_ALTIVEC): Likewise.
+       (TARGET_64BIT): Likewise.
+
 2012-09-14  David Edelsohn  <dje.gcc@gmail.com>
 
        * configure: Regenerated.
index bd8b67e0e8b70314b6ac55e7619f661c122594a4..7e33e738bb9ea41a33db1d153f759f0b04fe1980 100644 (file)
@@ -112,6 +112,32 @@ static int __attribute__ ((__unused__)) not_target_flags = 0;
 #undef ALTIVEC_VECTOR_MODE
 #define ALTIVEC_VECTOR_MODE(MODE) (0)
 
+/* Replace TARGET_VSX, TARGET_ALTIVEC, and TARGET_64BIT with constants based on
+   the current switches, rather than looking in the options structure.  */
+#ifdef _ARCH_PPC
+#undef TARGET_VSX
+#undef TARGET_ALTIVEC
+#undef TARGET_64BIT
+
+#ifdef __VSX__
+#define TARGET_VSX 1
+#else
+#define TARGET_VSX 0
+#endif
+
+#ifdef __ALTIVEC__
+#define TARGET_ALTIVEC 1
+#else
+#define TARGET_ALTIVEC 0
+#endif
+
+#ifdef _ARCH_PPC64
+#define TARGET_64BIT 1
+#else
+#define TARGET_64BIT 0
+#endif
+#endif
+
 /* Furthermore, some (powerpc) targets also use TARGET_ALIGN_NATURAL
  in their alignment macros. Currently[4.5/6], rs6000.h points this
  to a static variable, initialized by target overrides. This is reset