OSDN Git Service

* gcc-interface/decl.c (create_concat_name): Add explicit cast.
[pf3gnuchains/gcc-fork.git] / gcc / objc / ChangeLog
1 2011-10-18  Mikael Pettersson  <mikpe@it.uu.se>
2
3         PR objc/50743
4         * objc-act.c (check_duplicates): Cast TREE_VEC_LENGTH result to
5         size_t to avoid signed/unsigned
6         comparison.
7         (insert_method_into_method_map): Likewise.
8
9 2011-10-14  Nicola Pero  <nicola.pero@meta-innovation.com>
10
11         * objc-map.h: New file.
12         * objc-map.c: New file. 
13         * config-lang.in (gtfiles): Added objc-map.h.
14         * Make-lang.in (OBJC_OBJS): Added objc-map.o.
15         (objc/objc-map.o): New rule.
16         (objc/objc-act.o): Depend on objc/objc-map.h.
17         * objc-next-runtime-abi-02.c: Added a TODO comment.
18         * objc-act.c: Include objc-map.h.
19         (nst_method_hash_list, cls_method_hash_list): Removed.
20         (instance_method_map, class_method_map): New.
21         (cls_name_hash_list, als_name_hash_list): Removed.
22         (class_name_map, alias_name_map): Removed.
23         (ivar_offset_hash_list): Removed.
24         (hash_class_name_enter, hash_class_name_lookup, hash_enter,
25         hash_lookup, hash_add_attr, add_method_to_hash_list): Removed.
26         (interface_hash_init): New.
27         (objc_init): Call interface_hash_init.
28         (objc_write_global_declarations): Iterate over class_method_map
29         and instance_method_map instead of cls_method_hash_list and
30         nst_method_hash_list.
31         (objc_declare_alias): Use alias_name_map instead of
32         cls_name_hash_list.
33         (objc_is_class_name): Use class_name_map and alias_name_map
34         instead of cls_name_hash_list and als_name_hash_list.
35         (interface_tuple, interface_htab, hash_interface, eq_interface):
36         Removed.
37         (interface_map): New.
38         (add_class): Renamed to add_interface.  Use interface_map instead
39         of interface_htab.
40         (lookup_interface): Use interface_map instead of interface_htab.
41         (check_duplicates): Changed first argument to be a tree,
42         potentially a TREE_VEC, instead of a hash.  Changed implementation
43         to match.
44         (lookup_method_in_hash_lists): Use class_method_map and
45         instance_method_map instead of cls_method_hash_list and
46         nst_method_hash_list.
47         (objc_build_selector_expr): Likewise.
48         (hash_func): Removed.
49         (hash_init): Create instance_method_map, class_method_map,
50         class_name_map, and alias_name_map.  Do not create
51         nst_method_hash_list, cls_method_hash_list, cls_name_hash_list,
52         als_name_hash_list, and ivar_offset_hash_list.
53         (insert_method_into_method_map): New.
54         (objc_add_method): Use insert_method_into_method_map instead of
55         add_method_to_hash_list.
56         (start_class): Call add_interface instead of add_class.
57         * objc-act.h (cls_name_hash_list, als_name_hash_list,
58         nst_method_hash_list, cls_method_hash_list): Removed.
59
60 2011-10-11  Michael Meissner  <meissner@linux.vnet.ibm.com>
61
62         * objc-next-runtime-abi-01.c (objc_build_exc_ptr): Delete old
63         interface with two parallel arrays to hold standard builtin
64         declarations, and replace it with a function based interface that
65         can support creating builtins on the fly in the future.  Change
66         all uses, and poison the old names.  Make sure 0 is not a
67         legitimate builtin index.
68         * objc-next-runtime-abi-02.c (objc_build_exc_ptr): Ditto.
69         * objc-gnu-runtime-abi-01.c (objc_build_exc_ptr): Ditto.
70
71 2011-07-19  Richard Guenther  <rguenther@suse.de>
72
73         * objc-next-runtime-abi-02.c (objc_v2_build_ivar_ref):
74         Use fold_build_pointer_plus.
75         (objc2_build_ehtype_initializer): Likewise.
76
77 2011-07-11  Nicola Pero  <nicola.pero@meta-innovation.com>
78
79         * objc-encoding.h (obstack.h): Do not include.
80         (util_obstack, util_firstobj): Do not declare.
81         (encode_field_decl): Updated prototype to return a tree and take a
82         single tree argument.  Updated comments.
83         * objc-encoding.c (util_obstack, util_firstobj): Made static.
84         (objc_encoding_init): New.
85         (encode_field_decl): Existing function renamed to encode_field and
86         made static.  New encode_field_decl wrapper function added.
87         (encode_aggregate_fields): Update call to encode_field_decl to
88         call encode_field.
89         * objc-next-runtime-abi-02.c (obstack.h): Do not include.
90         (util_obstack, util_firstobj): Do not declare.
91         (build_v2_ivar_list_initializer): Updated call to
92         encode_field_decl.
93         * objc-runtime-shared-support.c (obstack.h): Do not include.
94         (util_obstack, util_firstobj): Do not declare.
95         (build_ivar_list_initializer): Updated call to encode_field_decl.
96         * objc-act.c (objc_init): Use objc_encoding_init.
97         * Make-lang.in (objc/objc-runtime-shared-support.o): Do not depend
98         on OBSTACK_H.
99         (objc/objc-gnu-runtime-abi-01.o): Likewise.
100         (objc/objc-next-runtime-abi-01.o): Likewise.
101         (objc/objc-next-runtime-abi-02.o): Likewise.
102         (objc/objc-act.o): Likewise.
103         
104 2011-07-04  Nicola Pero  <nicola.pero@meta-innovation.com>
105
106         Refactored encoding code into objc-encoding.h and objc-encoding.c.
107         * objc-act.c (util_obstack, util_firstobj, encode_type_qualifiers,
108         encode_type, generating_instance_variables, objc_method_parm_type,
109         objc_encoded_type_size, encode_method_prototype,
110         objc_build_encode_expr, pointee_is_readonly, encode_pointer,
111         encode_array, encode_vector, encode_aggregate_fields,
112         encode_aggregate_within, encode_next_bitfield,
113         encode_gnu_bitfield, encode_field_decl,
114         objc_v2_encode_property_attr): Moved to objc-encoding.h and
115         objc-encoding.c.  No change in the actual code.
116         Include objc-encoding.h.
117         (objc_init): Added TODO.
118         (objc_build_property_setter_name): Made non-static so it can be
119         called from objc-encoding.c.
120         * objc-act.h (OBJC_ENCODE_INLINE_DEFS,
121         OBJC_ENCODE_DONT_INLINE_DEFS): Moved to objc-encoding.h.
122         * objc-runtime-shared-support.h (objc_v2_encode_property_attr,
123         encode_method_prototype, encode_field_decl,
124         generating_instance_variables): Moved to objc-encoding.h.       
125         (objc_build_property_setter_name): Declare.
126         * objc-encoding.c: New.
127         * objc-encoding.h: New.
128         * objc-gnu-runtime-abi-01.c: Include objc-encoding.h.
129         * objc-next-runtime-abi-01.c: Likewise.
130         * objc-next-runtime-abi-02.c: Likewise. 
131         * objc-runtime-shared-support.c: Likewise.
132         * Make-lang.in (OBJC_OBJS): Added objc-encoding.o.
133         (objc/objc-lang.o): Reordered dependencies.
134         (objc/objc-runtime-shared-support.o): Reordered dependencies.
135         Added dependencies on objc-encoding.h and on $(GGC_H),
136         $(DIAGNOSTIC_CORE_H), $(FLAGS_H) and input.h.
137         (objc/objc-gnu-runtime-abi-01.o): Likewise.
138         (objc/objc-next-runtime-abi-01.o): Likewise.
139         (objc/objc-next-runtime-abi-02.o): Likewise.
140         (objc/objc-act.o): Reordered dependencies.  Added dependency on
141         objc-encoding.h.
142         (objc/objc-encoding.o): New rule.
143
144         * objc-encoding.c (encode_type): Use "%<%T%>" format when printing
145         warning "unknown type %<%T%> found during Objective-C encoding"
146         instead of using gen_type_name.
147         
148 2011-06-05  Nicola Pero  <nicola.pero@meta-innovation.com>
149
150         * objc-act.c (receiver_is_class_object): Expanded comment.
151         (objc_finish_message_expr): Likewise.
152
153 2011-06-02  Nicola Pero  <nicola.pero@meta-innovation.com>
154
155         PR objc/48539
156         * objc-act.c (objc_finish_message_expr): Warn if messaging a class
157         that was only declared using @class without an @interface.  Warn
158         if messaging an instance of a class that was only declared using
159         @class without an @interface, unless the receiver was also typed
160         with a protocol list.
161
162 2011-06-01  Nicola Pero  <nicola.pero@meta-innovation.com>
163
164         * objc-act.c (objc_decl_method_attributes): Implement nonnull
165         attribute for Objective-C methods.
166
167 2011-05-21  Nicola Pero  <nicola.pero@meta-innovation.com>
168
169         * config-lang.in (gtfiles): Updated order of files to fix building
170         when the gcc/cp directory is missing, as in the case of some
171         release tarballs.
172
173 2011-05-20  Nathan Froyd  <froydnj@codesourcery.com>
174
175         * objc-act.c (objc_compare_types): Use function_args_iterator
176         instead of TYPE_ARG_TYPES to compare function argument types.
177
178 2011-05-13  Toon Moene  <toon@moene.org>
179
180         * objc-next-runtime-abi-02.c (newabi_append_ro):
181         Add const qualifier to constant variable pointer declaration.
182
183 2011-05-11  Nathan Froyd  <froydnj@codesourcery.com>
184
185         * objc-act.h (CLASS_NAME, CLASS_SUPER_NAME): Use proper accessors.
186         (CLASS_NST_METHODS, CLASS_CLS_METHODS): Likewise.
187         (PROTOCOL_NAME, PROTOCOL_NST_METHODS, PROTOCOL_CLS_METHODS): Likewise.
188
189 2011-05-05  Nathan Froyd  <froydnj@codesourcery.com>
190
191         * objc-runtime-shared-support.h (get_arg_type_list): Delete.
192         (build_function_type_for_method): Declare.
193         * objc-runtime-hooks.h (struct _objc_runtime_hooks_r): Change
194         type of get_arg_type_base_list field.
195         * objc-act.h (OBJC_VOID_AT_END): Delete.
196         * objc-act.c (get_arg_type_list): Delete.
197         (build_function_type_for_method): New function.
198         (objc_decl_method_attributes): Call build_function_type_for_method.
199         (really_start_method): Likewise.
200         * objc-gnu-runtime-abi-01.c
201         (gnu_runtime_abi_01_get_type_arg_list_base): Change prototype and
202         adjust function accordingly.  Update header comment.
203         (build_objc_method_call): Call build_function_type_for_method.
204         * objc-next-runtime-abi-01.c
205         (next_runtime_abi_01_get_type_arg_list_base): Change prototype and
206         adjust function accordingly.  Update header comment.
207         (build_objc_method_call): Call build_function_type_for_method.
208         * objc-next-runtime-abi-02.c
209         (next_runtime_abi_02_get_type_arg_list_base): Change prototype and
210         adjust function accordingly.  Update header comment.
211         (objc_copy_to_temp_side_effect_params): Take fntype instead of a
212         typelist.  Use function_args_iterator for traversing fntype.
213         (build_v2_build_objc_method_call): Adjust call to it.
214         Call build_function_type_for_method
215
216 2011-05-05  Joseph Myers  <joseph@codesourcery.com>
217
218         * objc-act.c (objc_start_method_definition): Add parameter expr.
219         Update call to start_method_def.
220         (objc_generate_cxx_ctor_or_dtor, objc_synthesize_getter,
221         objc_synthesize_setter) Update calls to
222         objc_start_method_definition.
223         (objc_get_parm_info): Add parameter expr.  Update call to
224         get_parm_info.
225         (start_method_def): Add parameter expr.  Update call to
226         objc_get_parm_info.
227         * objc-gnu-runtime-abi-01.c (build_module_initializer_routine):
228         Update call to objc_get_parm_info.
229         * objc-runtime-shared-support.h (objc_get_parm_info): Add extra
230         parameter.
231
232 2011-04-26  Jason Merrill  <jason@redhat.com>
233
234         * objc-act.c (objc_fold_objc_type_ref): Remove.
235         * objc-act.h: Remove prototype.
236
237 2011-04-21  Nathan Froyd  <froydnj@codesourcery.com>
238
239         * objc-act.c (synth_module_prologue): Call build_function_type_list
240         instead of build_function_type.
241         * objc-next-runtime-abi-02.c (next_runtime_02_initialize):
242         Likewise.
243
244 2011-04-15  Nicola Pero  <nicola.pero@meta-innovation.com>
245
246         * objc-act.c (ivar_of_class): New.
247         (objc_is_public): Use ivar_of_class.
248
249 2011-04-15  Nicola Pero  <nicola.pero@meta-innovation.com>
250
251         * objc-act.c (objc_get_interface_ivars): Removed.
252         (objc_detect_field_duplicates): New.
253         (hash_instance_variable): New.
254         (eq_instance_variable): New.
255
256 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
257
258         * objc-act.c (objc_declare_protocols): Renamed to
259         objc_declare_protocol.  Changed first argument to be an identifier
260         instead of a tree chain of identifiers, so that callers don't have
261         to create a temporary tree chain.
262
263 2011-04-14  Nicola Pero  <nicola.pero@meta-innovation.com>
264
265         * objc-act.c (objc_declare_class): Changed to take a single
266         identifier as argument instead of a tree list.  This means callers
267         don't have to build temporary tree lists to call this function.
268         (synth_module_prologue): Updated calls to objc_declare_class.
269
270 2011-04-13  Nicola Pero  <nicola.pero@meta-innovation.com>
271
272         * objc-act.c (build_keyword_selector): Use get_identifier_with_length
273         instead of get_identifier.
274
275 2011-04-12  Nathan Froyd  <froydnj@codesourcery.com>
276
277         * objc-lang.c (objc_init_ts): Move code for this function...
278         * objc-act.c (objc_common_init_ts): ...here. Define.
279         * objc-act.h (objc_common_init_ts): Declare.
280
281 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
282
283         * objc-act.c (objc_build_message_expr): Accept two arguments
284         instead of one so that callers can simply pass the arguments
285         without having to create a temporary chain to hold them.
286
287 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
288
289         * objc-act.c (comp_proto_with_proto): Do not create and use
290         inefficient temporary argument lists.  Compare the arguments
291         directly.  (match_proto_with_proto): Removed; incorporated into
292         comp_proto_with_proto ().
293
294 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
295
296         * objc-act.c (printable_ivar_name): New.
297         (add_instance_variable): Call printable_ivar_name() when an error
298         message needs to be printed.  Do not prepare the instance variable
299         for printing unless there is an actual error.
300
301 2011-04-12  Nicola Pero  <nicola.pero@meta-innovation.com>
302
303         * objc-act.c (objc_is_class_name, objc_is_id): For efficiency,
304         avoid calling identifier_global_value() multiple times.
305
306 2011-04-12  Martin Jambor  <mjambor@suse.cz>
307
308         * objc-act.c (mark_referenced_methods): Call cgraph_get_create_node
309         instead of cgraph_node.
310
311 2011-04-06  Joseph Myers  <joseph@codesourcery.com>
312
313         * objc-act.c: Include c-target.h instead of target.h.
314         * Make-lang.in (objc/objc-act.o): Update dependencies.
315
316 2011-03-06  Joseph Myers  <joseph@codesourcery.com>
317
318         * lang-specs.h: Match -save-temps* instead of -save-temps.
319
320 2011-02-26  Nicola Pero  <nicola.pero@meta-innovation.com>
321
322         * objc-act.c (objc_v2_encode_prop_attr): Rewritten.
323
324 2011-02-23  Nicola Pero  <nicola.pero@meta-innovation.com>
325
326         * objc-act.c (build_private_template): Do not copy the
327         CLASS_HAS_EXCEPTION_ATTR from the class to the struct.
328         * objc-act.h (CLASS_HAS_EXCEPTION_ATTR): Define using
329         TYPE_LANG_SLOT_0.
330
331 2011-02-22  Nicola Pero  <nicola.pero@meta-innovation.com>
332
333         PR objc/47832
334         * objc-act.c (flexible_array_type_p): New.
335         (add_instance_variable): Produce an error if an instance variable
336         uses flexible array members.
337         (encode_array): Do not emit an error if encoding a flexible array
338         type while generating instance variables.
339
340 2011-02-21  Mike Stump  <mikestump@comcast.net>
341
342         * Make-lang.in (check_objc_parallelize): Refine for 4 processor
343         machines.
344
345 2011-02-20  Nicola Pero  <nicola.pero@meta-innovation.com>
346
347         * objc-gnu-runtime-abi-01.c (TARGET_64BIT): Removed.  Removed
348         usage of padding fields.  Do not include tm.h.
349         * objc-act.c (objc_write_global_declaration): Set input_location
350         to BUILTINS_LOCATION while generating runtime metadata.
351
352 2011-01-20  Nicola Pero  <nicola.pero@meta-innovation.com>
353
354         PR objc/47784
355         * objc-act.c (objc_maybe_build_modify_expr): If 'rhs' has side
356         effects, do not use a temporary variable.
357
358 2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>
359
360         * objc-next-runtime-abi-01.c: Updated comments.
361         * objc-next-runtime-abi-02.c: Same.
362
363 2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>
364
365         * objc-act.c (objc_init, generate_struct_by_value_array): Updated
366         comments.
367
368 2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>
369
370         * objc-act.c: Updated comments.
371         * objc-next-runtime-abi-02.c: Same.
372         * objc-runtime-shared-support.c: Same.
373         * objc-runtime-hooks.h: Same.
374         * objc-act.h: Same.
375         * objc-gnu-runtime-abi-01.c: Same.
376
377 2011-01-19  Nicola Pero  <nicola.pero@meta-innovation.com>
378
379         * objc-gnu-runtime-abi-01.c (objc_generate_v1_gnu_metadata): Do
380         not generate metadata if there is nothing to put into it.
381
382 2011-02-17  Iain Sandoe  <iains@gcc.gnu.org>
383
384         * config-lang.in (gtfiles): Updated.
385         * Make-lang.in (START_HDRS): New.
386         (OBJC_OBJS): Added new object files.
387         (objc/objc-act.o): Updated prerequisites.
388         (objc/objc-lang.o): Updated prerequisites.
389         (objc/objc-runtime-shared-support.o): New.
390         (objc/objc-gnu-runtime-abi-01.o): New.
391         (objc/objc-next-runtime-abi-01.o): New.
392         (objc/objc-next-runtime-abi-02.o): New.
393         * objc-runtime-hooks.h: New.
394         * objc-runtime-shared-support.h: New.
395         * objc-runtime-shared-support.c: New.
396         * objc-gnu-runtime-abi-01.c: New.
397         * objc-next-metadata-tags.h: New.
398         * objc-next-runtime-abi-01.c: New.
399         * objc-next-runtime-abi-02.c: New.
400         * objc-lang.c: Include c-lang.h.
401         (LANG_HOOKS_EH_PERSONALITY): Removed.
402         * objc-act.h: Moved many declarations and code from objc-act.c
403         into objc-act.h to make them available outside objc-act.c.
404         (objc_eh_runtime_type): Removed.
405         (objc_eh_personality): Removed.
406         (CLASS_HAS_EXCEPTION_ATTR): New.
407         (OCTI_SUPER_SUPERFIELD_ID): New.
408         (OCTI_V1_PROP_LIST_TEMPL): New.
409         (OCTI_V1_PROP_NAME_ATTR_CHAIN): New.
410         (super_superclassfield_id): New.
411         (objc_prop_list_ptr): New.
412         (prop_names_attr_chain): New.
413         * objc-act.c: Include new runtime headers.  Moved many #defines
414         and declarations into objc-act.h and
415         objc-runtime-shared-support.h.  Made some corresponding functions
416         non-static, and moved some others into
417         objc-runtime-shared-support.c.  Moved metadata generation code
418         into the new runtime hook files.
419         (ivar_offset_hash_list): New.
420         (objc_init): Call generate_struct_value_by_array() before doing
421         any runtime initialization.  Create the appropriate runtime hook
422         structures.
423         (init_objc): Removed.  Code moved directly into objc_init.
424         (finish_objc): Removed.  Code moved directly into
425         objc_write_global_declarations.
426         (objc_write_global_declarations): Do the warn_selector checks
427         before emitting metadata.  Use a runtime hook to emit the
428         metadata.  Do not emit the metadata or do -gen-decls processing if
429         -fsyntax-only or we are producing a PCH.
430         (build_objc_exception_stuff): Renamed to
431         build_common_objc_exception_stuff.  Remove TREE_NOTHROW flag from
432         objc_exception_throw_decl.
433         (synth_module_prologue): Call runtime initialize hook instead of
434         building runtime declarations here.  Use the
435         default_constant_string_class_name runtime hook to set the
436         constant string class name.
437         (objc_build_string_object): Call the setup_const_string_class_decl
438         runtime hook instead of setup_string_decl.  Call the
439         build_const_string_constructor runtime hook instead of building
440         the string object here.
441         (get_objc_string_decl): Added prop_names_attr case.  Removed
442         gcc_unreachable() at the end.
443         (objc_begin_catch_clause): Distinguish between @catch (...) and
444         @catch (id x).  Call the begin_catch runtime hook instead of
445         building the CATCH_EXPR here.
446         (objc_finish_catch_clause): Call the finish_catch runtime hook
447         instead of adding the catch here.
448         (objc_finish_try_stmt): Call the finish_try_stmt runtime hook
449         instead of doing it here.
450         (objc_build_throw_stmt): Bail out early for error_mark_node.  Call
451         the build_exc_ptr runtime hook instead of objc_build_exc_ptr.
452         Call the build_throw_stmt runtime hook instead of building the
453         throw call here.
454         (objc_generate_cxx_cdtors): Set has_cxx_cdtors for the GNU runtime
455         as well.
456         (get_arg_type_list): Call the get_arg_type_list_base runtime hook
457         instead of building the list of arguments here.
458         (receiver_is_class_object): Call the receiver_is_class_object
459         runtime hook instead of doing the check here.  Call the
460         tag_getclass runtime hook instead of using TAG_GETCLASS.
461         (objc_finish_message_expr): Call the build_objc_method_call
462         runtime hook.
463         (objc_build_protocol_expr): Call the get_protocol_reference
464         runtime hook.
465         (objc_build_selector_expr): Call the build_selector_reference
466         runtime hook.
467         (build_ivar_reference): Call the build_ivar_reference runtime
468         hook.
469         (hash_init): Set up ivar_offset_hash_list.
470         (start_class): Recognize the objc_exception attribute and store
471         it.
472         (continue_class): Use the class_decl and metaclass_decl runtime
473         hooks.
474         (build_objc_property_accessor_helpers): Renamed to
475         build_common_objc_property_accessor_helpers.  Do not build
476         objc_copyStruct_decl, objc_getPropertyStruct_decl and
477         objc_setPropertyStruct_decl.
478         (objc_synthesize_getter): Check what struct setter/getter helper
479         is available instead of checking the type of runtime.
480         (get_super_receiver): Use the super_superclassfield_ident runtime
481         hook.  Added assert.  Use the get_class_super_ref and
482         get_category_super_ref runtime hooks.
483         (objc_v2_encode_prop_attr): New.
484
485 2011-01-17  Nicola Pero  <nicola.pero@meta-innovation.com>
486
487         PR objc/47314
488         * objc-act.c (finish_objc): When calling check_duplicates to check
489         duplicated instance methods, set 'is_class' to 0, not 1.
490
491 2011-01-14  Ben Elliston  <bje@au.ibm.com>
492
493         PR 19162
494         * objc-act.c (generate_struct_by_value_array): Do not output a
495         definition for struct_forward_array.
496
497 2011-01-08  Iain Sandoe  <iains@gcc.gnu.org>
498
499         * objc-act.c (objc_finish_foreach_loop): Mark collection expression
500         as read.
501
502 2011-01-02  H.J. Lu  <hongjiu.lu@intel.com>
503
504         * objc-act.c (check_that_protocol_is_defined): Fix a typo.
505
506 2011-01-02  Nicola Pero  <nicola.pero@meta-innovation.com>
507
508         * objc-act.c (check_that_protocol_is_defined): New.
509         (lookup_protocol): Call check_that_protocol_is_defined.
510
511 2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>
512
513         * objc-act.c (objc_types_are_equivalent): Fixed comparing protocol
514         lists.  Check them two-ways to fix comparisons when one protocol
515         implements the other one, or when one list contains duplicated
516         protocols.
517
518 2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>
519
520         * objc-act.c (objc_add_method): When emitting an error because a
521         method with the same name but conflicting types is found in the
522         same class or category interface, print a note with the location
523         of the original method.  Also, improved the error message to
524         clearly state that the conflict is due to conflicting types, and
525         produce it for protocols as well.  Emit an error if two identical
526         methods are declared in a protocol, but one is @required and the
527         other one is @optional.
528
529 2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>
530
531         * objc-act.c (start_class): Warn when a class attribute is
532         ignored.
533         (objc_declare_protocols): Warn when a protocol attribute in a
534         protocol forward-declaration is ignored.
535         (start_protocol): Warn when a protocol attribute is ignored.
536
537 2010-12-30  Nicola Pero  <nicola.pero@meta-innovation.com>
538
539         * objc-act.c (objc_set_method_opt): Tidy up error messages.  In
540         particular, explicitly mention whether the error is due to the
541         @optional or @required keyword instead of mentioning
542         "@optional/@required".
543
544 2010-12-29  Nicola Pero  <nicola.pero@meta-innovation.com>
545
546         PR objc/47118
547         * objc-act.c (objc_build_synchronized): Check the argument of
548         @synchronized and emit an appropriate error if it is not a valid
549         Objective-C object.  Deal gracefully with that case.  Updated
550         comments and variable names.
551
552 2010-12-29  Nicola Pero  <nicola.pero@meta-innovation.com>
553
554         PR objc/47075
555         * objc-act.h (PROPERTY_REF_DEPRECATED_GETTER): New.
556         * objc-tree.def (PROPERTY_REF): Increased the number of operands
557         from 3 to 4.
558         * objc-act.c (objc_finish_message_expr): Added optional argument
559         allowing to return the deprecated method prototype for deprecated
560         methods, instead of immediately emitting the deprecation warning.
561         (objc_maybe_build_component_ref): Do not warn for a deprecated
562         property.  When building the getter call, get the deprecated
563         method prototype from objc_finish_message_expr() and put it into
564         the PROPERTY_REF.
565         (objc_build_class_component_ref): Same change.
566         (finish_class): Mark the getter and setter as deprecated if they
567         are generated from a deprecated property.
568         (objc_gimplify_property_ref): If the getter is deprecated, emit a
569         deprecation warning.
570         (objc_build_setter_call, objc_build_message_expr,
571         objc_finish_foreach_loop): Updated call to
572         objc_finish_message_expr.
573
574 2010-12-28  Nicola Pero  <nicola.pero@meta-innovation.com>
575
576         PR objc/47076
577         * objc-act.c (lookup_protocol): Added 'definition_required'
578         argument.  If 'definition_required', and the protocol is not
579         defined, emit a warning.
580         (objc_declare_protocols): Updated call to lookup_protocol.
581         (start_protocol): Same change.
582         (check_protocol_recursively): Same change.
583         (objc_build_protocol_expr): Same change.
584         (lookup_and_install_protocols): Added definition_required argument.
585         Pass it to lookup_protocol.
586         (objc_get_protocol_qualified_type): Updated call to
587         lookup_and_install_protocols.
588         (start_class): Updated calls to lookup_and_install_protocols; pass
589         true to 'definition_required' to get the warnings.
590         (start_protocol): Updated calls to lookup_and_install_protocols.
591
592 2010-12-28  Nicola Pero  <nicola.pero@meta-innovation.com>
593
594         * objc-act.c (objc_start_category_interface): Produce an error if
595         a class extension is found after the class @implementation.
596
597 2010-12-28  Nicola Pero  <nicola.pero@meta-innovation.com>
598
599         PR objc/47073
600         * objc-act.c (encode_method_prototype): Fixed both location and
601         format string of error "type %qT does not have a known size".
602
603 2010-12-26  Nicola Pero  <nicola.pero@meta-innovation.com>
604
605         * config-lang.in (gtfiles): Added c-family/c-cppbuiltin.c.
606
607 2010-12-22  Nathan Froyd  <froydnj@codesourcery.com>
608
609         * objc-act.c (next_sjlj_build_enter_and_setjmp): Use prototype_p.
610
611 2010-12-18  Nicola Pero  <nicola.pero@meta-innovation.com>
612
613         * objc-act.c (objc_init): Call using_eh_for_cleanups.
614         (objc_init_exceptions): Renamed to objc_maybe_warn_exceptions.  Do
615         not call using_eh_for_cleanups.
616         (objc_begin_try_stmt): Do not call objc_init_exceptions.
617         (objc_build_throw_stmt): Updated call to
618         objc_maybe_warn_exceptions.
619
620 2010-12-18  Iain Sandoe  <iains@gcc.gnu.org>
621
622         * objc/objc-act.c (objc_eh_personality): Select personality name on
623         runtime.
624         (objc_init_exceptions): New.
625         (objc_begin_try_stmt): Use objc_init_exceptions.
626         (objc_build_throw_stmt): Likewise.
627
628 2010-12-10  Nicola Pero  <nicola.pero@meta-innovation.com>
629
630         * objc-act.c (objc_in_class_extension): New.
631         (objc_start_category_interface): If -fobjc-std=objc1
632         was specified, produce an error if a class extension is used.
633         (objc_finish_interface): Reset objc_in_class_extension to false.
634         (objc_add_property_declaration): Allow a class extension to extend
635         readonly properties in the main @interface to be readwrite.
636         (start_class): Added code to deal with class extensions.  In that
637         case, return the existing interface after adding any additional
638         protocols to it and setting objc_in_class_extension to true.
639         (continue_class): If in a class extension, do not generate the
640         instance variable template.
641
642 2010-12-08  Nicola Pero  <nicola.pero@meta-innovation.com>
643
644         * objc-act.c (objc_build_throw_stmt): Check that the argument of
645         @throw is an object and emit an error if not.
646
647 2010-12-08  Nicola Pero  <nicola.pero@meta-innovation.com>
648
649         * objc-act.c (objc_finish_foreach_loop): Use error_at() instead of
650         error() when printing an error about the iterating variable or
651         collection not being an object.
652
653 2010-12-06  Nicola Pero  <nicola.pero@meta-innovation.com>
654
655         * objc-act.c (objc_finish_foreach_loop): Mark the
656         object_expression as used.
657
658 2010-12-06  Nicola Pero  <nicola.pero@meta-innovation.com>
659
660         * objc-act.c: Include c-family/c-objc.h.
661         * objc-lang.c: Same change.
662         * Make-lang.in (objc/objc-act.o): Depend on
663         c-family/c-objc.h.
664         (objc/objc-lang.o): Same change.
665         * config-lang.in (gtfiles): Added c-family/c-objc.h.
666
667 2010-12-02  Joseph Myers  <joseph@codesourcery.com>
668
669         * lang-specs.h: Don't handle -ftraditional.
670
671 2010-12-02  Nicola Pero  <nicola.pero@meta-innovation.com>
672
673         * objc-act.c (objc_build_throw_stmt): Return error_mark_node and
674         not NULL_TREE when a @throw is used outside of a @catch block.
675
676 2010-11-30  Nicola Pero  <nicola.pero@meta-innovation.com>
677
678         * objc-act.c (objc_build_volatilized_type): Removed.
679         (objc_non_volatilized_type): Removed.
680         (objc_type_quals_match): Removed.
681         (local_variables_to_volatilize): New.
682         (objc_volatilize_decl): Add the decl to volatilize to
683         local_variables_to_volatilize, but don't volatilize it yet.
684         (objc_finish_function): New.
685         * objc-act.h (local_variables_to_volatilize): New.
686
687 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
688             Mike Stump  <mikestump@comcast.net>
689
690         Allow 'make check-objc -j2'
691         * Make-lang.in (lang_checks_parallelized): New.
692         (check_objc_parallelize): New.
693
694 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
695
696         * objc-act.c (start_class): When a class is reimplemented,
697         generate an error and avoid adding the class to the list of
698         implemented classes again, but do not return error_mark_node.
699
700 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
701
702         * objc-act.c (objc_maybe_build_component_ref): Removed TODO.
703
704 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
705
706         * objc-act.c (objc_eh_runtime_type): Avoid ICE if error_mark_node
707         is passed as argument.
708         (objc_begin_catch_clause): Added code to deal with an
709         error_mark_node or NULL_TREE argument.  Improved checks for
710         invalid arguments.  Added code to traverse typedefs.
711
712 2010-11-29  Nicola Pero  <nicola.pero@meta-innovation.com>
713
714         * objc-act.c (objc_demangle): Return immediately if the string is
715         too short.  Detect names that do not need demangling, and return
716         them unchanged.
717
718 2010-11-27  Nicola Pero  <nicola.pero@meta-innovation.com>
719
720         Implemented optional properties.
721         * objc-act.h (PROPERTY_OPTIONAL): New.
722         * objc-act.c (objc_add_property_declaration): Set
723         PROPERTY_OPTIONAL if appropriate.
724         (finish_class): When generating definitions of setter and getter
725         methods associated with a property for a protocol, mark them as
726         optional if the property is optional.
727         (maybe_make_artificial_property_decl): Added 'getter_name'
728         argument.  Set PROPERTY_OPTIONAL.
729         (objc_maybe_build_component_ref): Updated calls to
730         maybe_make_artificial_property_decl.  Added code for optional,
731         readonly properties.
732         (objc_build_class_component_ref): Updated call to
733         maybe_make_artificial_property_decl.
734
735 2010-11-27  Nicola Pero  <nicola.pero@meta-innovation.com>
736
737         * objc-act.c (objc_build_struct): Fixed loops that save and
738         restore TYPE_OBJC_INFO to iterate over all variants of the type; a
739         special case for the current type is then no longer required.
740         Duplicate TYPE_LANG_SPECIFIC for each type before restoring
741         TYPE_OBJC_INFO.
742         (objc_get_protocol_qualified_type): Updated comments.
743
744 2010-11-25  Nicola Pero  <nicola.pero@meta-innovation.com>
745
746         * objc-act.c (objc_build_struct): Install TYPE_OBJC_INTERFACE
747         after finish_struct, not before, otherwise it may be wiped out by
748         it.  This fixes spurious warnings when a class has more than 15
749         instance variables.
750
751 2010-11-23  Nicola Pero  <nicola.pero@meta-innovation.com>
752
753         PR objc/24358
754         * lang-specs.h: Added objective-c-cpp-output.  Mapped .mi to
755         objective-c-cpp-output instead of objc-cpp-output.  Print a
756         deprecation note every time objc-cpp-output is requested.
757
758 2010-11-22  Joseph Myers  <joseph@codesourcery.com>
759
760         * objc-act.c (write_symbols): Don't declare here.
761
762 2010-11-22  Nicola Pero  <nicola.pero@meta-innovation.com>
763
764         PR objc/41108
765         * objc-act.c (objc_generate_write_barrier): Added assert to make sure
766         this function is only called with the next runtime.
767
768 2010-11-20  Jakub Jelinek  <jakub@redhat.com>
769
770         PR c/46547
771         * objc-act.c (in_late_binary_op): Remove.
772
773 2010-11-19  Nicola Pero  <nicola.pero@meta-innovation.com>
774
775         * objc-act.c (objc_start_class_interface): Do not warn that class
776         attributes are unimplemented.  Pass the attributes to start_class.
777         (objc_start_category_interface): Updated call to start_class.
778         (objc_start_class_implementation): Same change.
779         (objc_start_category_implementation): Same change.
780         (objc_build_class_component_ref): Warn if the class is deprecated.
781         (build_private_template): Mark the template as deprecated if the
782         class is deprecated.
783         (start_class): Added 'attributes' argument.  Emit a warning if
784         using a deprecated class as superclass of a class, or original
785         class of a category.  Recognize the 'deprecated' attribute when
786         starting and interface, and mark the interface with
787         TREE_DEPRECATED if present.  Store attributes in the interface.
788
789 2010-11-19  Nicola Pero  <nicola.pero@meta-innovation.com>
790
791         * objc-act.c (lookup_protocol): Added 'warn_if_deprecated'
792         argument.  If it is 'true' and the protocol is deprecated, emit a
793         deprecation warning.
794         (objc_start_protocol): Do not warn that protocol attributes are
795         unimplemented.  Pass the attributes to start_protocol.
796         (start_protocol): Added attributes argument.  Recognize the
797         'deprecated' attribute and mark the protocols with TREE_DEPRECATED
798         if present.  Store attributes in the protocol.
799         (objc_declare_protocols): Added 'attributes' argument.  Recognize
800         the 'deprecated' attribute and mark the protocols with
801         TREE_DEPRECATED if present.  Store attributes in the protocol.
802         Updated call to lookup_protocol.
803         (objc_build_protocol_expr): Updated call to lookup_protocol.
804         (check_protocol_recursively): Same change.
805         (lookup_and_install_protocols): Same change.
806         * objc-act.h: Updated comments.
807
808 2010-11-17  Nicola Pero  <nicola.pero@meta-innovation.com>
809
810         * objc-act.c (lookup_method_in_protocol_list): Search methods in
811         PROTOCOL_OPTIONAL_CLS_METHODS / PROTOCOL_OPTIONAL_NST_METHODS if
812         they are not found in PROTOCOL_CLS_METHODS / PROTOCOL_NST_METHODS.
813
814 2010-11-15  Nicola Pero  <nicola.pero@meta-innovation.com>
815
816         * objc-act.c (objc_build_setter_call): New.
817         (objc_maybe_build_modify_expr): Rewritten to build a compound
818         statement.
819         (objc_build_incr_expr_for_property_ref): Updated calls to
820         objc_maybe_build_modify_expr to call objc_build_setter_call
821         instead.  Use build_modify_expr () instead of build2 (MODIFY_EXPR,
822         ...).  Use convert () instead of build1 (NOP_EXPR, ...).  Use
823         TREE_NO_WARNING on the final compound statement to silence C++
824         warnings.
825
826 2010-11-15  Nicola Pero  <nicola.pero@meta-innovation.com>
827
828         * objc-act.c (objc_build_incr_expr_for_property_ref): New.
829         (objc_create_temporary_var): Moved it towards the beginning of the
830         file so that objc_build_incr_expr_for_property_ref can use it.
831
832 2010-11-14  Nicola Pero  <nicola.pero@meta-innovation.com>
833
834         * objc-act.c (objc_add_property_declaration): Check that the decl
835         we received from the parser is a FIELD_DECL; reject array and
836         bitfield properties.  Convert the warning when a property is
837         readonly and a setter is specified into an error.  Convert errors
838         when a property declaration does not match a property declaration
839         in a superclass into warnings.
840         (objc_add_synthesize_declaration_for_property): Use
841         DECL_BIT_FIELD_TYPE to determine the type of an instance variable
842         if it is a bitfield.  Throw an error if we are asked to synthesize
843         setters/getters for a bitfield instance variable but the property
844         is not appropriate - it must be assign and nonatomic.  If the
845         property is readonly, allow the instance variable type to be a
846         specialization of the property type.
847         (objc_type_valid_for_messaging): Fixed returning 'false' for a
848         Class qualified with a protocol when the 'accept_classes' argument
849         is 'false'.
850
851 2010-11-13  Nicola Pero  <nicola.pero@meta-innovation.com>
852
853         * objc-act.c (objc_get_protocol_qualified_type): detect cases
854         where we are asked to attach a protocol to something which is not
855         an Objective-C object type, and produce an error.
856
857 2010-11-11  Nicola Pero  <nicola.pero@meta-innovation.com>
858
859         * objc-act.c (objc_add_property_declaration): Check that the type
860         of a property and of an inherited property match.
861         (objc_maybe_build_component_ref): Tidied up indentation and
862         comments.
863         (objc_common_type): Added new type of check (-5).
864         (objc_add_synthesize_declaration_for_property): Check that the
865         property to synthesize and the instance variable to use have the
866         same type.
867
868 2010-11-10  Joseph Myers  <joseph@codesourcery.com>
869
870         * objc-act.c (objc_init): Use %' in diagnostic.
871         (objc_set_method_opt): Remove trailing '.' from diagnostic.
872
873 2010-11-10  Joseph Myers  <joseph@codesourcery.com>
874
875         * objc-act.c (dump_base_name): Don't declare here.
876
877 2010-11-08  Nicola Pero  <nicola.pero@meta-innovation.com>
878
879         * objc-act.c (objc_add_dynamic_declaration_for_property): Do not
880         search for the @property declation only in the current context,
881         but also in inherited properties.  Do not mark the original
882         PROPERTY_DECL in the @interface or @protocol with
883         PROPERTY_DYNAMIC.
884         (check_methods): To check if a method is associated with a
885         @dynamic property, search for the property in IMPL_PROPERTY_DECL.
886         (check_accessible_methods): Same change.
887         * objc-act.h: Updated comment.
888
889 2010-11-08  Nicola Pero  <nicola.pero@meta-innovation.com>
890
891         * objc-act.c (objc_add_synthesize_declaration_for_property):
892         Iterate over IMPL_PROPERTY_DECL, not CLASS_PROPERTY_DECL, when
893         checking for an existing @synthesize or @dynamic declaration.
894         Search for an inherited @property declaration if none is found in
895         the local interface.  If the required instance variable does not
896         exist, return instead of trying to continue to prevent a compiler
897         crash later.  Check that the instance variable is not already
898         being used by another @synthesize.
899         (objc_add_dynamic_declaration_for_property): Iterate over
900         IMPL_PROPERTY_DECL, not CLASS_PROPERTY_DECL, when checking for an
901         existing @synthesize or @dynamic declaration.
902         (objc_synthesize_getter): Search for the getter declaration in
903         protocols and superclasses as well.
904         (objc_synthesize_setter): Search for the setter declaration in
905         protocols and superclasses as well.
906
907 2010-11-08  Nicola Pero  <nicola.pero@meta-innovation.com>
908
909         * objc-act.c (lookup_property): When checking categories, also
910         check the protocols attached to each.
911         (objc_add_property_declaration): Determine the
912         PROPERTY_SETTER_NAME and PROPERTY_GETTER_NAME here.  Tidied up
913         error message.  Search for an existing property declaration with
914         the same name which would be inherited from the class hiearchy,
915         and produce an error if it has incompatible attributes.
916         (check_methods): Changed second parameter.  If the method is a
917         getter or setter for a property, do not warn if it is inherited as
918         opposed to implemented directly in the class.
919         (check_protocol): Updated calls to check_methods.
920         (finish_class): Do not determine the PROPERTY_SETTER_NAME and
921         PROPERTY_GETTER_NAME here; this is now done earlier, in
922         objc_add_property_declaration.
923         * objc-act.h (CLASS_NAME, CLASS_SUPER_NAME): Added comments.
924
925 2010-11-06  Nicola Pero  <nicola.pero@meta-innovation.com>
926
927         Fixed using the Objective-C 2.0 dot-syntax with self and super.
928         * objc-act.c (OBJC_LOOKUP_NO_INSTANCE_METHODS_OF_ROOT_CLASS): New.
929         (maybe_make_artificial_property_decl): Added 'implementation'
930         argument.  Use OBJC_LOOKUP_NO_INSTANCE_METHODS_OF_ROOT_CLASS when
931         looking up getters or setters for a class.  If an implementation
932         is specified, search it as well for a getter or setter.
933         (objc_maybe_build_component_ref): Updated calls to
934         maybe_make_artificial_property_decl; added code to deal with
935         'self' and 'super' and with methods declared locally in the
936         implementation.  Store the getter call expression in the
937         PROPERTY_REF instead of throwing it away.
938         (objc_build_class_component_ref): Updated calls to
939         maybe_make_artificial_property_decl, and store the getter call
940         expression in PROPERTY_REF instead of throwing it away.
941         (lookup_method_static): Implemented
942         OBJC_LOOKUP_NO_INSTANCE_METHODS_OF_ROOT_CLASS option.
943         (objc_gimplify_property_ref): Do not build the getter method call
944         here; instead use the one stored in the PROPERTY_REF.  If it's not
945         there, produce helpful error messages.
946         * objc-tree.def (PROPERTY_REF): Increased the number of operands
947         from 2 to 3.  Updated comments.
948         * objc-act.h (PROPERTY_REF_GETTER_CALL): New.
949
950 2010-11-06  Iain Sandoe  <iains@gcc.gnu.org>
951
952         PR target/44981
953         * objc-act.c (objc_build_string_object): Amend for renamed hook.
954         (objc_string_ref_type_p): New.
955         (objc_check_format_arg): New.
956
957 2010-11-04  Nicola Pero  <nicola.pero@meta-innovation.com>
958
959         Fixed using the Objective-C 2.0 dot-syntax with class names.
960         * objc-act.c (objc_build_class_component_ref): New.
961
962 2010-11-03  Nicola Pero  <nicola.pero@meta-innovation.com>
963
964         * objc-act.c (objc_add_dynamic_declaration): Allow @dynamic in a
965         category.
966         (objc_type_valid_for_messaging): Added 'accept_classes' argument;
967         if set to 'true', return 'true' for Class objects.  Do not remove
968         more than on pointer indirection.
969         (objc_add_property_declaration): Only warn about 'assign'
970         semantics for Objective-C objects if warn_property_assign_default;
971         and do not warn if the property is readonly or if the type is a Class.
972         (objc_finish_foreach_loop): Updated calls to
973         objc_type_valid_for_messaging.
974
975 2010-11-03  Nicola Pero  <nicola.pero@meta-innovation.com>
976
977         Implemented -fobjc-std=objc1 flag.
978         * objc-act.c (objc_start_class_interface): If attributes are
979         specified when flag_objc1_only is set, print an error.
980         (objc_start_category_interface): Same change.
981         (objc_start_protocol): Same change.
982         (objc_add_method_declaration): Same change.
983         (objc_start_method_definition): Same change.
984         (objc_build_keyword_decl): Same change.
985         (objc_set_visibility): If OBJC_IVAR_VIS_PACKAGE is used when
986         flag_objc1_set is set, print an error.
987         (objc_set_method_opt): If flag_objc1_only is set, print an error.
988         (objc_add_property_declaration): Same change.
989         (objc_add_synthesize_declaration): Same change.
990         (objc_add_dynamic_declaration): Same change.
991         (objc_finish_foreach_loop): Same change.
992         (objc_maybe_build_component_ref): If flag_objc1_only is set,
993         return immediately.
994
995 2010-11-03  Nicola Pero  <nicola.pero@meta-innovation.com>
996
997         * objc-act.c (maybe_make_artificial_property_decl): New.
998         (objc_maybe_build_component_ref): Call
999         maybe_make_artificial_property_decl if a property can not be
1000         found.  Do not call objc_finish_message_expr if
1001         PROPERTY_HAS_NO_GETTER.
1002         * objc-act.h Updated comments.
1003         (PROPERTY_HAS_NO_GETTER): New.
1004         (PROPERTY_HAS_NO_SETTER): New.
1005         * objc-tree.def: Updated comment.
1006
1007 2010-11-01  Nicola Pero  <nicola.pero@meta-innovation.com>
1008
1009         Implemented format and noreturn attributes for Objective-C methods.
1010         * objc-act.c (objc_start_method_definition): If method attributes
1011         are specified emit a warning and ignore them.
1012         (build_objc_method_call): Moved deprecation warnings from here ...
1013         (objc_finish_message_expr): to here.  Do not emit deprecation
1014         warnings if the receiver is of type 'id'.
1015         (really_start_method): Install 'deprecation' and 'noreturn'
1016         attributes.
1017         (objc_decl_method_attributes): Carefully filter out the list of
1018         attributes, allowing only "noreturn", "format", "sentinel" and
1019         "deprecated".  In the case of "format", adjust the arguments.
1020         Always process the attributes in the same way no matter if
1021         "sentinel" is in the list or not.
1022
1023 2010-11-01  Nicola Pero  <nicola.pero@meta-innovation.com>
1024
1025         * objc-act.c (objc_maybe_build_component_ref): Warn about using
1026         deprecated properties.
1027         (objc_maybe_printable_name): Support PROPERTY_DECL.
1028
1029 2010-11-01  Nicola Pero  <nicola.pero@meta-innovation.com>
1030
1031         Implemented Objective-C 2.0 property accessors.
1032         * objc-act.h (enum objc_tree_index): Added OCTI_GET_PROPERTY_DECL,
1033         OCTI_SET_PROPERTY_DECL, OCTI_COPY_STRUCT_DECL,
1034         OCTI_GET_PROPERTY_STRUCT_DECL and OCTI_SET_PROPERTY_STRUCT_DECL.
1035         (objc_getProperty_decl): New.
1036         (objc_setProperty_decl): New.
1037         (objc_copyStruct_decl): New.
1038         (objc_getPropertyStruct_decl): New.
1039         (objc_setPropertyStruct_decl): New.
1040         * objc-act.c (build_objc_property_accessor_helpers): New.
1041         (synth_module_prologue): Call
1042         build_objc_property_accessor_helpers.
1043         (lookup_ivar): New.
1044         (objc_synthesize_getter): Implemented synthesizing getters that
1045         work with properties that are not nonatomic, assign properties.
1046         (objc_synthesize_setter): Implemented synthesizing setters that
1047         work with properties that are not nonatomic, assign properties.
1048
1049 2010-10-30  Nicola Pero  <nicola.pero@meta-innovation.com>
1050
1051         Implemented Objective-C 2.0 @property, @synthesize and @dynamic.
1052         * objc-tree.def (PROPERTY_REF): New.
1053         * objc-act.h: Added comments for all the PROPERTY_ macros.
1054         (PROPERTY_NAME): Use DECL_NAME.
1055         (PROPERTY_COPIES): Removed.
1056         (PROPERTY_READONLY): Use DECL_LANG_FLAG_0 for it.
1057         (PROPERTY_NONATOMIC): New.
1058         (objc_property_assign_semantics): Make it a typedef.
1059         (PROPERTY_ASSIGN_SEMANTICS): New.
1060         (PROPERTY_DYNAMIC): New.
1061         (PROPERTY_REF_OBJECT): New.
1062         (PROPERTY_REF_PROPERTY_DECL): New.
1063         * objc-act.c (CALL_EXPR_OBJC_PROPERTY_GETTER): Removed.
1064         (in_objc_property_setter_name_context): Removed.
1065         (objc_add_property_declaration): Removed copies and ivar arguments
1066         and code supporting them.  Fixed recovering when readonly and
1067         setter attributes are specified.  Removed support for @property in
1068         @implementation context.  Updated error message.  Double-check
1069         that a property does not have a DECL_INITIAL.  Validate the
1070         property assign semantics and emit appropriate errors and
1071         warnings.  Check for duplicate property declarations.  Set
1072         DECL_SOURCE_LOCATION, TREE_DEPRECATED, PROPERTY_NONATOMIC,
1073         PROPERTY_ASSIGN_SEMANTICS and PROPERTY_DYNAMIC of the new
1074         PROPERTY_DECL.  Do not set PROPERTY_COPIES.  Set
1075         PROPERTY_IVAR_NAME to NULL_TREE.
1076         (objc_build_getter_call): Renamed to
1077         objc_maybe_build_component_ref.  If the property is not found in
1078         the interface, search in the protocol list.  Do not generate the
1079         getter call; instead, build and return a PROPERTY_REF.
1080         (objc_is_property_ref): New.
1081         (objc_setter_func_call): Removed.
1082         (get_selector_from_reference): Removed.
1083         (is_property): Removed.
1084         (objc_build_setter_call): Renamed to objc_maybe_build_modify_expr.
1085         Updated to work on a PROPERTY_REF and use the PROPERTY_DECL from
1086         the PROPERTY_REF.  Generate an error if the property is read-only.
1087         (build_property_reference): Removed.
1088         (objc_finish_message_expr): Removed check to produce "readonly
1089         property can not be set" error when
1090         in_objc_property_setter_name_context.  We now generate the error
1091         earlier, in objc_maybe_build_modify_expr, which will only generate
1092         the setter call if the property is readwrite.
1093         (check_methods): Recognize dynamic properties.
1094         (check_methods_accessible): Same change.
1095         (objc_build_property_ivar_name): Removed.
1096         (objc_build_property_setter_name): Dropped bool argument.  Always
1097         add the ':' at the end.
1098         (objc_gen_one_property_datum): Removed.
1099         (objc_process_getter_setter): Removed.
1100         (objc_synthesize_getter): Mark 'klass' argument as unused.  Use
1101         PROPERTY_GETTER_NAME instead of PROPERTY_NAME.  Set the
1102         DECL_SOURCE_LOCATION of the new method to be the same as the one
1103         for the @synthesize.  Always use PROPERTY_IVAR_NAME as it is
1104         instead of trying to guess what it should be.  Removed use of
1105         CLASS_IVARS.  Use the location of @synthesize for c_finish_return
1106         and c_end_compound_statement.
1107         (objc_synthesize_setter): Mark 'klass' argument as unused.  Use
1108         PROPERTY_SETTER_NAME instead of trying to guess what it should be.
1109         Set the DECL_SOURCE_LOCATION of the new method to be the same as
1110         the one for the @synthesize.  Always use PROPERTY_IVAR_NAME as it
1111         is instead of trying to guess what it should be.  Removed use of
1112         CLASS_IVARS.  Use the location of @synthesize for c_finish_return
1113         and c_end_compound_statement.  Emit an error and keep going,
1114         instead of aborting, if the setter prototype does not have the
1115         expected argument.
1116         (objc_add_synthesize_declaration_for_property): New.
1117         (objc_add_synthesize_declaration): Removed ATTRIBUTE_UNUSED from
1118         all arguments.  Improved error message.  Filled in the rest of the
1119         function, which used to be a placeholder, with an actual
1120         implementation.
1121         (objc_add_dynamic_declaration_for_property): New.
1122         (objc_add_dynamic_declaration): Removed ATTRIBUTE_UNUSED from all
1123         arguments.  Improved error message.  Filled in the rest of the
1124         function, which used to be a placeholder, with an actual
1125         implementation.
1126         (objc_gen_property_data): Rewritten.
1127         (finish_class): Added explicit switch cases for
1128         CLASS_INTERFACE_TYPE, CATEGORY_INTERFACE_TYPE and
1129         PROTOCOL_INTERFACE_TYPE.  Added a default switch case which is
1130         gcc_unreachable.  Rewritten the processing of properties, in
1131         particular to not synthesize prototypes for getters and setters if
1132         they already exist and to install the getter and setter names into
1133         PROPERTY_GETTER_NAME and PROPERTY_SETTER_NAME.  Do not generate
1134         warnings about setter, getter and ivar property attributes.
1135         (objc_lookup_ivar): Removed support for properties.
1136         (objc_gimplify_property_ref): New.
1137         (objc_gimplify_expr): Use a switch.  In case of a PROPERTY_REF, call
1138         objc_gimplify_property_ref.
1139
1140 2010-10-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1141
1142         * objc-act.c (objc_add_property_declaration): Added arguments to
1143         pass the various property attributes that were parsed with the
1144         property declaration.  Process arguments to determine the final
1145         property attributes and produce error messages as appropriate.
1146         Added temporary code to keep the compiler silent about variables
1147         set but not used - for new attributes that are only checked but
1148         have no effect yet.
1149         (property_readonly): Removed.
1150         (property_setter): Removed.
1151         (property_getter): Removed.
1152         (property_ivar): Removed.
1153         (property_copies): Removed.
1154         (objc_set_property_attr): Removed.
1155         * objc-act.h (enum property_assign_semantics): New.
1156
1157 2010-10-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1158
1159         * objc-act.c (objc_add_property_variable): Renamed to
1160         objc_add_property_declaration.  Added location argument.  Updated
1161         warnings and errors to use it.  Use error, not fatal_error, if a
1162         property declaration is found outside an interface or
1163         implementation context.
1164
1165 2010-10-24  Nicola Pero  <nicola.pero@meta-innovation.com>
1166
1167         * objc-act.c (objc_build_keyword_decl): Updated comments.  Do not
1168         emit a warning that method parameter attributes are unimplemented.
1169         Instead, store them into DECL_ATTRIBUTES of the KEYWORD_DECL.
1170         (start_method_def): Copy attributes from each KEYWORD_DECL into
1171         the corresponding PARM_DECL.
1172         (objc_warn_deprecated_use): Removed.
1173         (build_objc_method_call): Call warn_deprecated_use, not
1174         objc_warn_deprecated_use.
1175         (objc_maybe_printable_name): Do not try to get the identifier name
1176         of DECLs that we don't recognize.  Immediately return NULL for them.
1177         (objc_printable_name): Removed C++-specific case, which is no
1178         longer used.  Updated comments.
1179
1180 2010-10-23  Nicola Pero  <nicola.pero@meta-innovation.com>
1181
1182         * objc-act.c (OBJC_GEN_METHOD_LABEL): Updated comments.
1183         (objc_demangle): Return NULL if demangling can not be done because
1184         the string to demangle is not an Objective-C mangled method name.
1185         Be smarter in demangling method names so that at least for methods
1186         with no arguments we are able to almost always demangle '_' correctly.
1187         Updated comments.
1188         (objc_maybe_printable_name): New.
1189         (objc_printable_name): Call objc_maybe_printable_name.  If it
1190         returns NULL, call cxx_printable_name in Objective-C++.
1191
1192 2010-10-21  Iain Sandoe  <iains@gcc.gnu.org>
1193
1194         Based on the CFString implementation in FSF apple/trunk branch.
1195
1196         * objc/objc-act.c (objc_build_string_object): Handle CFStrings.
1197
1198 2010-10-21  Nicola Pero  <nicola.pero@meta-innovation.com>
1199
1200         * objc-act.c (get_objc_string_decl): Use a switch instead of a
1201         chain of ifs.  Use gcc_unreachable instead of abort.
1202         (add_objc_string): Same change.
1203         (generate_protocol_list): Same change - twice.
1204         (synth_id_with_class_suffix): Same change.
1205         (build_keyword_selector): Same change - twice.
1206         (objc_build_message_expr): Same change.
1207         (objc_build_selector_expr): Same change.
1208         (check_methods): Same change - and added missing gcc_unreachable
1209         for default case.
1210         (check_methods_accessible): Same change - twice, and added missing
1211         gcc_unreachable for default case in one of them.
1212         (start_class): Same change - and added missing gcc_unreachable for
1213         default case.
1214         (continue_class): Same change.
1215         (objc_gen_property_data): Same change.
1216         (finish_class): Same change.
1217         (encode_type_qualifiers): Added missing gcc_unreachable.
1218         (encode_type): Small code tidy up to reduce duplicated code.  Use
1219         gcc_unreachable instead of abort - twice.
1220         (encode_gnu_bitfield): Use a switch instead of a chain of ifs -
1221         twice.  Added missing gcc_unreachable for default case - twice.
1222         (dump_interface): Use a switch instead of a chain of ifs.
1223         (handle_impent): Same change.
1224
1225 2010-10-20  Nicola Pero  <nicola.pero@meta-innovation.com>
1226
1227         * objc-act.h (objc_inherit_code): Removed.
1228         * objc-act.c (objc_inherit_code): Removed.
1229         (objc_set_method_type): Removed.
1230         (objc_build_method_signature): Added is_class_method argument.
1231         Use it instead of the global objc_inherit_code variable.
1232         (objc_add_method_declaration): Same change.
1233         (objc_start_method_definition): Same change.
1234         (objc_generate_cxx_ctor_or_dtor): Updated call to
1235         objc_start_method_definition.  Do not call objc_set_method_type.
1236         (adjust_type_for_id_default): Mark as inline.
1237         (objc_synthesize_getter): Updated call to
1238         objc_start_method_definition.  Do not set objc_inherit_code.
1239         (objc_synthesize_setter): Updated call to
1240         objc_start_method_definition.  Do not set objc_inherit_code.
1241
1242 2010-10-20  Nicola Pero  <nicola.pero@meta-innovation.com>
1243
1244         Merge from 'apple/trunk' branch on FSF servers.  Obvious updates
1245         to gcc_alloc_xxx calls in hash_init and hash_class_name_enter to
1246         get it to compile in the current trunk.
1247
1248         2006-01-27 Fariborz Jahanian <fjahanian@apple.com>
1249
1250         Radar 4345837
1251         * objc/objc-act.c (hash_class_name_enter): New.
1252         (hash_class_name_lookup): New.
1253         (objc_declare_alias): Enter alias name into hash table.
1254         (objc_declare_class): Enter class name into hash table.
1255         (objc_is_class_name): Do a hash look up of class name.
1256         (hash_init): Initialize the two new hash tables.
1257         * objc-act.h: Added cls_name_hash_list and als_name_hash_list
1258         declarations, removed class_chain and alias_chain.
1259
1260 2010-10-20  Nicola Pero  <nicola.pero@meta-innovation.com>
1261
1262         * objc-lang.c (finish_file): Removed.
1263         * objc-act.c (objc_finish_file): Renamed to
1264         objc_write_global_declarations.  Do not try to instantiate C++
1265         templates when compiling Objective-C++ as this is now
1266         automatically done before this function is called.  Do not check
1267         for syntax-only run or PCH generation as this is done by the
1268         callers.
1269         * objc-act.h (objc_finish_file): Removed.
1270
1271 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
1272
1273         Implemented parsing @synthesize and @dynamic for
1274         Objective-C/Objective-C++.
1275         * objc-act.c (objc_add_synthesize_declaration): New.
1276         (objc_add_dynamic_declaration): New.
1277
1278 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
1279
1280         * objc-act.c (lookup_and_install_protocols): Return NULL if passed
1281         error_mark_node.
1282
1283 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
1284
1285         Merge from 'apple/trunk' branch on FSF servers.
1286
1287         2006-03-10  Fariborz Jahanian <fjahanian@apple.com>
1288
1289         Radar 4407151
1290         * objc/objc-act.c (objc_is_class_name): template parameter is not
1291         an objective class name.
1292         (objc_generate_cxx_cdtors): Check for the null
1293         objc_implementation_context.
1294
1295 2010-10-18  Nicola Pero  <nicola.pero@meta-innovation.com>
1296
1297         Merge from 'apple/trunk' branch on FSF servers.
1298
1299         2005-11-08  Fariborz Jahanian <fjahanian@apple.com>
1300
1301         Radar 4330422
1302         * objc/objc-act.c (objc_non_volatilized_type): New
1303
1304         2005-10-07  Fariborz Jahanian <fjahanian@apple.com>
1305
1306         Radar 4204796
1307         * objc-act.c (objc_build_volatilized_type): Build 'volatilzed'
1308         types with proper attribute set and correctly.
1309         (objc_volatilize_decl): Remove unneeded code.
1310         (objc_type_quals_match): Use the new attribute to check on
1311         'volatilzed' type.
1312         (hash_init): removed unneeded code.
1313
1314 2010-10-17  Nicola Pero  <nicola.pero@meta-innovation.com>
1315
1316         Merge from 'apple/trunk' branch on FSF servers.
1317
1318         2006-03-27 Fariborz Jahanian <fjahanian@apple.com>
1319
1320         Radar 4133425
1321         * objc-act.c (objc_diagnose_private_ivar): New.
1322
1323 2010-10-17  Iain Sandoe  <iains@gcc.gnu.org>
1324
1325         * objc-act.c: Rename 'objc_public_flag' to  objc_ivar_visibility and
1326         make its type 'objc_ivar_visibility_kind'.
1327         (objc_start_class_interface): Update to use visibility enum.
1328         (objc_start_class_implementation): Likewise.
1329         (objc_set_visibility): Update to use visibility enum, warn that
1330         @package is handle as per @public.
1331         (add_instance_variable): Handle OBJC_IVAR_VIS_PACKAGE.
1332         * objc-act.h: Rename 'objc_public_flag' to  objc_ivar_visibility and
1333         make its type 'objc_ivar_visibility_kind'.
1334
1335 2010-10-14  Iain Sandoe  <iains@gcc.gnu.org>
1336
1337         merge from FSF apple 'trunk' branch.
1338         2006 Fariborz Jahanian <fjahanian@apple.com>
1339
1340         Radars 4436866, 4505126, 4506903, 4517826
1341         * objc-act.c (CALL_EXPR_OBJC_PROPERTY_GETTER): New.
1342         property_readonly, property_getter, property_setter, property_ivar,
1343         property_copies, in_objc_property_setter_name_context: New vars.
1344         (objc_set_property_attr): New.
1345         (objc_add_property_variable): New.
1346         (lookup_property_in_list): New.
1347         (lookup_property): New.
1348         (objc_build_getter_call): New.
1349         (objc_setter_func_call): New.
1350         (get_selector_from_reference): New.
1351         (objc_build_setter_call): New.
1352         (is_property): New.
1353         (build_property_reference): New.
1354         (objc_finish_message_expr): Detect readonly property and warn.
1355         (objc_build_property_ivar_name): New.
1356         (objc_build_property_setter_name): New.
1357         (objc_gen_one_property_datum): New.
1358         (objc_process_getter_setter): New.
1359         (objc_synthesize_getter): New.
1360         (objc_synthesize_setter): New.
1361         (objc_gen_property_data): New.
1362         (finish_class): Generate property data.
1363         (comp_proto_with_proto): Separated from ...
1364         (match_proto_with_proto): ... New.
1365         (objc_lookup_ivar): Handle properties.
1366         * objc-tree.def (PROPERTY_DECL): New tree code.
1367         * objc-act.h: CLASS_LANG_SLOT_ELTS, PROTOCOL_LANG_SLOT_ELTS update size.
1368         (METHOD_PROPERTY_CONTEXT): New.
1369         (PROPERTY_NAME): New.
1370         (PROPERTY_GETTER_NAME): New.
1371         (PROPERTY_SETTER_NAME): New.
1372         (PROPERTY_IVAR_NAME): New.
1373         (PROPERTY_READONLY): New.
1374         (PROPERTY_COPIES): New.
1375         (TOTAL_CLASS_RAW_IVARS): New.
1376         (CLASS_PROPERTY_DECL): New.
1377         (IMPL_PROPERTY_DECL): New.
1378         * objc-lang.c (objc_init_ts): Update fields for property_decl.
1379
1380 2010-10-13  Richard Henderson  <rth@redhat.com>
1381
1382         * objc-act.c (objc_eh_personality): Update call to
1383         build_personality_function.
1384
1385 2010-10-13  Iain Sandoe  <iains@gcc.gnu.org>
1386
1387         merge from FSF apple 'trunk' branch.
1388
1389         2006-04-26 Fariborz Jahanian <fjahanian@apple.com>
1390         Radar 3803157 (method attributes)
1391         * objc/objc-act.h (METHOD_TYPE_ATTRIBUTES): New macro.
1392         * objc/objc-act.c (objc_decl_method_attributes): New.
1393         (objc_add_method_declaration): Process method's attribute.
1394         (objc_start_method_definition): Ditto.
1395         (build_objc_method_call): Inject method attribute into
1396         built function type.
1397         (objc_method_decl): New.
1398         (objc_warn_deprecated)use): New.
1399
1400 2010-10-07  Andi Kleen  <ak@linux.intel.com>
1401
1402         * Make-lang.in (cc1obj-dummy): Remove.
1403         (cc1obj-checksum): Change to run checksum over object files
1404         and options only.
1405
1406 2010-10-07  Nicola Pero  <nicola.pero@meta-innovation.com>
1407
1408         PR objc/45925
1409         * objc-act.c (objc_finish_foreach_loop): Convert return value of
1410         countByEnumeratingWithState:objects:count: to long unsigned int.
1411
1412 2010-10-07  Iain Sandoe  <iains@gcc.gnu.org>
1413
1414         * objc-act.c (build_objc_method_call): Replace calls to
1415         build_function_call () with the VEC equivalent.  Construct parameter
1416         lists as VECs.
1417
1418 2010-10-07  Iain Sandoe  <iains@gcc.gnu.org>
1419
1420         * objc-act.c (objc_build_message_expr):  Call mark_exp_read () to
1421         signal that the receiver has been used.
1422
1423 2010-10-06  Nicola Pero  <nicola.pero@meta-innovation.com>
1424
1425         * README: Obsolete file removed.
1426
1427 2010-10-06  Nicola Pero  <nicola.pero@meta-innovation.com>
1428
1429         Implemented fast enumeration for Objective-C.
1430         * objc-act.c (build_fast_enumeration_state_template): New.
1431         (TAG_ENUMERATION_MUTATION): New.
1432         (TAG_FAST_ENUMERATION_STATE): New.
1433         (synth_module_prologue): Call build_fast_enumeration_state_template() and set up
1434         objc_enumeration_mutation_decl.
1435         (objc_create_temporary_var): Allow providing a name to temporary
1436         variables.
1437         (objc_build_exc_ptr): Updated calls to
1438         objc_create_temporary_var().
1439         (next_sjlj_build_try_catch_finally): Same change.
1440         (objc_finish_foreach_loop): New.
1441         * objc-act.h: Added OCTI_FAST_ENUM_STATE_TEMP,
1442         OCTI_ENUM_MUTATION_DECL, objc_fast_enumeration_state_template,
1443         objc_enumeration_mutation_decl.
1444
1445         Merge from 'apple/trunk' branch on FSF servers.
1446
1447         2006-04-12 Fariborz Jahanian <fjahanian@apple.com>
1448
1449         Radar 4507230
1450         * objc-act.c (objc_type_valid_for_messaging): New routine to check
1451         for valid objc object types.
1452         (objc_finish_foreach_loop): Check for invalid objc objects in
1453         foreach header.
1454
1455 2010-10-05  Nicola Pero  <nicola.pero@meta-innovation.com>
1456
1457         Merge from 'apple/trunk' branch on FSF servers.
1458
1459         2005-10-17  Fariborz Jahanian <fjahanian@apple.com>
1460
1461         Radar 4290840
1462         * objc-act.c (objc_start_method_definition): Check for
1463         error_mark_node for the selector name and make a quick exit.
1464
1465 2010-10-04  Andi Kleen <ak@linux.intel.com>
1466
1467         * Make-lang.in (cc1obj-dummy, cc1obj): Add + to build rule.
1468
1469 2010-09-30  Iain Sandoe  <iains@gcc.gnu.org>
1470
1471         merge from FSF 'apple/trunk' branch.
1472         2006-01-30  Fariborz Jahanian <fjahanian@apple.com>
1473
1474        Radar 4386773
1475        * objc/objc-act.c (objc_set_method_opt): New function.
1476        (objc_start_protocol, objc_finish_interface): Reset
1477        objc_method_optional_flag flag.
1478        (objc_add_method_declaration): Pass on the new
1479        flag to objc_add_method.
1480        (objc_add_method): Add optional methods to new chain in
1481        the protocol class.
1482        * objc/objc-act.h (CLASS_OPTIONAL_CLS_METHODS,
1483        CLASS_OPTIONAL_NST_METHODS): New macros accessing a protocol
1484        class's optional method chains.
1485
1486 2010-09-30  Nicola Pero  <nicola.pero@meta-innovation.com>
1487
1488         Merge from 'apple/trunk' branch on FSF servers.
1489
1490         2005-10-04  Fariborz Jahanian <fjahanian@apple.com>
1491
1492         Radar 4278236
1493         * objc-act.c (objc_declare_class): Pick the right
1494         type tree.
1495
1496 2010-09-29  Nicola Pero  <nicola.pero@meta-innovation.com>
1497
1498         Merge from 'apple/trunk' branch on FSF servers.
1499
1500         2005-10-04  Fariborz Jahanian <fjahanian@apple.com>
1501
1502         Radar 4281748
1503         * objc-act.c (objc_check_global_decl): New
1504
1505 2010-09-29  Nicola Pero  <nicola.pero@meta-innovation.com>
1506
1507         * objc-act.c (objc_is_reserved_word): Removed.
1508
1509 2010-09-28  Iain Sandoe  <iains@gcc.gnu.org>
1510
1511         * objc-act.c (objc_add_method_declaration): Handle and ignore
1512         attributes.
1513         (objc_start_method_definition): Likewise.
1514         (objc_generate_cxx_ctor_or_dtor): Pass NULL attributes to ctor/dtor.
1515         (objc_build_keyword_decl): Handle and ignore attributes.
1516
1517 2010-09-28  Richard Henderson  <rth@redhat.com>
1518
1519         * objc-act.c (objc_eh_personality): Use targetm.except_unwind_info.
1520
1521 2010-09-28  Iain Sandoe  <iains@gcc.gnu.org>
1522
1523         * objc-act.c (objc_start_class_interface): Handle and ignore attributes.
1524         (objc_start_category_interface): Likewise.
1525         (objc_start_protocol): Likewise.
1526
1527 2010-09-28  Nicola Pero  <nicola.pero@meta-innovation.com>
1528
1529         Merge from 'apple/trunk' branch on FSF servers.
1530
1531         2005-08-23  Stuart Hastings <stuart@apple.com>
1532                     Ziemowit Laski  <zlaski@apple.com>
1533
1534         Radar 4209854
1535         * objc-act.c (objc_decay_parm_type): New function.
1536         (get_arg_type_list): Decay types for all named arguments.
1537         (objc_push_parm): Rebuild the PARM_DECL if its type has
1538         been decayed.
1539
1540 2010-09-28  Nicola Pero  <nicola.pero@meta-innovation.com>
1541
1542         * objc-act.c (encode_type): Fixed encoding enums with the next
1543         runtime.
1544
1545 2010-09-28  Nicola Pero  <nicola.pero@meta-innovation.com>
1546
1547         Merge from 'apple/trunk' branch on FSF servers.
1548
1549         2005-07-18  Ziemowit Laski  <zlaski@apple.com>
1550
1551         Radar 4175534
1552         * objc-act.c (objc_compare_types): A new silent comparison
1553         mode (-4), differing from regular comparison (-3) in that
1554         'false' is returned instead of issuing warnings.
1555
1556 2010-09-28  Nicola Pero  <nicola.pero@meta-innovation.com>
1557
1558         * objc-act.c (encode_type): Do not add 'r' with the next runtime.
1559         (encode_aggregate_within): Reorganized code to be more readable.
1560         (encode_aggregate_fields): Updated second argument to be 'bool'
1561         instead of 'int'.
1562
1563 2010-09-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1564
1565         PR objc/45763
1566         PR objc/25450
1567         PR objc/25464
1568         * objc-act.c: Improved comments for encoding functions.
1569         (encode_aggregate_within): For the GNU runtime, rewritten some
1570         obsfuscated code to clarify the various cases.
1571         (encode_aggregate): Function removed.
1572         (encode_array): Generate an error if asked to encode an incomplete
1573         array as part of generating instance variables.  Else, when
1574         encoding an incomplete array inside a structure, encode it as an
1575         array of zero size.
1576         (encode_pointer): For the GNU runtime, fixed encoding 'BOOL *' as
1577         '^c' instead of '*'.
1578         (encode_gnu_bitfield): Encode enumerated types exactly in the same
1579         type as integer types instead of using a hardcoded 'i'.  If asked
1580         to encode a non-integer type as a bitfield, do not abort
1581         compilation immediately; instead generate an error, then skip the
1582         type.
1583         (encode_type): Use a 'switch' instead of a sequence of 'if's.
1584         Added a 'default' clause that gets executed if the type can not be
1585         matched, and that encodes it as '?' (unknown) and produces a
1586         warning.  For the GNU runtime, encode enumerated types exactly in
1587         the same way as integer types instead of using a hardcoded 'i'.
1588         Encode long double as 'D'.  Encode 128-bit integers as 'T' or 't'.
1589         Encode C++ reference types as pointers.  Call encode_vector to
1590         encode vectors.
1591         (encode_vector): New function.
1592
1593 2010-09-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1594
1595         Merge from 'apple/trunk' branch on FSF servers.  I modified the
1596         changes to be used only when compiling for the NeXT runtime.
1597
1598         2005-10-10  Fariborz Jahanian <fjahanian@apple.com>
1599
1600         Radar 4301047
1601
1602         * objc-act.c (encode_type): Remove the hack.
1603
1604         2005-07-20  Ziemowit Laski  <zlaski@apple.com>
1605
1606         Radar 4136935
1607         * objc-act.c (pointee_is_readonly): New function.
1608         (encode_pointer, encode_aggregate_within, encode_type):
1609         Attempt to emulate GCC 3.3 when generating type encodings.
1610
1611 2010-09-27  Nicola Pero  <nicola.pero@meta-innovation.com>
1612
1613         Merge from 'apple/trunk' branch on FSF servers.
1614
1615         2005-12-15  Fariborz Jahanian <fjahanian@apple.com>
1616
1617         Radar 4229905
1618         * objc-act.c (objc_have_common_types): New function.
1619
1620         2005-06-22  Ziemowit Laski  <zlaski@apple.com>
1621
1622         Radar 4154928
1623         * objc-act.c (objc_common_type): New function.
1624
1625 2010-09-27  Richard Guenther  <rguenther@suse.de>
1626
1627         * objc-act.c (objc_get_class_reference): Use CP_TYPE_CONTEXT.
1628         (objc_is_global_reference_p): Use DECL_FILE_SCOPE_P.
1629
1630 2010-09-26  Nicola Pero  <nicola.pero@meta-innovation.com>
1631
1632         * objc-act.c: Removed historical, obsolete comment at the top of
1633         the file.
1634
1635 2010-09-21  Nicola Pero  <nicola.pero@meta-innovation.com>
1636
1637         PR objc/23710
1638         * objc-act.c (objc_start_method_definition): Do not abort upon a
1639         'method definition not in @implementation context' error.  Return
1640         'false' instead.
1641
1642 2010-09-21  Nicola Pero  <nicola.pero@meta-innovation.com>
1643
1644         PR objc/25965
1645         * objc-act.c (objc_get_interface_ivars): New function.
1646         (objc_collecting_ivars): New variable.
1647         (continue_class): Set and reset objc_collecting_ivars for context.
1648
1649 2010-09-15  Nicola Pero  <nicola.pero@meta-innovation.com>
1650
1651         Merge from 'apple/trunk' branch on FSF servers.
1652
1653         2006-03-09 Fariborz Jahanian <fjahanian@apple.com>
1654
1655         Radar 4457381
1656         * objc/objc-act.c (objc_finish_message_expr): Look for message in
1657         @class's protocol list.
1658
1659         2006-02-07  Fariborz Jahanian <fjahanian@apple.com>
1660
1661         Radar 4219590
1662         * objc/objc-act.c (objc_start_method_definition): Initialize
1663         break/continue labels.
1664
1665         2005-08-22  Ziemowit Laski  <zlaski@apple.com>
1666
1667         Radar 4174166
1668         * objc-act.c (objc_compare_types): Compare function
1669         pointers; indicate success if the right-hand side has
1670         a return type that is covariant, and the argument types
1671         contravariant, with those of the left side.
1672
1673         2005-08-22  Ziemowit Laski  <zlaski@apple.com>
1674
1675         Radar 4216500
1676         * objc-act.c (objc_get_protocol_qualified_type): When looking
1677         at a typedef, retrieve the precise type it describes (rather
1678         than merely looking up a class by name).
1679
1680 2010-09-10  Nicola Pero  <nicola.pero@meta-innovation.com>
1681
1682         * objc/objc-act.c (objc_begin_try_stmt): Generate an error if
1683         -fobjc-exceptions was not used.  (objc_build_throw_stmt): Same
1684         change.
1685
1686 2010-07-15  Nathan Froyd  <froydnj@codesourcery.com>
1687
1688         * objc-act.c: Carefully replace TREE_CHAIN with DECL_CHAIN.
1689
1690 2010-07-10  Iain Sandoe  <iains@gcc.gnu.org>
1691
1692         PR objc/44140
1693         * objc-act.c: build_objc_string_decl() remove declaration.
1694         (finish_var_decl): Remove forcing of var output and marking
1695         as "Used".
1696         (init_def_list): Use integer_zero_node.
1697         (init_objc_symtab): Use integer_zero_node, make the short
1698         integer type specific on relevant nodes.
1699         (generate_objc_symtab_decl): Remove call to
1700         forward_declare_categories().  Use null_pointer_node where
1701         appropriate.
1702         (build_module_descriptor): Comment and mark this item as
1703         DECL_PRESERVE_P.
1704         (generate_static_references): Use gcc_unreachable instead of
1705         abort ().
1706         (diagnose_missing_method): New.
1707         (build_next_selector_translation_table): New.
1708         (build_gnu_selector_translation_table): New.
1709         (add_objc_string): Merge code from build_objc_string_decl...
1710         ... and delete build_objc_string_decl().
1711         (generate_dispatch_table): Make integer types explicit.
1712         (generate_category): Pass implent and arrange for the data
1713         to be extracted within the routine.  Do not start new vars,
1714         but finish the ones collcted during parsing.
1715         (generate_shared_structures): Likewise.
1716         (finish_objc):  Reorder code so that we finish variables before
1717         referencing them.  Save the global data before calling meta-data
1718         creation routines, and pass the current reference to the two
1719         main routines.  Only call generate_objc_image_info () for the
1720         NeXT runtime.
1721         (generate_classref_translation_entry): Comment on and make this
1722         item DECL_PRESERVE_P.
1723         (handle_class_ref): Use varpool interfaces, comment on and make
1724         this item DECL_PRESERVE_P.
1725         (handle_impent): Likewise.
1726         (generate_objc_image_info): Only generate when the content is
1727         non-zero.  Make integer types explict.
1728
1729 2010-07-03  Nathan Froyd  <froydnj@codesourcery.com>
1730
1731         PR objc/24867
1732         * objc-act.c (build_sized_array_type): New function.
1733         (add_objc_string): Use it.
1734         (generate_protocol_list): Likewise.
1735         (generate_objc_image_info): Likewise.
1736         (add_field_decl): New function.
1737         (objc_build_struct): Use a VEC rather than building a TREE_LIST.
1738         (generate_struct_by_value_array): Use add_field_decl.
1739         (build_objc_symtab_template): Likewise.
1740         (build_module_descriptor): Likewise.
1741         (build_objc_exception_stuff): Likewise.
1742         (build_protocol_template): Likewise.
1743         (build_method_prototype_list_template): Likewise.
1744         (build_method_prototype_template): Likewise.
1745         (build_category_template): Likewise.
1746         (build_selector_template): Likewise.
1747         (build_class_template): Likewise.
1748         (build_super_template): Likewise.
1749         (build_ivar_template): Likewise.
1750         (build_ivar_list_template): Likewise.
1751         (build_method_list_template): Likewise.
1752         (build_method_template): Likewise.
1753
1754 2010-06-28  Steven Bosscher  <steven@gcc.gnu.org>
1755
1756         * objc-act.c: Do not include except.h.
1757
1758 2010-06-08  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
1759
1760         * objc-act.h (ALLOC_OBJC_TYPE_LANG_SPECIFIC): Use typed GC
1761         allocation.
1762
1763         * objc-act.c (objc_volatilize_decl): Likewise.
1764         (objc_build_string_object): Likewise.
1765         (hash_init): Likewise.
1766         (hash_enter): Likewise.
1767         (hash_add_attr): Likewise.
1768         (add_class): Likewise.
1769         (start_class): Likewise.
1770
1771 2010-06-05  Steven Bosscher  <steven@gcc.gnu.org>
1772
1773         * objc-act.c: Update include path for moved files.
1774         * objc-lang.c: Likewise.
1775         * config-lang.in: Update paths in gtfiles for files in c-family/.
1776
1777 2010-06-01  Nathan Froyd  <froydnj@codesourcery.com>
1778
1779         * objc-act.c (build_next_objc_exception_stuff): Give setjmp a
1780         varargs type instead of a zero-argument type.
1781
1782 2010-05-30  Nathan Froyd  <froydnj@codesourcery.com>
1783
1784         * objc-act.c (synth_module_prologue): Use build_function_type_list
1785         instead of build_function_type.
1786         (build_module_initializer_routine): Likewise.
1787         (build_next_objc_exception_stuff): Likewise.
1788         (build_objc_exception_stuff): Likewise.
1789
1790 2010-05-27  Joseph Myers  <joseph@codesourcery.com>
1791
1792         * objc-act.c: Include diagnostic-core.h instead of diagnostic.h.
1793         * Make-lang.in (objc/objc-act.o): Update dependencies.
1794
1795 2010-05-25  Steven Bosscher  <steven@gcc.gnu.org>
1796
1797         * objc-act.h: Do not include gimple.h.
1798         * objc-act.c: Do not include rtl.h, expr.h, libfuncs.h, and tm_p.h.
1799         Include gimple.h.  Explain why except.h has to be included.
1800         * objc-lang.c: Do not include diagnostics.h.
1801         * Make-lang.in: Update dependencies.
1802
1803 2010-05-25  Nathan Froyd  <froydnj@codesourcery.com>
1804
1805         * objc-act.c (objc_build_constructor): Adjust OBJCPLUS impedance
1806         mismatch code for VECs.
1807
1808 2010-05-25  Nathan Froyd  <froydnj@codesourcery.com>
1809
1810         * objc-act.c (objc_build_constructor): Take a VEC instead of a tree.
1811         Use build_constructor instead of build_constructor_from_list.
1812         (objc_build_string_object): Build a VEC argument for
1813         objc_build_constructor.
1814         (init_def_list): Likewise.
1815         (init_objc_symtab): Likewise.
1816         (init_module_descriptor): Likewise.
1817         (generate_static_references): Likewise.
1818         (build_selector_translation_table): Likewise.
1819         (build_descriptor_table_initializer): Likewise.
1820         (generate_descriptor_table): Likewise.
1821         (build_protocol_initializer): Likewise.
1822         (build_ivar_list_initializer): Likewise.
1823         (generate_ivars_list): Likewise.
1824         (build_dispatch_table_initializer): Likewise.
1825         (generate_dispatch_table): Likewise.
1826         (generate_protocol_list): Likewise.
1827         (build_category_initializer): Likewise.
1828         (build_shared_structure_initializer): Likewise.
1829         (generate_objc_image_info): Likewise.
1830
1831 2010-04-30  Iain Sandoe  <iains@gcc.gnu.org>
1832
1833         PR objc++/32052
1834         * objc-act.c (encode_aggregate_within): Encode structure tags
1835         with template args for ObjC++.
1836
1837 2010-04-30  Steven Bosscher  <steven@gcc.gnu.org>
1838
1839         * objc-act.c: Do not include varray.h.
1840
1841 2010-04-07  Jakub Jelinek  <jakub@redhat.com>
1842
1843         PR c/18624
1844         * objc-act.c (finish_var_decl, objc_begin_catch_clause,
1845         really_start_method, get_super_receiver, handle_class_ref): Set
1846         DECL_READ_P in addition to TREE_USED.
1847
1848 2010-04-07  Iain Sandoe <iains@gcc.gnu.org>
1849
1850         PR objc/35996
1851         * objc-act.c (objc_init): Warn that -fobjc-gc is ignored for
1852         -fgnu-runtime and set flag_objc_gc to zero.
1853
1854 2010-04-07  Iain Sandoe <iains@gcc.gnu.org>
1855
1856         PR objc++/23716
1857         * objc-act.c (build_module_initializer_routine): Make the argument
1858         to objc_start_function NULL_TREE when compiling ObjC++.
1859
1860 2010-02-18  Iain Sandoe <iain.sandoe@sandoe-acoustics.co.uk>
1861             Mike Stump  <mikestump@comcast.net>
1862
1863         PR objc/43061
1864         * objc-act.c (finish_var_decl): Set the generated symbols as "used".
1865
1866 2009-12-17  Shujing Zhao  <pearly.zhao@oracle.com>
1867
1868         * objc-act.c (objc_substitute_decl, build_ivar_reference,
1869         get_super_receiver): Update build_indirect_ref calls.
1870
1871 2009-11-28  Jakub Jelinek  <jakub@redhat.com>
1872
1873         * objc-act.c (generate_shared_structures): Remove unused sc_spec and
1874         decl_specs variables.
1875         (objc_build_message_expr): Remove unused loc variable.
1876         (objc_finish_message_expr): Remove unused saved_rtype variable.
1877         (encode_field_decl): Remove unused type variable.
1878
1879         PR obj-c++/42156
1880         * objc-act.c (objc_build_struct): INIT_TYPE_OBJC_INFO for
1881         type variants that don't have it initialized yet.
1882
1883 2009-09-14  Jan Hubicka  <jh@suse.cz>
1884
1885         * objc-act.c (objc_add_static_instance): Do not set DECL_COMMON.
1886
1887 2009-09-14  Richard Henderson  <rth@redhat.com>
1888
1889         * objc-act.c (objc_init_exceptions): Don't call
1890         default_init_unwind_resume_libfunc.
1891         (objc_build_exc_ptr): Use __builtin_eh_pointer.
1892
1893 2009-09-13  Richard Guenther  <rguenther@suse.de>
1894         Rafael Avila de Espindola  <espindola@google.com>
1895
1896         * objc-act.c (objc_eh_runtime_type): Export.
1897         (objc_init_exceptions): Remove.  Move warning code ...
1898         (objc_begin_try_stmt): ... here
1899         (objc_build_throw_stmt): ... and here.
1900         (objc_eh_personality_decl): New.
1901         (objc_eh_personality): New function.
1902         * objc-act.h (objc_eh_runtime_type): Declare.
1903         (objc_eh_personality): Likewise.
1904         * objc-lang.c (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
1905         (LANG_HOOKS_EH_PERSONALITY): Likewise.
1906
1907 2009-09-03  Diego Novillo  <dnovillo@google.com>
1908
1909         * objc-lang.c (lang_hooks): Remove const qualifier.
1910
1911 2009-08-20  Richard Guenther  <rguenther@suse.de>
1912
1913         * objc-act.c: Include c-lang.h
1914         * Make-lang.in (objc/objc-act.o): Add c-lang.h dependency.
1915
1916 2009-07-17  Aldy Hernandez  <aldyh@redhat.com>
1917             Manuel López-Ibáñez  <manu@gcc.gnu.org>
1918
1919         PR 40435
1920         * objc-act.c: Add location argument to all calls to
1921         build_fold_addr_expr.
1922
1923 2009-07-14  Taras Glek  <tglek@mozilla.com>
1924             Rafael Espindola  <espindola@google.com>
1925
1926         * Make-lang.in (objc.install-plugin): New target for
1927         installing plugin headers.
1928
1929 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1930
1931         * objc-act.c (next_sjlj_build_catch_list): Replace EXPR_LOCUS by
1932         EXPR_LOCATION.
1933
1934 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1935
1936         * objc-act.c: Replace %J by an explicit location. Update all
1937         calls.
1938
1939 2009-07-07  Manuel López-Ibáñez  <manu@gcc.gnu.org>
1940
1941         * objc-act.c: Replace %H by an explicit location. Update all
1942         calls.
1943
1944 2009-06-22  Steven Bosscher  <steven@gcc.gnu.org>
1945
1946         PR objc/28050
1947         * objc-act.c (objc_build_message_args): Return if ARGS is the
1948         error_mark_node.
1949
1950 2009-06-19  Ian Lance Taylor  <iant@google.com>
1951
1952         * objc-act.c (objc_in_struct, objc_struct_types): Remove.
1953         (objc_struct_info): New static variable.
1954         (objc_start_struct): Pass &objc_struct_info, not &objc_in_struct
1955         and &objc_struct_types, to start_struct.
1956         (objc_finish_struct): Likewise for finish_struct.
1957
1958 2009-06-15  Ian Lance Taylor  <iant@google.com>
1959
1960         * objc-act.c (objc_start_function): Don't set
1961         label_context_stack_se or label_context_stack_vm.
1962
1963 2009-06-12  Aldy Hernandez  <aldyh@redhat.com>
1964
1965         * objc-act.c (finish_var_decl): Pass location to finish_decl.
1966         (objc_get_parm_info): Same.
1967         (get_super_receiver): Same.
1968         * objc-act.c (objc_build_component_ref): Pass location to
1969         build_compound_ref.
1970         (build_module_initializer_routine): Pass location to
1971         c_end_compound_stmt.
1972         (objc_generate_static_init_call): Pass location to build_stmt.
1973         (build_typed_selector_reference): New location argument.
1974         (build_selector_reference): Same.
1975         (objc_substitute_decl): Pass location to build_array_ref.
1976         (next_sjlj_build_try_catch_finally): Pass location to build_stmt.
1977         (objc_begin_catch_clause): Same.
1978         (objc_finish_try_stmt): Same.
1979         (objc_finish_catch_clause): Pass location to c_end_compound_stmt.
1980         (objc_build_throw_stmt): New argument.
1981         (generate_shared_structures): Pass location to build_c_cast.
1982         (objc_build_message_expr): Use local location.
1983         (objc_finish_message_expr): Use input_location.
1984         (build_objc_method_call): New argument.
1985         (objc_build_selector_expr): Same.
1986         (get_super_receiver): Pass location to build_c_cast,
1987         build_modify_expr, build_compound_expr.
1988         * objc-act.c: Add location to all calls to start_struct, build_decl,
1989         finish_struct.
1990
1991 2009-06-09  Ian Lance Taylor  <iant@google.com>
1992
1993         * objc-act.c (objc_gimplify_expr): Change return type to int.
1994         * objc-act.h: Update declaration.
1995
1996 2009-06-08  Alexandre Oliva  <aoliva@redhat.com>
1997
1998         * objc-act.c (objc_init): Skip print_struct_values during
1999         -fcompare-debug-second.
2000
2001 2009-06-03  Ian Lance Taylor  <iant@google.com>
2002
2003         * Make-lang.in (cc1obj-checksum.o): Depend upon $(CONFIG_H) and
2004         $(SYSTEM_H).
2005
2006 2009-05-27  Ian Lance Taylor  <iant@google.com>
2007
2008         * Make-lang.in (cc1obj-dummy$(exeext)): Change $(COMPILER) to
2009         $(LINKER).
2010         (cc1obj$(exeext)): Likewise.
2011
2012 2009-05-26  Ian Lance Taylor  <iant@google.com>
2013
2014         * Make-lang.in (cc1obj-dummy$(exeext)): Use $(COMPILER).
2015         (cc1obj$(exeext)): Likewise.
2016
2017 2009-05-20  Ian Lance Taylor  <iant@google.com>
2018
2019         * objc-act.c (objc_generate_cxx_ctor_or_dtor): Pass NULL rather
2020         than NULL_TREE to build_special_member_call.
2021
2022 2009-05-10  Ian Lance Taylor  <iant@google.com>
2023
2024         * objc-act.c (objc_building_struct): New static variable.
2025         (objc_in_struct, objc_struct_types): New static variables.
2026         (objc_start_struct, objc_finish_struct): New static functions.
2027         (generate_struct_by_value_array): Call objc_start_struct instead
2028         of start_struct, and call objc_finish_struct instead of
2029         finish_struct.
2030         (objc_build_struct, build_objc_symtab_template): Likewise.
2031         (build_module_descriptor): Likewise.
2032         (build_next_objc_exception_stuff): Likewise.
2033         (build_protocol_template): Likewise.
2034         (build_method_prototype_list_template): Likewise.
2035         (build_method_prototype_template): Likewise.
2036         (build_category_template, build_selector_template): Likewise.
2037         (build_class_template, build_super_template): Likewise.
2038         (build_ivar_template, build_ivar_list_template): Likewise.
2039         (build_method_list_template): Likewise.
2040         (build_method_template): Likewise.
2041
2042 2009-05-10  Joseph Myers  <joseph@codesourcery.com>
2043
2044         * objc-act.c: Include intl.h.
2045         (objc_lookup_protocol): Use complete sentences for diagnostics
2046         with %qE for identifiers and translating results of
2047         gen_type_name_0 to locale character set.
2048         (objc_check_decl, check_protocol_recursively,
2049         lookup_and_install_protocols, objc_build_string_object,
2050         objc_get_class_reference, objc_declare_alias, objc_declare_class,
2051         objc_get_class_ivars, error_with_ivar, check_duplicates,
2052         objc_finish_message_expr, objc_build_protocol_expr,
2053         objc_build_selector_expr, build_ivar_reference, objc_add_method,
2054         add_category, add_instance_variable, objc_is_public,
2055         check_methods, check_methods_accessible, check_protocol,
2056         start_class, finish_class, start_protocol, really_start_method,
2057         get_super_receiver, objc_lookup_ivar): Use %E and %qE for
2058         identifiers in diagnostics.  Translate generated text to locale
2059         character set as needed.
2060         (check_protocol, check_protocols): Change name parameter to type
2061         tree.
2062         (lang_report_error_function): Remove.
2063
2064 2009-04-27  Ian Lance Taylor  <iant@google.com>
2065
2066         * objc-act.c (objc_gimplify_expr): Add casts to enum type.
2067
2068 2009-04-24  Ian Lance Taylor  <iant@google.com>
2069
2070         * objc-act.c (get_super_receiver): Update calls to
2071         build_modify_expr to pass new argument.
2072
2073 2009-04-21  Taras Glek <tglek@mozilla.com>
2074
2075         * objc-act.c: Update GTY annotations to new syntax
2076         * objc-act.h: Likewise
2077
2078 2009-04-21  Joseph Myers  <joseph@codesourcery.com>
2079
2080         * ChangeLog: Add copyright and license notices.
2081
2082 2009-04-20  Ian Lance Taylor  <iant@google.com>
2083
2084         * objc-act.c (objc_rewrite_function_call): Change parameter from
2085         params to first_param.  Change all callers.
2086
2087 2009-03-30  Dominique d'Humieres  <dominiq@lps.ens.fr>
2088
2089         PR bootstrap/39583
2090         * objc-act.c (in_late_binary_op): Define for Objective-C++.
2091
2092 2009-03-29  Joseph Myers  <joseph@codesourcery.com>
2093
2094         PR c/456
2095         PR c/5675
2096         PR c/19976
2097         PR c/29116
2098         PR c/31871
2099         PR c/35198
2100         * objc-act.c (objc_finish_try_stmt): Set in_late_binary_op.
2101
2102 2008-12-05  Sebastian Pop  <sebastian.pop@amd.com>
2103
2104         PR bootstrap/38262
2105         * Make-lang.in (cc1obj-dummy, cc1obj): Add BACKENDLIBS,
2106         remove GMPLIBS.
2107
2108 2008-10-06  Aldy Hernandez  <aldyh@redhat.com>
2109
2110         * objc-act.c (objc_build_string_object): Pass location to
2111         build_unary_op.
2112         (init_def_list): Same.
2113         (init_objc_symtab): Same.
2114         (init_module_descriptor): Same.
2115         (build_module_initializer_routine): Same.
2116         (generate_static_references): Same.
2117         (build_typed_selector_reference): Same.
2118         (add_objc_string): Same.
2119         (objc_substitute_decl): Same.
2120         (objc_build_ivar_assignment): Same.
2121         (objc_build_global_assignment): Same.
2122         (objc_build_strong_cast_assignment): Same.
2123         (generate_protocols): Same.
2124         (build_protocol_initializer): Same.
2125         (build_dispatch_table_initializer): Same.
2126         (generate_protocol_list): Same.
2127         (build_category_initializer): Same.
2128         (build_shared_structure_initializer): Same.
2129         (generate_shared_structures): Same.
2130         (objc_build_protocol_expr): Same.
2131         (build_ivar_reference): Same.
2132         (get_super_receiver): Same.
2133
2134 2008-09-23  Aldy Hernandez  <aldyh@redhat.com>
2135
2136         * objc-act.c (next_sjlj_build_enter_and_setjmp): Call
2137         c_common_truthvalue_conversion with location.
2138         (next_sjlj_build_catch_list): Same.
2139         (next_sjlj_build_try_catch_finally): Same.
2140
2141 2008-09-17  Andrew Pinski  <andrew_pinski@playstation.sony.com>
2142
2143         PR objc/37460
2144         * objc-lang.c (LANG_HOOKS_GET_CALLEE_FNDECL): Don't define.
2145         * objc-act.h (objc_get_callee_fndecl): Remove prototype.
2146         * objc-act.c (objc_get_callee_fndecl): Kill.
2147
2148 2008-09-17  Jan Hubicka  <jh@suse.cz>
2149
2150         PR c++/18071
2151         * objc/objc-act.c (objc_finish_method_definition): Do not set
2152         DECL_INLINE.
2153
2154 2008-09-01  Aldy Hernandez  <aldyh@redhat.com>
2155
2156         * objc-act.c (build_typed_selector_reference): Pass input_location to
2157         build_unary_op calls.
2158         (build_selector_reference): Same, but to build_array_ref.
2159         (objc_substitute_decl): Same.
2160         (build_ivar_reference): Same, but to build_indirect_ref.
2161         (get_super_receiver): Same.
2162
2163 2008-07-28  Richard Guenther  <rguenther@suse.de>
2164
2165         Merge from gimple-tuples-branch.
2166
2167         2008-07-18  Aldy Hernandez  <aldyh@redhat.com>
2168
2169         * Make-lang.in (objc-lang.o): Depend on GIMPLE_H.
2170         (objc-act.o): Rename TREE_GIMPLE_H to GIMPLE_H.
2171         * objc-act.h: Include gimple.h instead of tree-gimple.h.
2172         * ipa-reference.c: Same.
2173
2174         2007-11-10  Aldy Hernandez  <aldyh@redhat.com>
2175
2176         * objc-act.c (objc_gimplify_expr): Change pre and post to sequences.
2177         * objc-act.h (objc_gimplify_expr): Change prototype accordingly.
2178
2179 2008-07-21  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2180
2181         * objc-act.c: Fix comment typos.
2182
2183 2008-07-18  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2184
2185         * objc-act.c (objc_start_class_interface,
2186         objc_start_category_interface, objc_start_class_implementation,
2187         objc_start_category_implementation, objc_build_struct,
2188         generate_static_references, build_private_template,
2189         lookup_category, objc_add_method, add_category,
2190         add_instance_variable, objc_is_public, conforms_to_protocol,
2191         start_class, continue_class, finish_class): Avoid C++ keywords.
2192
2193 2008-07-14  Jason Merrill  <jason@redhat.com>
2194
2195         PR objc++/36723
2196         * objc-act.c (objc_build_constructor): Update C++ tweak.
2197
2198 2007-07-14  Rafael Ávila de Espíndola  <espindola@google.com>
2199
2200         * objc-act.c (synth_module_prologue): Use TREE_NO_WARNING instead
2201         of DECL_IN_SYSTEM_HEADER.
2202
2203 2008-07-11  Ian Lance Taylor  <iant@google.com>
2204
2205         * objc-act.c (objc_is_reserved_word): Always check for RID_CLASS,
2206         etc., not just when OBJCPLUS is defined.
2207
2208 2008-06-19  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2209
2210         * objc-act.c (setup_string_decl, objc_build_string_object,
2211         hash_interface, eq_interface, objc_begin_try_stmt,
2212         encode_method_prototype, build_ivar_list_initializer,
2213         objc_build_encode_expr): Fix for -Wc++-compat.
2214
2215 2008-05-12  Tomas Bily  <tbily@suse.cz>
2216
2217         * objc-act.c (objc_generate_write_barrier, objc_finish_message_expr):
2218         Use CONVERT_EXPR_P.
2219
2220 2008-04-23  Paolo Bonzini  <bonzini@gnu.org>
2221
2222         * objc-act.c (objc_build_string_object): Don't set TREE_INVARIANT.
2223
2224 2008-04-03  Tom Tromey  <tromey@redhat.com>
2225
2226         * Make-lang.in (objc_OBJS): New variable.
2227
2228 2008-03-27  Tom Tromey  <tromey@redhat.com>
2229
2230         * Make-lang.in: Revert automatic dependency patch.
2231
2232 2008-03-27  Douglas Gregor  <doug.gregor@gmail.com>
2233
2234         PR obj-c++/35704
2235         * objc-act.c (objc_build_component_ref): Fix call to
2236         finish_class_member_access_expr.
2237         (objc_generate_cxx_ctor_or_dtor): Fix call to
2238         build_special_member_call.
2239
2240 2008-03-25  Andrew Pinski  <pinskia@gmail.com>
2241
2242         PR objc/29197
2243         * objc-act.c (encode_type): Handle when type is error_mark_node.
2244         (objc_push_parm): Handle when the type of parm is error_mark_node.
2245
2246 2008-03-25  Tom Tromey  <tromey@redhat.com>
2247
2248         * Make-lang.in (objc_OBJS): New variable.
2249         (cc1obj-checksum.o, objc/objc-lang.o, objc/objc-act.o): Remove.
2250
2251 2008-03-21  Andreas Tobler  <a.tobler@schweiz.org>
2252
2253         PR bootstrap/35660
2254         * objc-act.c (objc_generate_cxx_ctor_or_dtor): Rename IS_AGGR_TYPE to
2255         MAYBE_CLASS_TYPE_P.
2256         (objc_generate_cxx_cdtors): Likewise.
2257         (add_instance_variable): Likewise.
2258
2259 2008-02-26  Tom Tromey  <tromey@redhat.com>
2260
2261         * objc-act.c (objc_init): Remove old location code.
2262
2263 2008-02-06  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2264
2265         PR other/35107
2266         * Make-lang.in (cc1obj-dummy, cc1obj): Add $(GMPLIBS).
2267
2268 2007-07-30  Nick Clifton  <nickc@redhat.com>
2269
2270         * Make-lang.in: Change copyright header to refer to version 3 of
2271         the GNU General Public License and to point readers at the
2272         COPYING3 file and the FSF's license web page.
2273         * lang-specs.h, objc-act.c, objc-tree.def, objc-act.h,
2274         config-lang.in, objc-lang.c: Likewise.
2275
2276 2007-07-29  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2277
2278         * objc-act.c (objc_get_callee_fndecl): Constify.
2279         * objc-act.h (objc_get_callee_fndecl): Likewise.
2280
2281 2007-07-25  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
2282
2283         * objc-act.c (volatilized_hash, volatilized_eq, string_hash,
2284         string_eq): Constify.
2285
2286 2007-04-04  Stuart Hastings  <stuart@apple.com>
2287
2288         PR 31281
2289         * objc/objc-act.c (next_sjlj_build_catch_list): Delete volatile from rethrow decl.
2290
2291 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
2292
2293         * Make-lang.in: Add dummy lang.install-pdf target.
2294
2295 2007-02-18  Kazu Hirata  <kazu@codesourcery.com>
2296
2297         * objc/objc-act.c: Fix comment typos.
2298
2299 2007-02-15  Sandra Loosemore  <sandra@codesourcery.com>
2300             Brooks Moses  <brooks.moses@codesourcery.com>
2301             Lee Millward  <lee.millward@codesourcery.com>
2302
2303         * objc-act.c (receiver_is_class_object): Use new CALL_EXPR accessors.
2304         (objc_get_callee_fndecl): Likewise.
2305
2306 2007-01-23  Andrew Pinski  <pinskia@gmail.com>
2307
2308         PR objc/27438
2309         * objc-act.c (objc_add_static_instance): Mark the decl as
2310         TREE_USED.
2311
2312 2007-01-20  Andrew Pinski  <pinskia@gmail.com>
2313
2314         PR objc/30479
2315         * objc-act.c (hash_interface): Use IDENTIFIER_HASH_VALUE instead
2316         of htab_hash_pointer.
2317         (lookup_interface): Likewise.
2318         (add_class): Likewise.
2319
2320 2007-01-02  Douglas Gregor  <doug.gregor@gmail.com>
2321
2322         * objc-act.c (objc_build_volatilized_type): Keep track of
2323         canonical types.
2324         (objc_get_protocol_qualified_type): Ditto.
2325
2326 2006-11-02  Andreas Tobler  <a.tobler@schweiz.org>
2327
2328         * objc-act.c (objc_finish_file): Remove ifdef clause for OBJCPLUS and
2329         content where we called cp_finish_file.
2330
2331 2006-10-23 Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
2332
2333         * objc-act.c (synth_module_prologue): Replace calls to
2334         builtin_function with add_builtin_function.
2335         (build_next_objc_exception_stuff): Replace calls to
2336         builtin_function with add_builtin_function.
2337         (build_objc_exception_stuff): Replace calls to
2338         builtin_function with add_builtin_function.
2339
2340 2006-10-10  Brooks Moses  <bmoses@stanford.edu>
2341
2342         * Make-lang.in: Added empty "objc.pdf" target.
2343
2344 2006-09-26  Andrew Pinski  <pinskia@physics.uc.edu>
2345
2346         PR objc/29195
2347         * objc-act.c (objc_push_parm): If we change the type of the
2348         decl, relayout the decl.
2349
2350 2006-09-19  Eric Christopher  <echristo@apple.com>
2351
2352         * objc-act.c (JBLEN): Rename to OBJC_JBLEN,
2353         default to something innocuous.
2354         (build_next_objc_exception_stuff): Rename JBLEN.
2355
2356 2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2357
2358         * Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.
2359
2360 2006-07-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2361
2362         PR obj-c++/28434
2363         * objc-act.c (lookup_and_install_protocols): Skip error_mark_nodes.
2364
2365 2006-06-06  Mike Stump  <mrs@apple.com>
2366
2367         * objc-act.c: Remove prototype for objc_build_volatilized_type.
2368
2369 2006-05-24  Mike Stump  <mrs@apple.com>
2370
2371         * objc-act.c (build_next_objc_exception_stuff): Use JBLEN instead of _JBLEN.
2372
2373 2006-05-05  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
2374
2375         PR objc/27240
2376         * objc-act.c (objc_is_public): Return early on invalid type.
2377
2378 2006-03-02 Fariborz Jahanian <fjahanian@apple.com>
2379
2380         * objc-act.c (init_module_descriptor): Remove file name from
2381         module descriptor.
2382         (gen_type_name_0): Fix ICE when issuing warning.
2383
2384 2006-02-20 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
2385         * Make-lang.in (OBJC): Remove
2386         (OBJECTIVE-C): Remove
2387         (objective-c): Remove
2388         (.PHONY): Remove objective-c and ObjC
2389
2390 2005-12-14  Andrew Pinski  <pinskia@physics.uc.edu>
2391
2392         PR objc/25360
2393         * objc/objc-act.c (encode_type): Encode Complex types as 'j' followed
2394         by the inner type.
2395
2396 2005-12-12  Andrew Pinski  <pinskia@physics.uc.edu>
2397
2398         PR objc/25348
2399         * objc-act.c (encode_array): Handle arrays to zero sized types.
2400
2401 2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
2402
2403         * Make-lang.in (objc.all.build, objc.install-normal): Remove.
2404
2405 2005-12-07  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
2406
2407         * Make-lang.in: Remove all dependencies on s-gtype.
2408
2409 2005-12-02  Richard Guenther  <rguenther@suse.de>
2410
2411         * objc-act.c (objc_build_exc_ptr, next_sjlj_build_enter_and_setjmp
2412         next_sjlj_build_exc_extract, next_sjlj_build_catch_list,
2413         next_sjlj_build_try_catch_finally, objc_begin_catch_clause,
2414         build_objc_method_call, objc_rewrite_function_call): Use buildN
2415         instead of build.
2416
2417 2005-10-20  Geoffrey Keating  <geoffk@apple.com>
2418
2419         * objc-act.c (synth_module_prologue): Clear TREE_NOTHROW
2420         on objc_msgSend and like builtin functions.
2421
2422 2005-10-17  Andreas Krebbel  <krebbel1@de.ibm.com>
2423
2424         * objc-act.c (objc_build_component_ref): Adjust call to
2425         finish_class_member_access_expr due to a changed prototype.
2426
2427 2005-08-31  Andrew Pinski  <pinskia@physics.uc.edu>
2428
2429         PR objc/23306
2430         * objc-act.c (generate_strings): Remove and move code to
2431         finish decl to ...
2432         (add_objc_string): here when creating a new string decl.
2433         (finish_objc): Don't call generate_strings.
2434
2435 2005-08-31  Andrew Pinski  <pinskia@physics.uc.edu>
2436
2437         PR objc/23381
2438         * objc-act.c (next_sjlj_build_try_catch_finally): Set
2439         TREE_SIDE_EFFECTS on catch_seq after building it.
2440
2441 2005-08-09  Andrew Pinski  <pinskia@physics.uc.edu>
2442
2443         part of PR objc/21992
2444         * objc-act.c (handle_class_ref): The ref decl is always referenced.
2445
2446 2005-07-20  Giovanni Bajo  <giovannibajo@libero.it>
2447
2448         Make CONSTRUCTOR use VEC to store initializers.
2449         * objc-act.c (objc_build_constructor): Use build_constructor_from_list
2450         instead of build_constructor.
2451
2452 2005-07-08  Daniel Berlin  <dberlin@dberlin.org>
2453
2454         * objc-act.c (objc_push_parm): DECL_ARG_TYPE_AS_WRITTEN is
2455         removed.
2456         * objc-act.h (KEYWORD_ARG_NAME): Use decl_non_common.
2457         (KEYWORD_KEY_NAME): Use decl_minimal.
2458         (METHOD_SEL_NAME): Ditto..
2459         (METHOD_SEL_ARGS): Use decl_non_common.
2460         (METHOD_ADD_ARGS): Ditto.
2461         (METHOD_ADD_ARGS_ELLIPSIS_P): Use decl_common.
2462         (METHOD_DEFINITION): Ditto.
2463         (METHOD_ENCODING): Ditto.
2464         * objc-lang.c: (objc_init_ts): New function.
2465
2466 2005-07-07  Ziemowit Laski  <zlaski@apple.com>
2467
2468         * objc-act.c (objc_build_struct): Pass in an actual @interface
2469         instead of its name, and annotate the struct created (and all
2470         existing variants thereof) with the @interface.
2471         (objc_compare_types): Treat forward-declared ObjC classes
2472         as stand-alone (root) classes for purposes of type comparisons.
2473         (build_private_template): Move some code to objc_build_struct().
2474
2475 2005-07-07  Ziemowit Laski  <zlaski@apple.com>
2476
2477         PR objc/22274
2478         * objc-act.c (objc_build_string_object): For GNU-style constants,
2479         use the @interface type rather than the built-in type.
2480
2481 2005-07-03  Kazu Hirata  <kazu@codesourcery.com>
2482
2483         * Make-lang.in (cc1plus-checksum.c): Use
2484         build/genchecksum$(build_exeext), not build/genchecksum$(exeext).
2485
2486 2005-07-02  Joseph S. Myers  <joseph@codesourcery.com>
2487
2488         * objc-act.c: Use %q to quote in diagnostics.
2489
2490 2005-07-02  Joseph S. Myers  <joseph@codesourcery.com>
2491
2492         * objc-act.c: Use '+' flag instead of %J.  Use 'q' flag for
2493         quoting.
2494
2495 2005-06-30  Ziemowit Laski  <zlaski@apple.com>
2496
2497         * objc-act.c (objc_build_volatilized_type): New function.
2498         (objc_volatilize_decl): Call objc_build_volatilized_type()
2499         instead of build_qualified_type().
2500
2501 2005-06-29  Ziemowit Laski  <zlaski@apple.com>
2502
2503         * objc-act.c (objc_build_internal_const_str_type): New function.
2504         (check_string_class_template): Use objc_get_class_ivars() instead
2505         of TYPE_FIELDS() to retrieve ivar list.
2506         (AT_LEAST_AS_LARGE_AS): Check the size of each field's type rather
2507         than the field itself.
2508         (objc_build_string_object): Synthesize a "__builtin_ObjCString"
2509         type and use it to lay out compile-time string objects.
2510         * objc-act.h (OCTI_INTERNAL_CNST_STR_TYPE, internal_const_str_type):
2511         New.
2512
2513 2005-06-28  Paul Brook  <paul@codesourcery.com>
2514
2515         * objc-act.c (objc_init_exceptions): Call
2516         default_init_unwind_resume_libfunc.
2517
2518 2005-06-27  Ziemowit Laski  <zlaski@apple.com>
2519
2520         * objc-act.c (objc_build_struct): Save the TYPE_OBJC_INFO
2521         portion of TYPE_LANG_SPECIFIC info for all variants of
2522         a class before calling finish_struct(), and restore
2523         same TYPE_OBJC_INFO afterwards.
2524
2525 2005-06-25  Kelley Cook  <kcook@gcc.gnu.org>
2526
2527         * all files: Update FSF address in copyright headers.
2528
2529 2005-06-15  Joseph S. Myers  <joseph@codesourcery.com>
2530
2531         * objc-act.c (my_build_string_pointer): New.
2532         (objc_get_class_reference, get_super_receiver): Call
2533         my_build_string_pointer instead of my_build_string when building
2534         function arguments.
2535
2536 2005-05-25  Mike Stump  <mrs@mrs.kithrup.com>
2537
2538         * objc-act.c (volatilized_hash): Avoid warnings on 64-bit
2539         machines.
2540
2541 2005-05-24  Ziemowit Laski  <zlaski@apple.com>
2542
2543         * objc-act.c (objc_build_struct): New function.
2544         (objc_derived_from_p): Likewise.
2545         (objc_build_component_ref): Likewise.
2546         (objc_copy_binfo): Likewise.
2547         (objc_xref_basetypes): Likewise.
2548         (objc_lookup_protocol): Likewise.
2549         (objc_compare_protocols): Likewise.
2550         (objc_volatilize_decl): Likewise.
2551         (encode_aggregate_fields): Likewise.
2552         (volatilized_hash): Likewise.
2553         (volatilized_eq): Likewise.
2554         (objc_compare_types): Likewise.
2555         (objc_type_quals_match): Likewise.
2556         (DERIVED_FROM_P): New ObjC macro, corresponding to C++ macro
2557         of same name.
2558         (get_class_ivars): Add second parameter indicating if entire
2559         hierarchy is desired.
2560         (struct volatilized_type): New type.
2561         (volatilized_htab): New hash table.
2562         (objc_types_compatible_p, objc_comptypes): Remove functions.
2563         (synth_module_prologue): Do not initialize 'unused_list'.
2564         (objc_get_class_reference): Fix ObjC++ impedance mismatches.
2565         (objc_declare_alias): Implement as a typedef.
2566         (objc_substitute_decl, objc_gimplify_expr): Reformat.
2567         (objc_get_class_ivars): Adjust call to get_class_ivars().
2568         (next_sjlj_build_enter_and_setjmp, synth_forward_declarations,
2569         build_ivar_reference, get_super_receiver): Call
2570         objc_build_component_ref() instead of build_component_ref().
2571         (objc_begin_catch_clause): Use DERIVED_FROM_P() instead of
2572         objc_comptypes().
2573         (build_private_template): Call objc_build_struct() instead of
2574         start_struct() and finish_struct().
2575         (hash_init): Initialize volatilized_htab.
2576         (objc_is_public): Adjust calls to objc_get_ivars(); adjust
2577         ObjC++ impedance mismatches.
2578         (encode_aggregate_within): Streamline by calling
2579         encode_aggregate_fields().
2580         * objc-act.h (objc_types_compatible_p): Remove prototype.
2581         (OCTI_UNUSED_LIST, unused_list): Remove slot.
2582         * objc-lang.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Remove.
2583
2584 2005-05-18  Geoffrey Keating  <geoffk@apple.com>
2585
2586         * Make-lang.in (cc1obj-dummy): New.
2587         (cc1obj-checksum.c): New.
2588         (cc1obj-checksum.o): New.
2589         (cc1obj): Add cc1obj-checksum.o.
2590
2591 2005-05-18  Mike Stump  <mrs@apple.com>
2592
2593         PR objc/21641
2594         * objc-act.c (struct interface_tuple): Mark it up for GC.
2595         (interface_htab): It is really a struct interface_tuple.
2596
2597 2005-05-17  Ziemowit Laski  <zlaski@apple.com>
2598             Mike Stump  <mrs@apple.com>
2599
2600         Yet more Objective-C++...
2601
2602         * objc-act.c (objc_finish_try_stmt): Add return value.
2603         (objc_build_synchronized): Likewise.
2604
2605         * objc-act.c (objc_is_gcable_type): Add.
2606         (objc_substitute_decl): Add.
2607         (objc_build_ivar_assignment): Add.
2608         (objc_build_global_assignment): Add.
2609         (objc_build_strong_cast_assignment): Add.
2610         (objc_is_ivar_reference_p): Add.
2611         (objc_is_global_reference_p): Add.
2612         (objc_generate_write_barrier): Add.
2613         (objc_rewrite_function_call): Add.
2614         (objc_gimplify_expr): Add Objective-C++ support.
2615         * objc-act.h (ALLOC_OBJC_TYPE_LANG_SPECIFIC): Likewise.
2616         (SIZEOF_OBJC_TYPE_LANG_SPECIFIC): Add.
2617         (INIT_TYPE_OBJC_INFO): Add Objective-C++ support.
2618         (DUP_TYPE_OBJC_INFO): Likewise.
2619         (struct imp_entry): Add field has_cxx_cdtors.
2620         (struct imp_entry *imp_list): Add OCTI_UMSG_FAST_DECL,
2621         OCTI_METH_LIST_TEMPL, OCTI_METH_PROTO_LIST_TEMPL,
2622         OCTI_IVAR_LIST_TEMPL, OCTI_ASSIGN_IVAR_DECL,
2623         OCTI_ASSIGN_IVAR_FAST_DECL, OCTI_ASSIGN_GLOBAL_DECL,
2624         OCTI_ASSIGN_STRONGCAST_DECL.
2625         (umsg_fast_decl): Add.
2626         (objc_assign_ivar_decl): Add.
2627         (objc_assign_ivar_fast_decl): Add.
2628         (objc_assign_global_decl): Add.
2629         (objc_assign_strong_cast_decl): Add.
2630         (objc_method_list_ptr): Add.
2631         (objc_method_proto_list_ptr): Add.
2632         (objc_ivar_list_ptr): Add.
2633
2634         * objc-act.c (should_call_super_dealloc): Add.
2635         (OBJC_VERSION): Bump to 6.
2636         (objc_is_gcable_type): Add.
2637         (objc_substitute_decl): Add.
2638         (objc_build_ivar_assignment): Add.
2639         (objc_build_global_assignment): Add.
2640         (objc_build_strong_cast_assignment): Add.
2641         (objc_is_gcable_p): Add.
2642         (objc_is_ivar_reference_p): Add.
2643         (objc_is_global_reference_p): Add.
2644         (generate_shared_structures): Add flags parameter.
2645         (objc_generate_cxx_ctor_or_dtor): Add.
2646         (objc_generate_cxx_cdtors): Add.
2647         (add_class): Add name parameter.
2648         (objc_types_share_size_and_alignment): Add.
2649         (comp_proto_with_proto): Add strict parameter.
2650         (CLS_HAS_CXX_STRUCTORS): Add.
2651         (TAG_ASSIGNIVAR): Add.
2652         (TAG_ASSIGNGLOBAL): Add.
2653         (TAG_ASSIGNSTRONGCAST): Add.
2654         (TAG_MSGSEND_FAST): Add.
2655         (TAG_ASSIGNIVAR_FAST): Add.
2656         (TAG_CXX_CONSTRUCT): Add.
2657         (TAG_CXX_DESTRUCT): Add.
2658         (OBJC_LOOKUP_CLASS): Add.
2659         (OBJC_LOOKUP_NO_SUPER): Add.
2660         (objc_finish_file): Add pch support.
2661         (objc_finish_implementation): Add Objective-C++ support.
2662         (synth_module_prologue): Likewise.
2663         (synth_module_prologue): Add fast dispatching.
2664         (objc_get_class_reference): Add Objective-C++ support.
2665         (objc_generate_write_barrier): Likewise.
2666         (next_sjlj_build_enter_and_setjmp): Likewise.
2667         (objc_begin_try_stmt): Likewise.
2668         (build_next_objc_exception_stuff): Add fast ivar support.
2669         (build_private_template): Mark the record as used so debug
2670         information is generated.
2671         (build_protocol_template): Add Objective-C++ support.
2672         (objc_method_parm_type) Likewise.
2673         (objc_generate_cxx_ctor_or_dtor): Likewise.
2674         (objc_generate_cxx_cdtors): Likewise.
2675         (build_protocol_initializer): Likewise.
2676         (build_category_template): Likewise.
2677         (build_class_template): Likewise.
2678         (build_method_list_template): Likewise.
2679         (build_category_initializer): Likewise.
2680         (build_shared_structure_initializer): Likewise.
2681         (objc_finish_message_expr): Likewise.
2682         (build_objc_method_call): Add fast dispatch support.
2683         (lookup_method_static): Add support to end search at superclasses.
2684         (add_method_to_hash_list): Add strict parameter to
2685         comp_proto_with_proto.
2686         (objc_add_method): Likewise.
2687         (objc_add_method): Also set the interface_value.
2688         (add_instance_variable): Add Objective-C++ support.
2689         (objc_is_public): Likewise.
2690         (start_class): Likewise.
2691         (continue_class): Likewise.
2692         (encode_aggregate_within): Likewise.
2693         (start_method_def): Likewise.
2694         (objc_start_function): Clear current_function_returns_value
2695         and current_function_returns_null.
2696         (really_start_method): Add Objective-C++ support.
2697         (objc_finish_method_definition): Add warning for missing
2698         [super dealloc].
2699         (finish_objc): Add Objective-C++ support.
2700         (generate_objc_image_info): Likewise.
2701         (objc_lookup_ivar): Likewise.
2702         * objc-act.h (TYPE_HAS_OBJC_INFO): Likewise.
2703         (INIT_TYPE_OBJC_INFO): Likewise.
2704         (DUP_TYPE_OBJC_INFO): Likewise.
2705
2706 2005-04-23  DJ Delorie  <dj@redhat.com>
2707
2708         * objc-act.c: Adjust warning() callers.
2709
2710 2005-04-21  Roger Sayle  <roger@eyesopen.com>
2711
2712         * objc-act.h (METHOD_ADD_ARGS_ELLIPSIS_P): New macro for accessing
2713         this field of an objc method decl.
2714         * objc-act.c (build_method_decl): Take an additional "ellipsis"
2715         argument, and set METHOD_ADD_ARGS_ELLIPSIS_P as appropriate.
2716         (objc_build_method_signature): Accept additional "ellipsis"
2717         argument and pass it to build_method_decl.
2718         (get_arg_type_list, start_method_def, gen_method_decl): Use
2719         the new METHOD_ADD_ARGS_ELLIPSIS_P instead of examining the
2720         TREE_OVERFLOW field of a TREE_LIST node.
2721
2722 2005-04-20  Joseph S. Myers  <joseph@codesourcery.com>
2723
2724         PR c/12913
2725         * objc-act.c (objc_start_function): Create stack level for context
2726         of identifiers with variably modified type.
2727
2728 2005-03-30  Joseph S. Myers  <joseph@codesourcery.com>
2729
2730         PR c/772
2731         PR c/17913
2732         * objc-act.c (objc_start_function): Push context on
2733         label_context_stack.
2734
2735 2005-03-23  Joseph S. Myers  <joseph@codesourcery.com>
2736
2737         * objc-act.c (next_sjlj_build_enter_and_setjmp,
2738         next_sjlj_build_catch_list, next_sjlj_build_try_catch_finally):
2739         Call c_common_truthvalue_conversion.
2740
2741 2005-02-25  Joseph S. Myers  <joseph@codesourcery.com>
2742
2743         * Make-lang.in (objc/objc-parse.o-warn, objc/objc-parse.o,
2744         objc/objc-parse.c, objc/objc-parse.y): Remove
2745         (OBJC_OBJS, objc.srcextra, objc.tags, objc.mostlyclean,
2746         objc.distclean, objc.maintainer-clean): Update for new parser.
2747         * config-lang.in (gtfiles): Update for new parser.
2748
2749 2005-01-29  Kazu Hirata  <kazu@cs.umass.edu>
2750
2751         * lang-specs.h, objc-act.c, objc-act.h, objc-lang.c: Update
2752         copyright.
2753
2754 2005-01-27  Matt Austern  <austern@apple.com>
2755
2756         * objc-act.c (objc_finish_file): In ObjC++ mode, set at_eof before
2757         calling instantiate_pending_templates.
2758
2759 2005-01-26  Alexander Malmberg  <alexander@malmberg.org>
2760
2761         PR objc/18862
2762         * objc-act.c (build_selector_translation_table): Use
2763         input_location in the diagnostic for the GNU runtime or if
2764         TREE_PURPOSE (chain) is NULL.
2765
2766 2005-01-25  Alexander Malmberg  <alexander@malmberg.org>
2767
2768         PR objc/18408
2769         * objc-act.c (objc_types_compatible_p): New function.
2770         * objc-act.h (objc_types_compatible_p): Declare.
2771         * objc-lang.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Define.
2772
2773 2005-01-16  Ziemowit Laski  <zlaski@apple.com>
2774
2775         * objc-act.c (objc_push_parm): Call c_type_promotes_to()
2776         via a lang-hook.
2777
2778 2005-01-15  Ziemowit Laski  <zlaski@apple.com>
2779
2780         PR objc/19321
2781         * objc-act.c (get_arg_type_list): Decay function arguments into
2782         pointers.
2783         (objc_push_parm): Likewise; bring PARM_DECL construction closer
2784         in line with what the C front-end does.
2785         (objc_get_parm_info): Call pushdecl() and finish_decl() on
2786         each PARM_DECL, like the C front-end does.
2787         (start_method_def): Remove redundant ARRAY_TYPE decay.
2788         (objc_start_function): Bring closer in line with what the
2789         C front-end does for functions.
2790
2791 2005-01-14  Mike Stump  <mrs@apple.com>
2792
2793         * lang-specs.h ("@objective-c"): Use cc1obj when -E is used so
2794         that -fobjc-exceptions is accepted.
2795
2796 2004-12-30  Ziemowit Laski  <zlaski@apple.com>
2797
2798         PR objc/18971
2799         * objc-act.c (get_arg_type_list, start_method_def): Decay
2800         array arguments into pointers.
2801         (gen_type_name_0): Learn to pretty-print array types.
2802
2803 2004-12-15  Ziemowit Laski  <zlaski@apple.com>
2804
2805         * objc-act.c (build_private_template): Change to return 'void'; do
2806         not set ivar_context, uprivate_record or objc_instance_type.
2807         (objc_comptypes, gen_type_name_0): For types 'id' and 'Class',
2808         retrieve protocol list from the pointee rather than the pointer itself;
2809         check TYPE_HAS_OBJC_INFO(...) precondition before accessing
2810         TYPE_OBJC_PROTOCOL_LIST.
2811         (objc_get_protocol_qualified_type): For types 'id' and 'Class',
2812         construct a variant of the pointee as well as the pointer, and
2813         store protocol information in the former.  When creating variants
2814         of RECORD_TYPEs, clone their TYPE_LANG_SPECIFIC fields and propagate
2815         TYPE_OBJC_INTERFACE information.
2816         (objc_declare_class): If a TYPE_DECL is looked up, retrieve the
2817         underlying RECORD_TYPE to check for presence of TYPE_OBJC_INTERFACE;
2818         for newly-created RECORD_TYPEs, create a tentative TYPE_OBJC_INTERFACE
2819         holding an IDENTIFIER_NODE.
2820         (objc_finish_message_expr): Check TYPE_HAS_OBJC_INFO(...) before
2821         accessing TYPE_OBJC_PROTOCOL_LIST; Use TYPE_OBJC_INTERFACE instead
2822         of calling lookup_interface(); allow for TYPE_OBJC_INTERFACE holding
2823         an IDENTIFIER_NODE (meaning a @class forward-declaration only).
2824         (objc_is_public): Check TYPE_OBJC_INTERFACE instead of calling
2825         lookup_interface().
2826         (continue_class): For @implementations, set ivar_context,
2827         uprivate_record and objc_instance_type, for @interfaces, call
2828         build_private_template().
2829         (encode_pointer): Check TYPE_HAS_OBJC_INFO(...) before accessing
2830         TYPE_OBJC_INTERFACE.
2831         (objc_types_are_equivalent): Check TYPE_HAS_OBJC_INFO(...) before
2832         accessing TYPE_OBJC_PROTOCOL_LIST.
2833         * objc-act.h (OBJC_INFO_SLOT_ELTS, TYPE_OBJC_INFO, INIT_TYPE_OBJC_INFO,
2834         DUP_TYPE_OBJC_INFO, ALLOC_OBJC_TYPE_LANG_SPECIFIC,
2835         SIZEOF_OBJC_TYPE_LANG_SPECIFIC): New macros.
2836         (TYPE_OBJC_INTERFACE): Replaces TREE_STATIC_INSTANCE and now points
2837         to an actual @interface; stored in TYPE_LANG_SPECIFIC(...).
2838         (TYPE_OBJC_PROTOCOL_LIST): Replaces TYPE_PROTOCOL_LIST; stored in
2839         TYPE_LANG_SPECIFIC(...).
2840         (TREE_STATIC_INSTANCE, TYPE_PROTOCOL_LIST): Delete.
2841         (IS_ID, IS_CLASS, IS_PROTOCOL_QUALIFIED_UNTYPED, IS_SUPER,
2842         TYPED_OBJECT): Check for POINTER_TYPE rather than POINTER_TYPE_P;
2843         adjust for use of TYPE_OBJC_INTERFACE and TYPE_OBJC_PROTOCOL_LIST
2844         instead of TREE_STATIC_INSTANCE and TYPE_PROTOCOL_LIST.
2845
2846 2004-11-29  Joseph Myers  <joseph@codesourcery.com>
2847
2848         PR c/7544
2849         * Make-lang.in (objc/objc-act.o): Update dependencies.
2850         * objc-act.c (objc_finish_file): Call
2851         maybe_apply_pending_pragma_weaks if not OBJCPLUS.
2852
2853 2004-11-09  Andrew Pinski  <pinskia@physics.uc.edu>
2854
2855         PR objc/18406
2856         * obj-act.c (encode_type): 96bits doubles are encoded the
2857         same way as 64bit and 128bit doubles are.
2858
2859 2004-11-09  Joseph S. Myers  <joseph@codesourcery.com>
2860
2861         * objc-act.c: Use %q, %< and %> for quoting in diagnostics.
2862
2863 2004-11-08  Andrew Pinski  <pinskia@physics.uc.edu>
2864
2865         PR objc/16546
2866         * objc-act.c (generate_method_descriptors): Remove setting
2867         the new decls' type to variable_length_type.
2868         (generate_ivar_lists): Likewise.
2869         (generate_dispatch_tables): Likewise.
2870
2871 2004-10-30  Ziemowit Laski  <zlaski@apple.com>
2872
2873         * objc-act.c (objc_lookup_ivar): The new OTHER parameter
2874         contains the result of the ID lookup by the C or C++
2875         front-end; in class methods, use OTHER if it exists;
2876         in instance methods, use OTHER only if it is locally
2877         declared.
2878
2879 2004-10-26  Ziemowit Laski  <zlaski@apple.com>
2880
2881         * objc-act.c (finish_class): Do not synthesize bogus
2882         'extern objc_object *_Foo;' declarations for @interface Foo.
2883
2884 2004-10-25  Ziemowit Laski  <zlaski@apple.com>
2885             David Ayers  <d.ayers@inode.at>
2886
2887         * objc-act.c (objc_comptypes): Use IS_PROTOCOL_QUALIFIED_UNTYPED
2888         instead of IS_PROTOCOL_QUALIFIED_ID; add comparisons for:
2889         'Class <Protocol> != id <Protocol>'; 'Class <Protocol> != <class> *';
2890         'Class <Protocol> == id' and 'Class <Protocol> == Class'.
2891         (objc_is_id): Add test for 'super'.
2892         (objc_finish_message_expr): Allow for messaging of 'Class <Proto>'
2893         receivers; if class methods are not found in protocol lists, search
2894         for instance methods therein and warn if one is found.  Look in
2895         global hash tables for suitable method as a last resort when messaging
2896         'id <Proto>', 'Class <Proto>' and invalid receiver types.
2897         (objc_add_method): Insert instance methods listed in protocols into
2898         the global class method hash table.
2899         * objc-act.h (IS_PROTOCOL_QUALIFIED_ID): Rename to
2900         IS_PROTOCOL_QUALIFIED_UNTYPED and allow for 'Class <Proto>' in
2901         addition to 'id <Proto>'.
2902
2903 2004-10-21  Andrew Pinski  <pinskia@physics.uc.edu>
2904
2905         PR objc/17923
2906         * objc-act.c (objc_build_string_object): Create a CONST_DECL
2907         for the NeXT runtime case.
2908
2909 2004-10-02  Kazu Hirata  <kazu@cs.umass.edu>
2910
2911         * objc-act.c: Fix comment typos.
2912
2913 2004-09-24  Ziemowit Laski  <zlaski@apple.com>
2914
2915         * objc-act.c (init_objc_symtab, init_module_descriptor,
2916         build_shared_structure_initializer): When initializing 'long'
2917         fields, ensure that the initializer value is also 'long'.
2918
2919 2004-09-24  Zack Weinberg  <zack@codesourcery.com>
2920
2921         * objc-act.c: Change annotate_with_locus to SET_EXPR_LOCATION
2922         throughout.
2923         (objc_init): Only set input_line to 0 #ifndef USE_MAPPED_LOCATION.
2924         (build_selector_translation_table): Use %J in diagnostic
2925         instead of diddling input_line.  Fix spelling.
2926
2927 2004-09-21  Ziemowit Laski  <zlaski@apple.com>
2928
2929         * objc-act.c (objc_fold_objc_type_ref): New function.
2930         * objc-act.h (objc_fold_objc_type_ref): New prototype.
2931
2932 2004-09-09  Joseph S. Myers  <jsm@polyomino.org.uk>
2933
2934         * objc-act.c (objc_start_function, really_start_method,
2935         objc_get_parm_info, start_method_def): Update to new arg_info
2936         structures.
2937
2938 2004-09-07  Ziemowit Laski  <zlaski@apple.com>
2939
2940         * Make-lang.in (objc/objc-parse.o): Depend on $(C_COMMON_H) instead of
2941         objc/objc-act.h.
2942         (objc/objc-act.o): Depend on $(HASHTAB_H).
2943         * objc-act.c: Include hashtab.h; in ObjC++ mode, include cp-tree.h and
2944         objcp-decl.h instead of c-tree.h.
2945         (build_module_descriptor, get_class_ivars, synth_id_with_class_suffix,
2946         error_with_ivar, gen_method_decl, gen_declaration, setup_string_decl,
2947         build_protocol_template): Adjust prototypes.
2948         (build_module_initializer_routine, start_class, continue_class,
2949         finish_class, start_method_def, objc_start_function, start_protocol,
2950         build_method_decl, objc_add_method, add_instance_variable,
2951         build_ivar_reference, is_ivar, is_private, get_super_receiver,
2952         build_selector_table_decl, objc_push_parm, objc_get_parm_info,
2953         gen_type_name, gen_type_name_0, start_var_decl, finish_var_decl,
2954         create_field_decl): New prototypes.
2955         (objc_expand_function_end, comp_method_with_proto, objc_expr_last,
2956         gen_declaration_1, gen_declarator, is_complex_decl, adorn_decl,
2957         define_decl, create_builtin_decl, gen_declspecs): Remove prototypes.
2958         (TYPE_ID): Rename to OBJECT_TYPEDEF_NAME.
2959         (CLASS_TYPEDEF_NAME): New.
2960         (TAG_EXECCLASS): Change from a global variable to a #define.
2961         (TAG_RETURN_STRUCT): Delete.
2962         (TAG_GNUINIT): New, holds '__objc_gnu_init' name.
2963         (objc_inherit_code, objc_public_flag): New, moved from c-parse.in.
2964         (string_descriptor): New struct.
2965         (string_htab): New hash table.
2966         (string_hash, string_eq): New prototypes.
2967         (generate_struct_by_value_array): Call create_field_decl() instead of
2968         create_builtin_decl().
2969         (objc_init): Do not initialize objc_ellipsis_node or TAG_EXECCLASS;
2970         In ObjC++ mode, call cxx_init() instead of c_objc_common_init().
2971         (objc_finish_file): In ObjC++, call instantiate_pending_templates()
2972         and cp_finish_file().
2973         (define_decl, get_static_reference, get_protocol_reference,
2974         create_builtin_decl): Remove functions.
2975         (objc_start_class_interface, objc_start_category_interface,
2976         objc_start_protocol, objc_continue_interface, objc_finish_interface,
2977         objc_start_class_implementation, objc_start_category_implementation,
2978         objc_continue_implementation, objc_finish_implementation,
2979         objc_set_visibility, objc_set_method_type,
2980         objc_build_method_signature, objc_add_method_declaration,
2981         objc_start_method_definition, objc_add_instance_variable,
2982         objc_get_protocol_qualified_type, create_field_decl,
2983         start_var_decl, finish_var_decl): New functions.
2984         (setup_string_decl): Simplify since it is only called once.
2985         (synth_module_prologue): Call build_class_template(); predefine 'id'
2986         and 'Class' as typedefs; rename 'temp_type' to 'type'; disable debug
2987         hooks for duration of function; fix GNU runtime messenger signatures
2988         to correspond to reality; forward-declare '__objc_exec_class' for the
2989         GNU runtime; call build_selector_table_decl(); in ObjC++ mode, generate
2990         'extern "C" { ... }' wrappers around synthesized declarations; call
2991         build_protocol_template() and build_category_template().
2992         (string_hash, string_eq): New functions.
2993         (objc_build_string_object): Check metaclass correctness only once;
2994         store string literals in hash table.
2995         (objc_build_constructor): Do not convert initializer elements;
2996         adjust for ObjC++ impedance mismatch.
2997         (build_objc_symtab_template): Call create_field_decl() instead of
2998         create_builtin_decl().
2999         (init_objc_symtab): Add missing conversion to initializer element.
3000         (build_metadata_decl): Call start_var_decl() instead of define_decl().
3001         (generate_objc_symtab_decl): Do not call build_category_template();
3002         call start_var_decl() and finish_var_decl() instead of start_decl()
3003         and finish_decl().
3004         (build_module_descriptor): Call create_field_decl() instead of
3005         grokfield(); call start_var_decl() and finish_var_decl() instead of
3006         start_decl() and finish_decl(); always mark module descriptor as
3007         used; move GNU runtime-specific functionality to
3008         build_module_initializer_routine().
3009         (build_module_initializer_routine): New function, broken off of
3010         build_module_descriptor().
3011         (objc_static_init_needed_p, objc_generate_static_init_call): New
3012         functions.
3013         (generate_static_references, generate_strings,
3014         build_selector_translation_table, generate_descriptor_table,
3015         generate_ivars_list, generate_dispatch_table, generate_category): Call
3016         start_var_decl() and finish_var_decl() instead of start_decl() and
3017         finish_decl(); build a type directly instead of via groktypename().
3018         (build_selector_reference_decl, build_selector_table_decl,
3019         build_class_reference_decl, build_protocol_reference,
3020         generate_objc_image_info): Call start_var_decl() instead of
3021         build_decl().
3022         (build_selector_reference): For GNU runtime, do not call
3023         build_selector_reference_decl().
3024         (build_selector, build_typed_selector_reference): Always convert
3025         result to the selector type.
3026         (add_objc_string): Cast return value to 'char *'.
3027         (build_method_prototype_template, build_selector_template,
3028         build_method_template): Use actual selector type for fields
3029         pointing to selectors.
3030         (finish_objc): For GNU runtime, call
3031         build_module_initializer_routine() after build_module_descriptor().
3032         (generate_protocol_list, generate_shared_structures): Call
3033         start_var_decl() and finish_var_decl() instead of start_decl() and
3034         finish_decl(); build a type directly instead of via
3035         groktypename().
3036         (synth_id_with_class_suffix): Return a string.
3037         (get_arg_type_list): For instance methods, use the instance type for
3038         'self'; do not call groktypename_in_parm_context().
3039         (build_objc_string_decl): Squash redeclaration errors in ObjC++.
3040         (objc_is_class_name): Use OBJC_TYPE_NAME instead of TYPE_NAME;
3041         handle RECORD_TYPEs in ObjC as well as ObjC++.
3042         (objc_is_id): New function.
3043         (objc_is_object_ptr): Return the canonical type node.
3044         (objc_get_class_ivars): Simplify using get_class_ivars().
3045         (get_class_ivars): Remove second parameter; create a fresh copy
3046         of the ivar list for each call; do not check for existence of
3047         super class.
3048         (objc_eh_runtime_type): Mark #ifndef OBJCPLUS.
3049         (objc_init_exceptions): When using SJLJ-style exceptions, require
3050         the use of '-fobjc-exceptions' flag; do not require it for DWARF-style
3051         exceptions.
3052         (objc_build_exc_ptr, next_sjlj_build_try_catch_finally): Use
3053         objc_object_type instead of objc_id_type.
3054         (objc_begin_catch_clause): Convert the incoming PARM_DECL into
3055         a VAR_DECL before placing it in the appropriate scope; do not
3056         call define_decl(); adjust call to c_begin_compound_stmt();
3057         use objc_object_type instead of objc_id_type.
3058         (build_next_objc_exception_stuff): Call create_field_decl() instead
3059         of create_builtin_decl(); construct type directly instead of calling
3060         groktypename(); use OBJC_VOID_AT_END to mark end of function parameters.
3061         (build_private_template): Adjust call to get_class_ivars(); build
3062         a type directly instead of via groktypename().
3063         (build_protocol_template, build_method_prototype_list_template,
3064         build_method_prototype_template, build_category_template,
3065         build_selector_template, build_class_template, build_super_template,
3066         build_ivar_template, build_ivar_list_template,
3067         build_method_list_template, build_method_template):
3068         Call create_field_decl() instead of grokfield().
3069         (objc_method_parm_type): Do not call groktypename().
3070         (generate_descriptor_table): Call start_var_decl() and
3071         finish_var_decl() instead of start_decl() and finish_decl().
3072         (generate_method_descriptors, build_protocol_initializer,
3073         generate_dispatch_tables, build_category_initializer,
3074         build_shared_structure_initializer): Do not call groktypename().
3075         (generate_protocols): Call start_var_decl() and finish_var_decl()
3076         instead of start_decl() and finish_decl(); do not call groktypename().
3077         (error_with_ivar): Remove last parameter.
3078         (check_ivars): Do not iterate ovar CLASS_RAW_IVARS lists in addition
3079         to CLASS_IVARS lists; adjust calls to error_with_ivar().
3080         (generate_ivar_lists): Convert one of the initializer elements; do
3081         not call groktypename().
3082         (get_arg_type_list, start_method_def, gen_method_def): Account for
3083         new representation of variable arguments and '...' in Objective-C
3084         methods; add Objective-C++ impedance matching code.
3085         (is_objc_type_qualifier): Remove function.
3086         (adjust_type_for_id_default): Simplify; there is no longer a need to
3087         wade through declspecs.
3088         (lookup_interface, start_class, continue_class,
3089         finish_class, start_method_def, start_protocol, build_method_decl,
3090         objc_add_method, add_instance_variable, build_ivar_reference,
3091         is_ivar, is_private, get_super_receiver, objc_build_finally_epilogue):
3092         Make into static functions.
3093         (receiver_is_class_object): Use new IS_CLASS() macro.
3094         (objc_build_message_expr): Tweak ObjC++ message argument handling;
3095         call objc_finish_message_expr() instead of finish_message_expr().
3096         (finish_message_expr): Rename to objc_finish_message_expr(); use
3097         OBJC_TYPE_NAME and OBJC_SET_TYPE_NAME macros instead of TYPE_NAME.
3098         call gen_type_name() instead of gen_declaration(); call objc_is_id()
3099         instead of using IS_ID and IS_CLASS; Use objc_class_name instead of
3100         calling get_identifier("Class"); handle CONVERT_EXPRs in receiver.
3101         (build_objc_method_call, warn_with_method): Do not call groktypename().
3102         (build_ivar_reference): Call convert() instead of clobbering in a
3103         type.
3104         (hash_init): Initialize string_htab hash table.
3105         (add_instance_variable): Simplify parameter list; do not call grokfield();
3106         do not populate CLASS_IVARS list.
3107         (start_class): Check for the existence of super class, if one was specified.
3108         (continue_class): Use CLASS_RAW_IVARS rather than CLASS_IVARS; do not
3109         call build_class_template(); adjust call to get_class_ivars(); call
3110         build_decl(), pushdecl() and finish_decl() instead of define_decl().
3111         (finish_class): Call build_decl(), pushdecl() and finish_decl() instead
3112         of define_decl().
3113         (add_protocols): Use PROTOCOL_BINFO_ELTS for the tree vector size.
3114         (start_protocol): Do not call build_protocol_template(); use
3115         PROTOCOL_BINFO_ELTS for the tree vector size.
3116         (encode_type_qualifiers): Do not handle the 'const' qualifier here.
3117         (encode_pointer): Encode 'const char *' as 'r*', for backwards
3118         compatibility.
3119         (encode_array): Use HOST_WIDE_INT_PRINT_DEC instead of "%ld".
3120         (encode_type): Handle the 'const' qualifier here.
3121         (objc_parmlist): New global variable, sued by objc_push_parm and
3122         objc_get_parm_info().
3123         (objc_push_parm, objc_get_parm_info): New functions.
3124         (objc_expr_last): Remove function.
3125         (synth_self_and_ucmd_args): For instance methods, use the instance
3126         type for 'self'; call objc_push_parm() instead of push_parm_decl().
3127         (start_method_def): Do not call push_scope(), declare_parm_level(),
3128         pop_scope(), push_parm_decl(), store_parm_decls() or objc_expr_last();
3129         just use objc_push_parm() and objc_get_parm_info().
3130         (comp_method_with_proto): Remove function.
3131         (objc_types_are_equivalent): Strip away indirections before comparing
3132         underlying types.
3133         (comp_proto_with_proto): Do not call groktypename(); types are no
3134         longer in raw declspec format.
3135         (objc_start_function): New function.
3136         (really_start_method): Call comp_proto_with_proto() instead of
3137         comp_method_with_proto(); call objc_start_function() instead of
3138         hand-crafting a function declarator.
3139         (continue_method_def, objc_expand_function_end): Remove functions.
3140         (get_super_receiver): Call objc_get_current_scope() instead of
3141         get_current_scope(); reference 'super_class' field (instead of
3142         'class').
3143         (finish_method_def): Rename to objc_finish_method_definition() and
3144         add a function decl parameter; move method encoding call from
3145         objc_expand_function_end().
3146         (is_complex_decl, adorn_decl, gen_declarator, gen_declspecs,
3147         gen_declaration_1): Remove functions.
3148         (tmpbuf, RAW_DECLSPEC): Remove.
3149         (gen_declaration): Remove second parameter; simplify to deal
3150         with TYPE_P nodes instead of raw declspecs.
3151         (gen_type_name, gen_type_name_0): New functions.
3152         (gen_method_decl): Remove second parameter; call gen_type_name()
3153         instead of gen_declaration_1().
3154         (dump_interface): Adjust calls to gen_declaration() and
3155         gen_method_decl(); do not allocate a separate string buffer.
3156         (init_objc): Allocate a larger string buffer to accommodate
3157         dump_interface(); adjust call to build_module_descriptor();
3158         add call to build_module_initializer_routine() for the GNU
3159         runtime.
3160         (generate_classref_translation_entry): Do not call start_decl(); call
3161         finish_var_decl() instead of finish_decl(); call convert() instead of
3162         build_c_cast().
3163         * objc-act.h (CLASS_OWN_IVARS): Remove accessor.
3164         (CLASS_BINFO_ELTS): Reduce from 6 to 5, now that CLASS_OWN_IVARS is
3165         gone.
3166         (OCTI_GNU_INIT_DECL, GNU_INIT_decl): New.
3167         (OCTI_ELLIPSIS_NODE, objc_ellipsis_node): Remove.
3168         (OCTI_ID_ID, id_type, objc_id_id): Rename to OCTI_ID_NAME,
3169         objc_object_type and objc_object_name, respectively.
3170         (OCTI_CLS_REF, OCTI_CLASS_NAME, objc_class_reference,
3171         objc_class_name): New.
3172         (IS_CLASS): New macro.
3173         (IS_ID, IS_SUPER): Robustify.
3174         (OCTI_EXECCLASS_DECL, execclass_decl): New.
3175         (finish_file, start_class, continue_class, finish_class,
3176         start_method_def, continue_method_def, finish_method_def,
3177         start_protocol, finish_protocol, objc_build_throw_stmt,
3178         objc_build_try_catch_finally_stmt, objc_build_synchronized_prologue,
3179         objc_build_synchronized_epilogue, objc_build_try_prologue,
3180         objc_build_try_epilogue, objc_build_catch_stmt, objc_build_catch_epilogue,
3181         objc_build_finally_prologue, objc_build_finally_epilogue,
3182         is_ivar, is_private, is_public, add_instance_variable, objc_add_method,
3183         get_super_receiver, objc_clear_super_receiver, get_class_ivars_from_name,
3184         get_class_reference, get_static_reference, get_object_reference,
3185         build_message_expr, finish_message_expr, build_selector_expr,
3186         build_ivar_reference, build_keyword_decl, build_method_decl,
3187         build_protocol_expr, build_objc_string_object, objc_declare_alias,
3188         objc_declare_class, objc_declare_protocols, objc_comptypes,
3189         objc_check_decl, build_encode_expr): Remove prototypes.
3190         (imp_count, cat_count): Make GGC-aware.
3191         (OBJC_SET_TYPE_NAME): New macro.
3192
3193 2004-09-03  Ziemowit Laski  <zlaski@apple.com>
3194
3195         * config-lang.in: Update copyright notice.
3196         (lang_requires): Indicate that ObjC requires C to be built first.
3197
3198 2004-09-01  Ziemowit Laski  <zlaski@apple.com>
3199
3200         * objc-act.c (objc_check_decl): Use OBJC_TYPE_NAME macro instead of
3201         TYPE_NAME.
3202         (build_objc_string_object): Rename to objc_build_string_object().
3203         (get_class_reference): Rename to objc_get_class_reference().
3204         (get_class_ivars_from_name): Rename to objc_get_class_ivars().
3205         (next_sjlj_build_catch_list, get_super_receiver): Call
3206         objc_get_class_reference() instead of get_class_reference().
3207         (build_keyword_decl): Rename to objc_build_keyword_decl().
3208         (build_message_expr): Rename to objc_build_message_expr().
3209         (build_protocol_expr): Rename to objc_build_protocol_expr().
3210         (build_selector_expr): Rename to objc_build_selector_expr().
3211         (build_encode_expr): Rename to objc_build_encode_expr().
3212         * objc-act.h (get_class_ivars_from_name): Rename prototype to
3213         objc_get_class_ivars().
3214         (get_class_reference): Rename prototype to objc_get_class_reference().
3215         (build_message_expr): Rename prototype to objc_build_message_expr().
3216         (build_selector_expr): Rename prototype to objc_build_selector_expr().
3217         (build_keyword_decl): Rename prototype to objc_build_keyword_decl().
3218         (build_protocol_expr): Rename prototype to objc_build_prototype_expr().
3219         (build_objc_string_object): Rename prototype to
3220         objc_build_string_object().
3221
3222 2004-09-01  Ziemowit Laski  <zlaski@apple.com>
3223
3224         * objc-act.c (lookup_interface): Make function 'static' and add a
3225         local prototype.
3226         (objc_check_decl, get_class_reference, objc_declare_alias,
3227         objc_declare_class, objc_is_object_ptr): Call objc_is_class_name()
3228         instead of is_class_name().
3229         (get_super_receiver, objc_clear_super_receiver): Call
3230         objc_get_current_scope() instead of get_current_scope().
3231         (is_class_name): Rename to objc_is_class_name.
3232         (lookup_objc_ivar): Rename to objc_lookup_ivar.
3233
3234 2004-08-28  Ziemowit Laski  <zlaski@apple.com>
3235
3236         * objc-act.c (objc_is_reserved_word): New function.
3237
3238 2004-08-15  Ziemowit Laski  <zlaski@apple.com>
3239
3240         * Make-lang.in (objc/objc-lang.o): Depend on $(C_PRETTY_PRINT_H),
3241         $(DIAGNOSTIC_H), c-objc-common.h and gtype-objc.h, but not on toplev.h.
3242         (objc/objc-parse.o): Do not depend on gtype-objc.h.
3243         * objc-act.c: Do not include gtype-objc.h.
3244         (finish_file): Rename to objc_finish_file().
3245         * objc-act.h (finish_file): Update copyright notice; remove prototype.
3246         * objc-lang.c: Update copyright notice; include diagnostic.h,
3247         c-objc-common.h, c-pretty-print.h and gtype-objc.h; do not include
3248         toplev.h.
3249         (finish_file): New hook routine.
3250         (LANG_HOOKS_FINISH, LANG_HOOKS_INIT_OPTIONS,
3251         LANG_HOOKS_INITIALIZE_DIAGNOSTICS, LANG_HOOKS_HANDLE_OPTION,
3252         LANG_HOOKS_MISSING_ARGUMENT, LANG_HOOKS_POST_OPTIONS,
3253         LANG_HOOKS_GET_ALIAS_SET, LANG_HOOKS_SAFE_FROM_P,
3254         LANG_HOOKS_EXPAND_EXPR, LANG_HOOKS_MARK_ADDRESSABLE,
3255         LANG_HOOKS_PARSE_FILE, LANG_HOOKS_TRUTHVALUE_CONVERSION,
3256         LANG_HOOKS_FINISH_INCOMPLETE_DECL, LANG_HOOKS_UNSAFE_FOR_REEVAL,
3257         LANG_HOOKS_STATICP, LANG_HOOKS_SET_DECL_ASSEMBLER_NAME,
3258         LANG_HOOKS_NO_BODY_BLOCKS, LANG_HOOKS_WARN_UNUSED_GLOBAL_DECL,
3259         LANG_HOOKS_PRINT_IDENTIFIER, LANG_HOOKS_FUNCTION_ENTER_NESTED,
3260         LANG_HOOKS_FUNCTION_LEAVE_NESTED, LANG_HOOKS_DUP_LANG_SPECIFIC_DECL,
3261         LANG_HOOKS_DECL_UNINIT, LANG_HOOKS_RTL_EXPAND_STMT,
3262         LANG_HOOKS_COMMON_ATTRIBUTE_TABLE, LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE,
3263         LANG_HOOKS_TREE_INLINING_CANNOT_INLINE_TREE_FN,
3264         LANG_HOOKS_TREE_INLINING_DISREGARD_INLINE_LIMITS,
3265         LANG_HOOKS_TREE_INLINING_ANON_AGGR_TYPE_P,
3266         LANG_HOOKS_TREE_INLINING_CONVERT_PARM_FOR_INLINING,
3267         LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS,
3268         LANG_HOOKS_TREE_DUMP_DUMP_TREE_FN,
3269         LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION, LANG_HOOKS_TYPE_FOR_MODE,
3270         LANG_HOOKS_TYPE_FOR_SIZE, LANG_HOOKS_SIGNED_TYPE,
3271         LANG_HOOKS_UNSIGNED_TYPE, LANG_HOOKS_SIGNED_OR_UNSIGNED_TYPE,
3272         LANG_HOOKS_INCOMPLETE_TYPE_ERROR, LANG_HOOKS_TYPE_PROMOTES_TO,
3273         LANG_HOOKS_REGISTER_BUILTIN_TYPE, LANG_HOOKS_WRITE_GLOBALS):
3274         Move to c-objc-common.h.
3275
3276 \f
3277 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
3278 Free Software Foundation, Inc.
3279
3280 Copying and distribution of this file, with or without modification,
3281 are permitted in any medium without royalty provided the copyright
3282 notice and this notice are preserved.