OSDN Git Service

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