re PR target/47822 (Multiple test suite failures due to revision 170321)
PR target/47822 * config/darwin-protos.h (darwin_init_cfstring_builtins): Return a tree so we can get save the type. * config/i386/darwin.h (SUBTARGET_INIT_BUILTINS): Reserve builtin slot for CFString instead of trying to use past the end of the builtins. * config/i386/i386.c (IX86_BUILTIN_CFSTRING): Likewise. * config/rs6000/rs6000-builtin.def (RS6000_BUILTIN_CFSTRING): Likewise. * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): Likewise. * config/darwin.c (DARWIN_BUILTIN_CFSTRINGMAKECONSTANTSTRING): Rename to darwin_builtin_cfstring. (darwin_init_cfstring_builtins): Return the built type. From-SVN: r170376
This commit is contained in:
parent
23e0d93019
commit
d1d46f9f70
7 changed files with 34 additions and 10 deletions
|
@ -1,3 +1,17 @@
|
|||
2011-02-21 Mike Stump <mikestump@comcast.net>
|
||||
|
||||
PR target/47822
|
||||
* config/darwin-protos.h (darwin_init_cfstring_builtins): Return a
|
||||
tree so we can get save the type.
|
||||
* config/i386/darwin.h (SUBTARGET_INIT_BUILTINS): Reserve builtin slot
|
||||
for CFString instead of trying to use past the end of the builtins.
|
||||
* config/i386/i386.c (IX86_BUILTIN_CFSTRING): Likewise.
|
||||
* config/rs6000/rs6000-builtin.def (RS6000_BUILTIN_CFSTRING): Likewise.
|
||||
* config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): Likewise.
|
||||
* config/darwin.c (DARWIN_BUILTIN_CFSTRINGMAKECONSTANTSTRING):
|
||||
Rename to darwin_builtin_cfstring.
|
||||
(darwin_init_cfstring_builtins): Return the built type.
|
||||
|
||||
2011-02-21 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/47840
|
||||
|
|
|
@ -110,7 +110,7 @@ extern void darwin_asm_output_aligned_decl_common (FILE *, tree, const char *,
|
|||
extern bool darwin_binds_local_p (const_tree);
|
||||
extern void darwin_cpp_builtins (struct cpp_reader *);
|
||||
|
||||
extern void darwin_init_cfstring_builtins (unsigned);
|
||||
extern tree darwin_init_cfstring_builtins (unsigned);
|
||||
extern tree darwin_fold_builtin (tree, int, tree *, bool);
|
||||
extern tree darwin_objc_construct_string (tree);
|
||||
extern bool darwin_cfstring_p (tree);
|
||||
|
|
|
@ -3001,7 +3001,7 @@ static GTY(()) tree pccfstring_type_node = NULL_TREE;
|
|||
static GTY(()) tree pcint_type_node = NULL_TREE;
|
||||
static GTY(()) tree pcchar_type_node = NULL_TREE;
|
||||
|
||||
static enum built_in_function DARWIN_BUILTIN_CFSTRINGMAKECONSTANTSTRING;
|
||||
static enum built_in_function darwin_builtin_cfstring;
|
||||
|
||||
/* Store all constructed constant CFStrings in a hash table so that
|
||||
they get uniqued properly. */
|
||||
|
@ -3031,14 +3031,14 @@ add_builtin_field_decl (tree type, const char *name, tree **chain)
|
|||
return field;
|
||||
}
|
||||
|
||||
void
|
||||
darwin_init_cfstring_builtins (unsigned first_avail)
|
||||
tree
|
||||
darwin_init_cfstring_builtins (unsigned builtin_cfstring)
|
||||
{
|
||||
tree cfsfun, fields, pccfstring_ftype_pcchar;
|
||||
tree *chain = NULL;
|
||||
|
||||
DARWIN_BUILTIN_CFSTRINGMAKECONSTANTSTRING =
|
||||
(enum built_in_function) first_avail;
|
||||
darwin_builtin_cfstring =
|
||||
(enum built_in_function) builtin_cfstring;
|
||||
|
||||
/* struct __builtin_CFString {
|
||||
const int *isa; (will point at
|
||||
|
@ -3084,7 +3084,7 @@ darwin_init_cfstring_builtins (unsigned first_avail)
|
|||
DECL_LANG_SPECIFIC (cfsfun) = NULL;
|
||||
(*lang_hooks.dup_lang_specific_decl) (cfsfun);
|
||||
DECL_BUILT_IN_CLASS (cfsfun) = BUILT_IN_MD;
|
||||
DECL_FUNCTION_CODE (cfsfun) = DARWIN_BUILTIN_CFSTRINGMAKECONSTANTSTRING;
|
||||
DECL_FUNCTION_CODE (cfsfun) = darwin_builtin_cfstring;
|
||||
lang_hooks.builtin_function (cfsfun);
|
||||
|
||||
/* extern int __CFConstantStringClassReference[]; */
|
||||
|
@ -3100,6 +3100,8 @@ darwin_init_cfstring_builtins (unsigned first_avail)
|
|||
|
||||
/* Initialize the hash table used to hold the constant CFString objects. */
|
||||
cfstring_htab = htab_create_ggc (31, cfstring_hash, cfstring_eq, NULL);
|
||||
|
||||
return cfstring_type_node;
|
||||
}
|
||||
|
||||
tree
|
||||
|
@ -3108,7 +3110,7 @@ darwin_fold_builtin (tree fndecl, int n_args, tree *argp,
|
|||
{
|
||||
unsigned int fcode = DECL_FUNCTION_CODE (fndecl);
|
||||
|
||||
if (fcode == DARWIN_BUILTIN_CFSTRINGMAKECONSTANTSTRING)
|
||||
if (fcode == darwin_builtin_cfstring)
|
||||
{
|
||||
if (!darwin_constant_cfstrings)
|
||||
{
|
||||
|
|
|
@ -308,7 +308,8 @@ do { \
|
|||
#undef SUBTARGET_INIT_BUILTINS
|
||||
#define SUBTARGET_INIT_BUILTINS \
|
||||
do { \
|
||||
darwin_init_cfstring_builtins ((unsigned) (IX86_BUILTIN_MAX));\
|
||||
ix86_builtins[(int) IX86_BUILTIN_CFSTRING] \
|
||||
= darwin_init_cfstring_builtins ((unsigned) (IX86_BUILTIN_CFSTRING)); \
|
||||
darwin_rename_builtins (); \
|
||||
} while(0)
|
||||
|
||||
|
|
|
@ -24337,6 +24337,9 @@ enum ix86_builtins
|
|||
IX86_BUILTIN_CVTPS2PH,
|
||||
IX86_BUILTIN_CVTPS2PH256,
|
||||
|
||||
/* CFString built-in for darwin */
|
||||
IX86_BUILTIN_CFSTRING,
|
||||
|
||||
IX86_BUILTIN_MAX
|
||||
};
|
||||
|
||||
|
|
|
@ -433,5 +433,6 @@ extern int darwin_emit_branch_islands;
|
|||
#define SUBTARGET_INIT_BUILTINS \
|
||||
do { \
|
||||
darwin_patch_builtins (); \
|
||||
darwin_init_cfstring_builtins ((unsigned) (RS6000_BUILTIN_COUNT)); \
|
||||
rs6000_builtin_decls[(unsigned) (RS6000_BUILTIN_CFSTRING)] \
|
||||
= darwin_init_cfstring_builtins ((unsigned) (RS6000_BUILTIN_CFSTRING)); \
|
||||
} while(0)
|
||||
|
|
|
@ -1015,3 +1015,6 @@ RS6000_BUILTIN(RS6000_BUILTIN_RECIPF, RS6000_BTC_FP_PURE)
|
|||
RS6000_BUILTIN(RS6000_BUILTIN_RSQRTF, RS6000_BTC_FP_PURE)
|
||||
RS6000_BUILTIN(RS6000_BUILTIN_RSQRT, RS6000_BTC_FP_PURE)
|
||||
RS6000_BUILTIN(RS6000_BUILTIN_BSWAP_HI, RS6000_BTC_CONST)
|
||||
|
||||
/* Darwin CfString builtin. */
|
||||
RS6000_BUILTIN(RS6000_BUILTIN_CFSTRING, RS6000_BTC_MISC)
|
||||
|
|
Loading…
Add table
Reference in a new issue