summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog15
-rw-r--r--gcc/config/rs6000/rs6000-cpus.def13
-rw-r--r--gcc/config/rs6000/rs6000.c11
-rw-r--r--libobjc/ChangeLog8
-rw-r--r--libobjc/encoding.c26
5 files changed, 65 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6e87fadae85..6e44c8af097 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/rs6000/rs6000-cpus.def b/gcc/config/rs6000/rs6000-cpus.def
index fd43146495d..a0aadf1cf3e 100644
--- a/gcc/config/rs6000/rs6000-cpus.def
+++ b/gcc/config/rs6000/rs6000-cpus.def
@@ -46,6 +46,17 @@
#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
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 81dc6f32daa..02309d5001c 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -1121,10 +1121,6 @@ static const struct attribute_spec rs6000_attribute_table[] =
{ NULL, 0, 0, false, false, false, NULL, false }
};
-#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);
diff --git a/libobjc/ChangeLog b/libobjc/ChangeLog
index 9bccceaab89..53ceee35fcc 100644
--- a/libobjc/ChangeLog
+++ b/libobjc/ChangeLog
@@ -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.
diff --git a/libobjc/encoding.c b/libobjc/encoding.c
index bd8b67e0e8b..7e33e738bb9 100644
--- a/libobjc/encoding.c
+++ b/libobjc/encoding.c
@@ -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