aboutsummaryrefslogtreecommitdiff
path: root/libobjc
diff options
context:
space:
mode:
Diffstat (limited to 'libobjc')
-rw-r--r--libobjc/ChangeLog8
-rw-r--r--libobjc/encoding.c26
2 files changed, 34 insertions, 0 deletions
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