OSDN Git Service

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