This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[Patch, Darwin, x86] fix 53283
- From: Iain Sandoe <iain at codesourcery dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Cc: Mike Stump <mikestump at comcast dot net>
- Date: Mon, 25 Jun 2012 08:53:36 +0100
- Subject: [Patch, Darwin, x86] fix 53283
As described in the PR thread, Darwin was already using the TARGET_FOLD_BUILTIN hook to process CFstrings.
The patch fixes the breakage by calling a SUBTARGET_FOLD_BUILTIN where defined (following similar patterns for other items that require sub-target handling).
OK for trunk?
Iain
gcc:
PR target/53283
* config/i386/i386.c (ix86_fold_builtin): Call SUBTARGET_FOLD_BUILTIN
if defined.
* config/darwin.h: Rename TARGET_FOLD_BUILTIN to
SUBTARGET_FOLD_BUILTIN.
* config/rs6000/darwin.h: Map TARGET_FOLD_BUILTIN onto
SUBTARGET_FOLD_BUILTIN.
Index: gcc/config/i386/i386.c
===================================================================
--- gcc/config/i386/i386.c (revision 188918)
+++ gcc/config/i386/i386.c (working copy)
@@ -28030,6 +28030,10 @@ ix86_fold_builtin (tree fndecl, int n_args,
}
}
+#ifdef SUBTARGET_FOLD_BUILTIN
+ return SUBTARGET_FOLD_BUILTIN (fndecl, n_args, args, ignore);
+#endif
+
return NULL_TREE;
}
Index: gcc/config/rs6000/darwin.h
===================================================================
--- gcc/config/rs6000/darwin.h (revision 188918)
+++ gcc/config/rs6000/darwin.h (working copy)
@@ -422,3 +422,7 @@ do { \
rs6000_builtin_decls[(unsigned) (RS6000_BUILTIN_CFSTRING)] \
= darwin_init_cfstring_builtins ((unsigned) (RS6000_BUILTIN_CFSTRING)); \
} while(0)
+
+/* So far, there is no rs6000_fold_builtin, if one is introduced, then
+ this will need to be modified similar to the x86 case. */
+#define TARGET_FOLD_BUILTIN SUBTARGET_FOLD_BUILTIN
Index: gcc/config/darwin.h
===================================================================
--- gcc/config/darwin.h (revision 188918)
+++ gcc/config/darwin.h (working copy)
@@ -912,7 +909,7 @@ void add_framework_path (char *);
#define TARGET_KEXTABI flag_apple_kext
/* We have target-specific builtins. */
-#define TARGET_FOLD_BUILTIN darwin_fold_builtin
+#define SUBTARGET_FOLD_BUILTIN darwin_fold_builtin
#define TARGET_N_FORMAT_TYPES 1
#define TARGET_FORMAT_TYPES darwin_additional_format_types