Commit 64ee9490 by Eric Christopher Committed by Eric Christopher

tm.texi (OBJC_JBLEN): Describe.

2006-09-19  Eric Christopher  <echristo@apple.com>

        * doc/tm.texi (OBJC_JBLEN): Describe.
        * config/i386/darwin.h (OBJC_JBLEN): Define.
        * config/rs6000/darwin.h: Ditto.

2006-09-19  Eric Christopher  <echristo@apple.com>

        * objc-act.c (JBLEN): Rename to OBJC_JBLEN,
        default to something innocuous.
        (build_next_objc_exception_stuff): Rename JBLEN.

From-SVN: r117066
parent 83a4f4f7
2006-09-19 Eric Christopher <echristo@apple.com>
* doc/tm.texi (OBJC_JBLEN): Describe.
* config/i386/darwin.h (OBJC_JBLEN): Define.
* config/rs6000/darwin.h: Ditto.
2006-09-19 Steven Bosscher <steven@gcc.gnu.org>
PR rtl-optimization/21299
......
......@@ -37,6 +37,9 @@ Boston, MA 02110-1301, USA. */
#endif
#endif
/* Size of the Obj-C jump buffer. */
#define OBJC_JBLEN ((TARGET_64BIT) ? ((9 * 2) + 3 + 16) : (18))
#undef TARGET_FPMATH_DEFAULT
#define TARGET_FPMATH_DEFAULT (TARGET_SSE ? FPMATH_SSE : FPMATH_387)
......
......@@ -40,6 +40,9 @@
#define TARGET_OBJECT_FORMAT OBJECT_MACHO
/* Size of the Obj-C jump buffer. */
#define OBJC_JBLEN ((TARGET_64BIT) ? (26*2 + 18*2 + 129 + 1) : (26 + 18*2 + 129 + 1))
/* We're not ever going to do TOCs. */
#define TARGET_TOC 0
......
......@@ -4198,7 +4198,7 @@ the caller.
If @var{incoming} is nonzero and the address is to be found on the
stack, return a @code{mem} which refers to the frame pointer. If
@var{incoming} is @code{2}, the result is being used to fetch the
structure value address at the beginning of a function. If you need
structure value address at the beginning of a function. If you need
to emit adjusting code, you should do it at this point.
@end deftypefn
......@@ -6038,12 +6038,12 @@ per instruction data structures.
@end deftypefn
@deftypefn {Target Hook} int TARGET_SCHED_SPECULATE_INSN (rtx @var{insn}, int @var{request}, rtx *@var{new_pat})
This hook is called by the insn scheduler when @var{insn} has only
speculative dependencies and therefore can be scheduled speculatively.
The hook is used to check if the pattern of @var{insn} has a speculative
version and, in case of successful check, to generate that speculative
pattern. The hook should return 1, if the instruction has a speculative form,
or -1, if it doesn't. @var{request} describes the type of requested
This hook is called by the insn scheduler when @var{insn} has only
speculative dependencies and therefore can be scheduled speculatively.
The hook is used to check if the pattern of @var{insn} has a speculative
version and, in case of successful check, to generate that speculative
pattern. The hook should return 1, if the instruction has a speculative form,
or -1, if it doesn't. @var{request} describes the type of requested
speculation. If the return value equals 1 then @var{new_pat} is assigned
the generated speculative pattern.
@end deftypefn
......@@ -6056,12 +6056,12 @@ instruction should branch to recovery code, or zero otherwise.
@deftypefn {Target Hook} rtx TARGET_SCHED_GEN_CHECK (rtx @var{insn}, rtx @var{label}, int @var{mutate_p})
This hook is called by the insn scheduler to generate a pattern for recovery
check instruction. If @var{mutate_p} is zero, then @var{insn} is a
speculative instruction for which the check should be generated.
@var{label} is either a label of a basic block, where recovery code should
be emitted, or a null pointer, when requested check doesn't branch to
recovery code (a simple check). If @var{mutate_p} is nonzero, then
a pattern for a branchy check corresponding to a simple check denoted by
check instruction. If @var{mutate_p} is zero, then @var{insn} is a
speculative instruction for which the check should be generated.
@var{label} is either a label of a basic block, where recovery code should
be emitted, or a null pointer, when requested check doesn't branch to
recovery code (a simple check). If @var{mutate_p} is nonzero, then
a pattern for a branchy check corresponding to a simple check denoted by
@var{insn} should be generated. In this case @var{label} can't be null.
@end deftypefn
......@@ -6070,20 +6070,20 @@ This hook is used as a workaround for
@samp{TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD} not being
called on the first instruction of the ready list. The hook is used to
discard speculative instruction that stand first in the ready list from
being scheduled on the current cycle. For non-speculative instructions,
being scheduled on the current cycle. For non-speculative instructions,
the hook should always return nonzero. For example, in the ia64 backend
the hook is used to cancel data speculative insns when the ALAT table
is nearly full.
@end deftypefn
@deftypefn {Target Hook} void TARGET_SCHED_SET_SCHED_FLAGS (unsigned int *@var{flags}, spec_info_t @var{spec_info})
This hook is used by the insn scheduler to find out what features should be
This hook is used by the insn scheduler to find out what features should be
enabled/used. @var{flags} initially may have either the SCHED_RGN or SCHED_EBB
bit set. This denotes the scheduler pass for which the data should be
bit set. This denotes the scheduler pass for which the data should be
provided. The target backend should modify @var{flags} by modifying
the bits corresponding to the following features: USE_DEPS_LIST, USE_GLAT,
DETACH_LIFE_INFO, and DO_SPECULATION. For the DO_SPECULATION feature
an additional structure @var{spec_info} should be filled by the target.
DETACH_LIFE_INFO, and DO_SPECULATION. For the DO_SPECULATION feature
an additional structure @var{spec_info} should be filled by the target.
The structure describes speculation types that can be used in the scheduler.
@end deftypefn
......@@ -9915,3 +9915,8 @@ This macro determines whether to use the JCR section to register Java
classes. By default, TARGET_USE_JCR_SECTION is defined to 1 if both
SUPPORTS_WEAK and TARGET_HAVE_NAMED_SECTIONS are true, else 0.
@end defmac
@defmac OBJC_JBLEN
This macro determines the size of the objective C jump buffer for the
NeXT runtime. By default, OBJC_JBLEN is defined to an innocuous value.
@end defmac
2006-09-19 Eric Christopher <echristo@apple.com>
* objc-act.c (JBLEN): Rename to OBJC_JBLEN,
default to something innocuous.
(build_next_objc_exception_stuff): Rename JBLEN.
2006-07-28 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
* Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
......
......@@ -820,7 +820,7 @@ objc_build_struct (tree class, tree fields, tree super_name)
in the class. */
DECL_SIZE (base)
= (field && TREE_CODE (field) == FIELD_DECL
? size_binop (PLUS_EXPR,
? size_binop (PLUS_EXPR,
size_binop (PLUS_EXPR,
size_binop
(MULT_EXPR,
......@@ -911,7 +911,7 @@ objc_build_volatilized_type (tree type)
a new one. */
t = build_variant_type_copy (type);
TYPE_VOLATILE (t) = 1;
return t;
}
......@@ -1539,7 +1539,7 @@ synth_module_prologue (void)
objc_object_reference = xref_tag (RECORD_TYPE, objc_object_id);
objc_class_reference = xref_tag (RECORD_TYPE, objc_class_id);
objc_object_type = build_pointer_type (objc_object_reference);
objc_class_type = build_pointer_type (objc_class_reference);
......@@ -1644,8 +1644,8 @@ synth_module_prologue (void)
type, 0, NOT_BUILT_IN,
NULL, NULL_TREE);
TREE_NOTHROW (umsg_fast_decl) = 0;
DECL_ATTRIBUTES (umsg_fast_decl)
= tree_cons (get_identifier ("hard_coded_address"),
DECL_ATTRIBUTES (umsg_fast_decl)
= tree_cons (get_identifier ("hard_coded_address"),
build_int_cst (NULL_TREE, OFFS_MSGSEND_FAST),
NULL_TREE);
#else
......@@ -1676,10 +1676,10 @@ synth_module_prologue (void)
/* typedef id (*IMP)(id, SEL, ...); */
tree IMP_type
= build_pointer_type
(build_function_type (objc_object_type,
tree_cons (NULL_TREE, objc_object_type,
tree_cons (NULL_TREE, objc_selector_type,
NULL_TREE))));
(build_function_type (objc_object_type,
tree_cons (NULL_TREE, objc_object_type,
tree_cons (NULL_TREE, objc_selector_type,
NULL_TREE))));
/* IMP objc_msg_lookup (id, SEL); */
type
......@@ -2323,7 +2323,7 @@ build_module_descriptor (void)
static void __objc_gnu_init (void) {
__objc_exec_class (&L_OBJC_MODULES);
} */
} */
static void
build_module_initializer_routine (void)
......@@ -2332,7 +2332,7 @@ build_module_initializer_routine (void)
#ifdef OBJCPLUS
push_lang_context (lang_name_c); /* extern "C" */
#endif
#endif
objc_push_parm (build_decl (PARM_DECL, NULL_TREE, void_type_node));
objc_start_function (get_identifier (TAG_GNUINIT),
......@@ -2577,7 +2577,7 @@ build_selector_translation_table (void)
tree_cons (NULL_TREE,
build_int_cst (NULL_TREE, 0),
tree_cons (NULL_TREE,
build_int_cst (NULL_TREE, 0),
build_int_cst (NULL_TREE, 0),
NULL_TREE)))
: build_int_cst (NULL_TREE, 0), initlist);
initlist = objc_build_constructor (TREE_TYPE (UOBJC_SELECTOR_TABLE_decl),
......@@ -2804,11 +2804,11 @@ add_objc_string (tree ident, enum string_section section)
}
decl = build_objc_string_decl (section);
type = build_array_type
(char_type_node,
build_index_type
(build_int_cst (NULL_TREE,
(build_int_cst (NULL_TREE,
IDENTIFIER_LENGTH (ident))));
decl = start_var_decl (type, IDENTIFIER_POINTER (DECL_NAME (decl)));
string_expr = my_build_string (IDENTIFIER_LENGTH (ident) + 1,
......@@ -2848,7 +2848,7 @@ build_objc_string_decl (enum string_section section)
DECL_ARTIFICIAL (decl) = 1;
#ifdef OBJCPLUS
DECL_THIS_STATIC (decl) = 1; /* squash redeclaration errors */
#endif
#endif
make_decl_rtl (decl);
pushdecl_top_level (decl);
......@@ -2985,7 +2985,7 @@ objc_is_id (tree type)
return (objc_object_type && type
&& (IS_ID (type) || IS_CLASS (type) || IS_SUPER (type))
? type
: NULL_TREE);
: NULL_TREE);
}
/* Check whether TYPE is either 'id', 'Class', or a pointer to an ObjC
......@@ -3011,7 +3011,7 @@ objc_is_object_ptr (tree type)
static int
objc_is_gcable_type (tree type, int or_strong_p)
{
tree name;
tree name;
if (!TYPE_P (type))
return 0;
......@@ -3074,7 +3074,7 @@ objc_build_ivar_assignment (tree outervar, tree lhs, tree rhs)
offs = convert (integer_type_node, build_unary_op (ADDR_EXPR, offs, 0));
offs = fold (offs);
func_params = tree_cons (NULL_TREE,
func_params = tree_cons (NULL_TREE,
convert (objc_object_type, rhs),
tree_cons (NULL_TREE, convert (objc_object_type, outervar),
tree_cons (NULL_TREE, offs,
......@@ -3103,7 +3103,7 @@ objc_build_strong_cast_assignment (tree lhs, tree rhs)
tree func_params = tree_cons (NULL_TREE,
convert (objc_object_type, rhs),
tree_cons (NULL_TREE, convert (build_pointer_type (objc_object_type),
build_unary_op (ADDR_EXPR, lhs, 0)),
build_unary_op (ADDR_EXPR, lhs, 0)),
NULL_TREE));
assemble_external (objc_assign_strong_cast_decl);
......@@ -3215,7 +3215,7 @@ objc_generate_write_barrier (tree lhs, enum tree_code modifycode, tree rhs)
}
outer_gc_p = objc_is_gcable_p (outer);
/* Handle ivar assignments. */
if (objc_is_ivar_reference_p (lhs))
{
......@@ -3249,7 +3249,7 @@ objc_generate_write_barrier (tree lhs, enum tree_code modifycode, tree rhs)
}
/* Likewise, intercept assignment to global/static variables if their type is
GC-marked. */
GC-marked. */
if (objc_is_global_reference_p (outer))
{
if (indirect_p)
......@@ -3375,7 +3375,7 @@ static tree
objc_create_temporary_var (tree type)
{
tree decl;
decl = build_decl (VAR_DECL, NULL_TREE, type);
TREE_USED (decl) = 1;
DECL_ARTIFICIAL (decl) = 1;
......@@ -3542,7 +3542,7 @@ next_sjlj_build_enter_and_setjmp (void)
/* Build:
DECL = objc_exception_extract(&_stack); */
static tree
next_sjlj_build_exc_extract (tree decl)
{
......@@ -3762,10 +3762,10 @@ objc_begin_try_stmt (location_t try_locus, tree body)
objc_mark_locals_volatile (NULL);
}
/* Called just after parsing "@catch (parm)". Open a binding level,
/* Called just after parsing "@catch (parm)". Open a binding level,
enter DECL into the binding level, and initialize it. Leave the
binding level open while the body of the compound statement is parsed. */
void
objc_begin_catch_clause (tree decl)
{
......@@ -3953,19 +3953,16 @@ objc_build_synchronized (location_t start_locus, tree mutex, tree body)
struct _objc_exception_data
{
int buf[JBLEN];
int buf[OBJC_JBLEN];
void *pointers[4];
}; */
/* The following yuckiness should prevent users from having to #include
<setjmp.h> in their code... */
#ifdef TARGET_POWERPC
/* snarfed from /usr/include/ppc/setjmp.h */
#define JBLEN (26 + 36 + 129 + 1)
#else
/* snarfed from /usr/include/i386/{setjmp,signal}.h */
#define JBLEN 18
/* Define to a harmless positive value so the below code doesn't die. */
#ifndef OBJC_JBLEN
#define OBJC_JBLEN 18
#endif
static void
......@@ -3976,9 +3973,9 @@ build_next_objc_exception_stuff (void)
objc_exception_data_template
= start_struct (RECORD_TYPE, get_identifier (UTAG_EXCDATA));
/* int buf[JBLEN]; */
/* int buf[OBJC_JBLEN]; */
index = build_index_type (build_int_cst (NULL_TREE, JBLEN - 1));
index = build_index_type (build_int_cst (NULL_TREE, OBJC_JBLEN - 1));
field_decl = create_field_decl (build_array_type (integer_type_node, index),
"buf");
field_decl_chain = field_decl;
......@@ -4020,7 +4017,7 @@ build_next_objc_exception_stuff (void)
= builtin_function (TAG_EXCEPTIONTRYEXIT, temp_type, 0, NOT_BUILT_IN, NULL, NULL_TREE);
/* int objc_exception_match(id, id); */
temp_type
temp_type
= build_function_type (integer_type_node,
tree_cons (NULL_TREE, objc_object_type,
tree_cons (NULL_TREE, objc_object_type,
......@@ -4046,8 +4043,8 @@ build_next_objc_exception_stuff (void)
objc_assign_ivar_fast_decl
= builtin_function (TAG_ASSIGNIVAR_FAST, temp_type, 0,
NOT_BUILT_IN, NULL, NULL_TREE);
DECL_ATTRIBUTES (objc_assign_ivar_fast_decl)
= tree_cons (get_identifier ("hard_coded_address"),
DECL_ATTRIBUTES (objc_assign_ivar_fast_decl)
= tree_cons (get_identifier ("hard_coded_address"),
build_int_cst (NULL_TREE, OFFS_ASSIGNIVAR_FAST),
NULL_TREE);
#else
......@@ -5278,7 +5275,7 @@ build_dispatch_table_initializer (tree type, tree entries)
elemlist
= tree_cons (NULL_TREE,
convert (ptr_type_node,
convert (ptr_type_node,
build_unary_op (ADDR_EXPR,
METHOD_DEFINITION (entries), 1)),
elemlist);
......@@ -5524,7 +5521,7 @@ build_category_initializer (tree type, tree cat_name, tree class_name,
else
{
expr = convert (build_pointer_type
(build_pointer_type
(build_pointer_type
(objc_protocol_template)),
build_unary_op (ADDR_EXPR, protocol_list, 0));
initlist = tree_cons (NULL_TREE, expr, initlist);
......@@ -5626,7 +5623,7 @@ build_shared_structure_initializer (tree type, tree isa, tree super,
else
{
expr = convert (build_pointer_type
(build_pointer_type
(build_pointer_type
(objc_protocol_template)),
build_unary_op (ADDR_EXPR, protocol_list, 0));
initlist = tree_cons (NULL_TREE, expr, initlist);
......@@ -6072,12 +6069,12 @@ check_duplicates (hash hsh, int methods, int is_class)
warn_with_method (methods ? "using" : "found",
((TREE_CODE (meth) == INSTANCE_METHOD_DECL)
? '-'
: '+'),
: '+'),
meth);
for (loop = hsh->list; loop; loop = loop->next)
warn_with_method ("also found",
((TREE_CODE (loop->value) == INSTANCE_METHOD_DECL)
? '-'
? '-'
: '+'),
loop->value);
}
......@@ -6234,7 +6231,7 @@ lookup_method_in_hash_lists (tree sel_name, int is_class)
if (!is_class)
method_prototype = hash_lookup (nst_method_hash_list,
sel_name);
if (!method_prototype)
{
method_prototype = hash_lookup (cls_method_hash_list,
......@@ -6373,7 +6370,7 @@ objc_finish_message_expr (tree receiver, tree sel_name, tree method_params)
exist locally as part of the @implementation. */
if (!method_prototype && objc_implementation_context
&& CLASS_NAME (objc_implementation_context)
== OBJC_TYPE_NAME (rtype))
== OBJC_TYPE_NAME (rtype))
method_prototype
= lookup_method
((class_tree
......@@ -6396,7 +6393,7 @@ objc_finish_message_expr (tree receiver, tree sel_name, tree method_params)
lookup as if we were messaging 'id'. */
rtype = rprotos = NULL_TREE;
}
}
}
/* For 'id' or 'Class' receivers, search in the global hash table
......@@ -6496,7 +6493,7 @@ build_objc_method_call (int super_flag, tree method_prototype,
tree method, t;
lookup_object = build_c_cast (rcv_p, lookup_object);
/* Use SAVE_EXPR to avoid evaluating the receiver twice. */
lookup_object = save_expr (lookup_object);
......@@ -6526,7 +6523,7 @@ build_objc_method_call (int super_flag, tree method_prototype,
/* First, call the lookup function to get a pointer to the method,
then cast the pointer, then call it with the method arguments. */
object = (super_flag ? self_decl : lookup_object);
t = tree_cons (NULL_TREE, selector, NULL_TREE);
......@@ -6820,13 +6817,13 @@ lookup_method (tree mchain, tree method)
/* Look up a class (if OBJC_LOOKUP_CLASS is set in FLAGS) or instance method
in INTERFACE, along with any categories and protocols attached thereto.
If method is not found, and the OBJC_LOOKUP_NO_SUPER is _not_ set in FLAGS,
recursively examine the INTERFACE's superclass. If OBJC_LOOKUP_CLASS is
recursively examine the INTERFACE's superclass. If OBJC_LOOKUP_CLASS is
set, OBJC_LOOKUP_NO_SUPER is cleared, and no suitable class method could
be found in INTERFACE or any of its superclasses, look for an _instance_
method of the same name in the root class as a last resort.
If a suitable method cannot be found, return NULL_TREE. */
static tree
lookup_method_static (tree interface, tree ident, int flags)
{
......@@ -6944,7 +6941,7 @@ objc_add_method (tree class, tree method, int is_class)
|| TREE_CODE (class) == CATEGORY_INTERFACE_TYPE)
&& !comp_proto_with_proto (method, mth, 1))
error ("duplicate declaration of method %<%c%s%>",
is_class ? '+' : '-',
is_class ? '+' : '-',
IDENTIFIER_POINTER (METHOD_SEL_NAME (mth)));
}
......@@ -7228,7 +7225,7 @@ objc_is_public (tree expr, tree identifier)
TREE_PRIVATE (decl) ? "@private" : "@protected");
return 1;
}
error ("instance variable %qs is declared %s",
IDENTIFIER_POINTER (identifier),
TREE_PRIVATE (decl) ? "private" : "protected");
......@@ -7552,7 +7549,7 @@ start_class (enum tree_code code, tree class_name, tree super_name,
error ("duplicate interface declaration for class %qs",
#else
warning (0, "duplicate interface declaration for class %qs",
#endif
#endif
IDENTIFIER_POINTER (class_name));
else
add_class (class, class_name);
......@@ -7927,7 +7924,7 @@ encode_array (tree type, int curtype, int format)
if (TREE_INT_CST_LOW (TYPE_SIZE (array_of)) == 0)
sprintf (buffer, "[" HOST_WIDE_INT_PRINT_DEC, (HOST_WIDE_INT)0);
else
else
sprintf (buffer, "[" HOST_WIDE_INT_PRINT_DEC,
TREE_INT_CST_LOW (an_int_cst)
/ TREE_INT_CST_LOW (TYPE_SIZE (array_of)));
......@@ -7953,7 +7950,7 @@ encode_aggregate_fields (tree type, int pointed_to, int curtype, int format)
#endif
/* Recursively encode fields of embedded base classes. */
if (DECL_ARTIFICIAL (field) && !DECL_NAME (field)
if (DECL_ARTIFICIAL (field) && !DECL_NAME (field)
&& TREE_CODE (TREE_TYPE (field)) == RECORD_TYPE)
{
encode_aggregate_fields (TREE_TYPE (field),
......@@ -7998,7 +7995,7 @@ encode_aggregate_within (tree type, int curtype, int format, int left,
original struct and its tag name (if any). */
type = TYPE_MAIN_VARIANT (type);
name = OBJC_TYPE_NAME (type);
/* Open parenth/bracket. */
/* Open parenth/bracket. */
obstack_1grow (&util_obstack, left);
/* Encode the struct/union tag name, or '?' if a tag was
......@@ -8022,7 +8019,7 @@ encode_aggregate_within (tree type, int curtype, int format, int left,
obstack_1grow (&util_obstack, '=');
encode_aggregate_fields (type, pointed_to, curtype, format);
}
/* Close parenth/bracket. */
/* Close parenth/bracket. */
obstack_1grow (&util_obstack, right);
}
......@@ -8080,7 +8077,7 @@ encode_type (tree type, int curtype, int format)
{
case 8: c = TYPE_UNSIGNED (type) ? 'C' : 'c'; break;
case 16: c = TYPE_UNSIGNED (type) ? 'S' : 's'; break;
case 32:
case 32:
if (type == long_unsigned_type_node
|| type == long_integer_type_node)
c = TYPE_UNSIGNED (type) ? 'L' : 'l';
......@@ -8124,7 +8121,7 @@ encode_type (tree type, int curtype, int format)
else if (code == FUNCTION_TYPE) /* '?' */
obstack_1grow (&util_obstack, '?');
else if (code == COMPLEX_TYPE)
{
obstack_1grow (&util_obstack, 'j');
......@@ -8240,7 +8237,7 @@ objc_push_parm (tree parm)
((TYPE_READONLY (TREE_TYPE (parm)) ? TYPE_QUAL_CONST : 0)
| (TYPE_RESTRICT (TREE_TYPE (parm)) ? TYPE_QUAL_RESTRICT : 0)
| (TYPE_VOLATILE (TREE_TYPE (parm)) ? TYPE_QUAL_VOLATILE : 0), parm);
objc_parmlist = chainon (objc_parmlist, parm);
}
......@@ -8271,7 +8268,7 @@ objc_get_parm_info (int have_ellipsis)
{
tree next = TREE_CHAIN (parm_info);
TREE_CHAIN (parm_info) = NULL_TREE;
TREE_CHAIN (parm_info) = NULL_TREE;
parm_info = pushdecl (parm_info);
finish_decl (parm_info, NULL_TREE, NULL_TREE);
parm_info = next;
......@@ -8353,7 +8350,7 @@ start_method_def (tree method)
{
tree akey;
for (akey = TREE_CHAIN (METHOD_ADD_ARGS (method));
for (akey = TREE_CHAIN (METHOD_ADD_ARGS (method));
akey; akey = TREE_CHAIN (akey))
{
objc_push_parm (TREE_VALUE (akey));
......@@ -8835,7 +8832,7 @@ gen_declaration (tree decl)
sprintf (errbuf + strlen (errbuf), ": " HOST_WIDE_INT_PRINT_DEC,
TREE_INT_CST_LOW (DECL_INITIAL (decl)));
}
return errbuf;
}
......@@ -8857,7 +8854,7 @@ gen_type_name_0 (tree type)
inner = TREE_TYPE (inner);
gen_type_name_0 (inner);
if (!POINTER_TYPE_P (inner))
strcat (errbuf, " ");
......@@ -8873,7 +8870,7 @@ gen_type_name_0 (tree type)
char sz[20];
sprintf (sz, HOST_WIDE_INT_PRINT_DEC,
(TREE_INT_CST_LOW
(TREE_INT_CST_LOW
(TYPE_MAX_VALUE (TYPE_DOMAIN (type))) + 1));
strcat (errbuf, sz);
}
......@@ -8895,7 +8892,7 @@ gen_type_name_0 (tree type)
/* For 'id' and 'Class', adopted protocols are stored in the pointee. */
if (objc_is_id (orig))
orig = TREE_TYPE (orig);
proto = TYPE_HAS_OBJC_INFO (orig) ? TYPE_OBJC_PROTOCOL_LIST (orig) : NULL_TREE;
if (proto)
......@@ -8903,7 +8900,7 @@ gen_type_name_0 (tree type)
strcat (errbuf, " <");
while (proto) {
strcat (errbuf,
strcat (errbuf,
IDENTIFIER_POINTER (PROTOCOL_NAME (TREE_VALUE (proto))));
proto = TREE_CHAIN (proto);
strcat (errbuf, proto ? ", " : ">");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment