ChangeLog.apple revision 261188
12008-11-07  Fariborz Jahanian <fjahanian@apple.com>
2
3	 Radar 5847976
4	* decl.c (synth_block_byref_id_object_copy_func): Takes new 'flag' argument
5	and produces the new much simplified API.
6	(synth_block_byref_id_object_dispose_func): Ditto.
7	(new_block_byref_decl): Turn off -fobjc-gc so we don't get
8	bogus warning on field declared as __weak.
9	(init_byref_decl): Takes a new 'flag' argument and passes
10	it down to synth_block_byref_id_object_copy_func and
11	synth_block_byref_id_object_dispose_func.
12	(cp_finish_decl): Calculates the flag for the block 
13	variable declaration and passes it down to init_byref_decl.
14	* parser.c (build_block_struct_initlist): Removes call to	
15	copy_in_object (not needed).
16	(synth_copy_helper_block_func): Produce the new, simplified
17	API.
18	(synth_destroy_helper_block_func): Ditto.
19	(build_block_byref_decl): Copy over COPYABLE_WEAK_BLOCK flag.
20	
212008-10-31  Fariborz Jahanian <fjahanian@apple.com>
22
23	 Radar 6175959
24	* parser.c (synth_copy_helper_block_func): Use the new API
25	_Block_object_assign for ObjC object copying.
26	(block_object_dispose): New
27	(synth_destroy_helper_block_func): Call block_object_dispose
28	to use new _Block_object_dispose API for ObjC object release.
29
302008-10-27  Fariborz Jahanian <fjahanian@apple.com>
31
32	 Radar 6231433
33	 * typeck.c (objc_compare_types, objc_have_common_type):
34	 Take an extra argument for better diagnostics.
35	* call.c: Ditto
36
372010-03-16  Fariborz Jahanian <fjahanian@apple.com>
38
39	 Radar 7760213
40	 * semantics.c (get_final_block_variable): Diagnose 
41	access of __block array.
42	
432010-03-12  Fariborz Jahanian <fjahanian@apple.com>
44
45	Radar 7735196
46	* cp/parser.c (build_block_struct_initlist): 
47	Set BLOCK_USE_STRET flag in block descriptor for
48	 blocks which return their aggregate value in memory.
49
502010-03-05  Fariborz Jahanian <fjahanian@apple.com>
51
52	 Radar 7721728
53	 * semantics.c  (get_final_block_variable): Diagnose
54	 importation of copied-in variables.
55
562009-02-11  Fariborz Jahanian <fjahanian@apple.com>
57
58	 Radar 6573923
59	 * decl.c (synth_block_byref_id_object_copy_func,
60	 synth_block_byref_id_object_dispose_func): Set BLOCK_BYREF_CALLER
61	 flag in call to copy/dispose helper functions.
62
632009-02-11  Fariborz Jahanian <fjahanian@apple.com>
64
65	 Radar 6545782
66	* semantics.c (get_final_block_variable): New
67	(finish_id_expression): Call get_final_block_variable.
68
692008-10-27  Fariborz Jahanian <fjahanian@apple.com>
70
71	 Radar 6302949
72	 * parser.c (objc_cp_parser_at_property): Warn on missing
73	 ',' separator for property attribute list.
74
752008-10-24  Fariborz Jahanian <fjahanian@apple.com>
76
77	 Radar 6305545
78	* semantics.c (expand_or_defer_fn): Lower nested function
79	of the structors.
80
812008-10-24  Fariborz Jahanian <fjahanian@apple.com>
82
83	 Radar 5847213 (minor tweak)
84	 * parser.c (build_block_descriptor_type):
85	 Make descriptor_ptr_type and descriptor_ptr_type_with_copydispose
86	 visible to pch.
87
882008-10-17  Fariborz Jahanian <fjahanian@apple.com>
89
90	 Radar 6289031
91	 * decl.c: Removed all code related to
92	 radar 6083129 (byref escapes).
93
942008-10-15  Fariborz Jahanian <fjahanian@apple.com>
95
96	 Radar 6271728
97	* parser.c (cp_parser_objc_method_definition_list): Method
98	definition always start with '{', or it is error.
99
1002008-10-14  Fariborz Jahanian <fjahanian@apple.com>
101
102	 Radar 6275956
103	* semantics.c (finish_this_expr): Reference to "this" in a block
104	must be looked up.
105
1062008-10-10  Fariborz Jahanian <fjahanian@apple.com>
107
108	Radar 5847213 - New Block ABI
109	
110	* typeck.c (build_block_call): New code gen for block call.
111	* parser.c (build_descriptor_block_decl) New
112	(build_block_struct_type): New block literal type.
113	(build_block_struct_initlist): New block literal initializers.
114	(build_block_literal_tmp): New block literal variable initialization.
115	(synth_copy_helper_block_func): Fixed a minor bug (unrelated to this radar).
116	(build_block_internal_types): Removed.
117	(build_block_descriptor_type): New routine to build build descriptor type.
118	(make_block_pointer_declarator): Unnecessary code is removed.
119	
1202008-10-02  Fariborz Jahanian <fjahanian@apple.com>
121
122	 Radar 6246527
123	 * parser.c (cp_parser_block_literal_expr): Call to do the delta
124	 on printf attribute.
125
1262008-09-30  Fariborz Jahanian <fjahanian@apple.com>
127
128	 Radar 6230297
129	* c-parser.c (build_block_struct_initlist): 'trivial' 
130	block temporary can be static as well.
131	(build_block_literal_tmp): Accomodate 'trivial' block
132	literal temporary variable as static.
133
1342008-09-30  Fariborz Jahanian <fjahanian@apple.com>
135
136	 Radar 6230297
137	 * parser.c (build_block_struct_initlist): 'trivial' 
138	 block temporary can be static as well.
139	 (build_block_literal_tmp): Accomodate 'trivial' block
140	 literal temporary variable as static.
141
1422008-09-30  Fariborz Jahanian <fjahanian@apple.com>
143
144	 Radar 6225809
145	 * parser.c (build_block_byref_decl): Add __block vaiables
146	 to intervening blocks.
147
1482008-09-29  Fariborz Jahanian <fjahanian@apple.com>
149
150	 Radar 6154598
151	tree.c (maybe_dummy_object): Build expression for
152	 copied in "this" in the block.
153
1542008-09-26  Fariborz Jahanian <fjahanian@apple.com>
155
156	Radar 6243400
157	* parser.c (build_block_struct_type): Mostly rewritten
158	to use C++'s API for building block's main struct so structors
159	for those data members requiring them are synthesized and
160	used.
161
1622008-09-25  Fariborz Jahanian <fjahanian@apple.com>
163
164	 Radar 6244520
165	 * decl.c (new_block_byref_decl): New field added to
166	 struct __Block_byref_x.
167	 (init_byref_decl): Above field initialized to NULL.
168
1692008-09-25  Fariborz Jahanian <fjahanian@apple.com>
170
171	 Radar 6237713
172	* parser.c (cp_parser_block_literal_expr): Parse
173	and set attribute on block literals.
174
1752008-09-16  Fariborz Jahanian <fjahanian@apple.com>
176
177	 Radar 6214617
178	* parser.c (cp_block_requires_copying): New
179	(build_block_struct_type): Set BlockImportsCxxObjects flag.
180	(build_block_struct_initlist): Set BLOCK_HAS_CXX_OBJ if need be.
181	(synth_copy_helper_block_func): Call copy ctor if copied in object has one.
182	(synth_destroy_helper_block_func): Call dtor on cxx object.
183	
1842008-09-12  Fariborz Jahanian <fjahanian@apple.com>
185
186	 Radar 6212722 (tweak)
187	* parser.c (build_block_ref_decl): Use decay_conversion.
188
1892008-09-09  Fariborz Jahanian <fjahanian@apple.com>
190
191	 Radar 6169580
192	* decl.c (synth_block_byref_id_object_copy_func): Pass new flag 
193	to finish_function.
194	(synth_block_byref_id_object_): Ditto.
195	(finish_function): Don't pop the nested class when synthesizing
196	block helpers.
197	* semantics.c (finish_id_expression): Added logic to attach
198	copied-in "this" to stand-alone field reference in a block.
199	* parser.c (synth_copy_helper_block_func, synth_destroy_helper_block_func):
200	Pass new flag to finish_function.
201	(cp_parser_block_literal_expr): When block is in non-static member
202	function, need to import "this" as a read-only copied in variable.
203	
2042008-09-05  Fariborz Jahanian <fjahanian@apple.com>
205
206	 Radar 6169527
207	* parser.c (build_block_struct_type): Set CLASSTYPE_AS_BASE.
208	(build_block_internal_types): Ditto.
209	(build_block_struct_initlist): Rewritten.
210	(build_block_literal_tmp): Rewritten.
211	(build_block_ref_decl): Just add copied-in variable to
212	the scope.
213	(declare_block_prologue_local_vars): Rewritten.
214	(declare_block_prologue_local_byref_vars): New
215	(block_build_prologue): Call declare_block_prologue_local_byref_vars
216	for byref variables.
217
2182008-09-03  Fariborz Jahanian <fjahanian@apple.com>
219
220	 Radar 6185344
221	* typeck.c (check_return_expr): Added extra check
222	for return type checking.
223	* parser.c (cp_parser_direct_declarator): Added
224	extra check for type used as block return type.
225	(cp_parser_block_literal_expr): Parse and handle
226	user provided block return type syntax.
227
2282008-08-28  Fariborz Jahanian <fjahanian@apple.com>
229
230	Radar 6160536
231	* parser.c (cp_parser_block_literal_expr): Call build_block_helper_name
232	to get pretty name for block helper function.
233
2342008-08-28  Fariborz Jahanian <fjahanian@apple.com>
235
236	 Radar 6180456
237	* decl.c (synth_block_byref_id_object_copy_func): Use different
238	API when copying __block object in c language.
239	(synth_block_byref_id_object_dispose_func): Use different
240	API when releasing a __block object in c.
241	* parser.c (synth_copy_helper_block_func): Refactored to
242	call build_block_byref_assign_copy_decl().
243
2442008-08-27  Fariborz Jahanian <fjahanian@apple.com>
245
246	 Radar 6087117
247	* typeck.c (convert_arguments): Takes an extra argument
248	for distiguinsing block call to function calls.
249	(build_function_call): Tell convert_arguments if we
250	are calling a block.
251
2522008-08-24  Caroline Tice  <ctice@apple.com.
253
254	 Radar 6144664
255	 * parser.c (build_block_byref_decl):  Assign the 
256	source location for each byref decl to the source
257	location of the helper function decl.
258	(build_block_ref_decl):  Ditto for ref decls.
259
2602008-07-21  Fariborz Jahanian <fjahanian@apple.com>
261
262	 Radar 6029624
263	* call.c (objcp_reference_related_p): New
264	* cp-tree.h (objcp_reference_related_p): New decl.
265
2662008-06-05  Fariborz Jahanian <fjahanian@apple.com>
267
268	 Radar 5982990
269	* parser.c (cp_parser_compound_statement): Take a new
270	argument which is used to call objc_mark_locals_volatile.
271	(cp_parser_primary_expression, cp_parser_statement,
272	  etc.): add extra argument in calling cp_parser_compound_statement.
273	(cp_parser_objc_synchronized_statement): Passes
274	flag_objc_sjlj_exceptions as last argument in calling
275	cp_parser_compound_statement.
276
2772008-03-20  Fariborz Jahanian <fjahanian@apple.com>
278
279	 Radar 5802025
280	* typeck.c (finish_class_member_access_expr): Generate getter call
281	from an OBJC_PROPERTY_REFERENCE_EXPR.
282
2832008-03-19  Fariborz Jahanian <fjahanian@apple.com>
284
285	 Radar 5733674
286	 * decl.c (expand_static_init): Generate write barrier for
287	 static initialization in objective-c++ mode.
288
2892008-02-20  Fariborz Jahanian <fjahanian@apple.com>
290
291	 Radar 5732232 - code gen part 2.
292	* cp-lang.c (c_finish_return): Defined these
293	templates to get a clean compile.
294
2952007-08-22  Fariborz Jahanian <fjahanian@apple.com>
296
297	 Radar 4947311
298	* parser.c (cp_parser_objc_protocol_declaration): Takes attribute list
299	as extra argument and passes it down to 
300	objc_declare_protocols/objc_start_protocol.
301	(cp_parser_objc_class_interface): Now receives attribute list as input.
302	(cp_parser_objc_declaration): Parses attribute list and passes it down 
303	to cp_parser_objc_class_interface/cp_parser_objc_protocol_declaration.
304	
3052007-07-13  Fariborz Jahanian <fjahanian@apple.com>
306
307	 Radar 5277239
308	* parser.c (cp_parser_objc_reference_expression): New routine to
309	build a property reference expression.
310	(cp_objc_property_reference_prefix): New routine to recognize a 
311	property dot syntax.
312	(cp_parser_primary_expression): Build a property reference expression
313	when a property dot-syntax is recognized.
314	(cp_parser_type_name): Exclude property dot-syntax from being recognized
315	as a type name.
316	(cp_parser_class_name): Exclude property dot-syntax from being recognized
317	as a class name.
318
3192007-07-10  Fariborz Jahanian <fjahanian@apple.com>
320
321	 Radar 5285911
322	* typeck.c (finish_class_member_access_expr): Call
323	objc_build_property_reference_expr instead of objc_build_getter_call.
324
3252007-06-29  Fariborz Jahanian <fjahanian@apple.com>
326
327	 Radar 5276085
328	* typeck.c (build_modify_expr): Call objc_weak_reference_expr
329	 instead of objc_remove_weak_read.
330	 * parser.c (cp_parser_cast_expression): Call
331	 objc_build_weak_reference_tree instead of objc_generate_weak_read.
332	 (cp_parser_cast_expression): Ditto.
333
3342007-05-18  Fariborz Jahanian <fjahanian@apple.com>
335
336	 Radar 5202926
337	* mangle.c (write_mangled_name): Removed suppression in last patch.
338
3392007-04-20 Fariborz Jahanian <fjahanian@apple.com>
340
341	Radar 5130983
342	* c-common.h (enum lvalue_use): New enumerator lv_foreach
343	added.
344	* c-common.c (lvalue_error): Diagnose on lv_foreach.
345
3462007-04-20 Fariborz Jahanian <fjahanian@apple.com>
347
348	 Radar 5130983
349	 * parser.c (cp_parser_parse_foreach_stmt): Parse selector expression
350	 as an expression.
351	 (objc_foreach_stmt): Issue diagnostic on non-lavlue selector 
352	 expression.
353
3542007-03-29  Fariborz Jahanian <fjahanian@apple.com>
355
356	 Radar 4947014 - objc atomic property
357	 * lex.c (RID_NONATOMIC): Add
358	 * parser.c (objc_cp_parser_at_property): Recognize 'nonatomic' as
359	 new property attribute.
360
3612007-03-29 Fariborz Jahanian <fjahanian@apple.com>
362	 
363	 Radar 4564694
364	 * lex.c (RID_AT_PACKAGE): Add
365	 * parser.c (cp_lexer_get_preprocessor_token): Parse @package.
366
3672006-12-14  Fariborz Jahanian <fjahania@apple.com>
368
369	 Radar 4854605
370	 * parser.c (objc_foreach_stmt): Set iterator 
371	 to nil.
372
3732006-09-01  Fariborz Jahanian <fjahania@apple.com>
374
375	 Radar 4712269
376	 * typeck.c (build_unary_op): Call objc_build_incr_decr_setter_call
377	 for potential ince/decr pre/post expressions involving properties.
378
3792006-07-21  Fariborz Jahanian <fjahanian@apple.com>
380
381	Radar 4631818
382	* parser.c (cp_parser_parse_foreach_stmt): New.
383	(cp_parser_iteration_statement): Remove old code.
384	Replace it with call to cp_parser_parse_foreach_stmt.
385	(cp_parser_simple_declaration): Remove old code.
386	(cp_parser_init_declarator): Remove old code.
387	
3882006-08-31  Fariborz Jahanian  <fjahanian@apple.com>
389
390	 Radar 4697411
391	* typeck.c (build_class_member_access_expr): Call 
392	objc_volatilize_component_ref.
393
3942006-07-18  Fariborz Jahanian <fjahanian@apple.com>
395
396	 Radar 4592503
397	* class.c (layout_class_type): Check on illegal use of __weak
398	on struct fields.
399	* decl.c (start_decl): Check on illegal use of __weak on
400	variable declarations.
401
4022006-07-14  Fariborz Jahanian <fjahanian@apple.com>
403
404	 Radar 4621020
405	* lex.c (reswords): Added entry for 'weak' attribute keyword.
406	* parser.c (objc_cp_parser_at_property): Recorgnize 'weak'attribute.
407
4082006-06-26  Fariborz Jahanian <fjahanian@apple.com>
409
410	 Radar 4591909
411	* lex.c (reswords): New entry for 'dynamic' attribute.
412	* parser.c (objc_cp_parser_at_property): Change to parse new
413	attribute syntax.
414	
4152006-05-18 Fariborz Jahanian <fjahanian@apple.com>
416
417	 Radar 4548636 (objc attributes on class)
418	* parser.c (objc_attr_follwed_by_at_keyword): New routine to disambiguate
419	attribute before a type and attribute before an @interface declaration..
420	(cp_parser_declaration): Handle case of attribute list which can be
421	followed by an @interface.
422	(cp_parser_objc_class_interface): Parse possible attribute list before
423	parsing @interface.
424	(cp_parser_objc_declaration): Recognize 'attribute' as a valid token which
425	can start an @interface declaration.
426	
4272006-05-16 Fariborz Jahanian <fjahanian@apple.com>
428
429	 Radar 4547045
430	* parser.c (objc_foreach_stmt): Fix a thinko.
431
4322006-04-12 Fariborz Jahanian <fjahanian@apple.com>
433
434	 Radar 4507230
435	* parser.c (objc_foreach_stmt): Check for valid objc
436	objects in foreach header.
437
4382006-04-06 Fariborz Jahanian <fjahanian@apple.com>
439
440	 Radar 4436866 
441	(Missing copies attribute)
442	* lex.c (reswords): New keyword 'copies' added.
443	* parser.c (objc_cp_parser_at_property): Parse 'copies'
444	attribute.
445
4462006-02-15   Fariborz Jahanian <fjahanian@apple.com>
447
448        Radar 4445586
449	* semantics.c (begin_do_stmt): DO_STMT nodes take an
450	extra argument to build.
451
4522005-11-08  Fariborz Jahanian <fjahanian@apple.com>
453
454	Radar 4330422
455
456	* typeck.c (comp_ptr_ttypes_real): Remove the hack. un-volatize the
457	artificially 'volatized' type before doing pointer comparison.
458
4592005-08-15  Ziemowit Laski  <zlaski@apple.com>
460
461	Radar 4093475
462	* parser.c (cp_parser_objc_interstitial_code): Catch stray
463	'{' and '}' tokens and issue appropriate errors.
464	(cp_parser_objc_method_prototype_list,
465	cp_parser_objc_method_definition_list): Bail out if end-of-file
466	is seen; issue error if trailing '@end' is not seen.
467
4682008-08-06  Fariborz Jahanian <fjahanian@apple.com>
469
470	 Radar 6040305 - work in progress.
471	* parser.c (clean_and_exit): Clean up if inside
472	a function.
473	(cp_parser_block_literal_expr): Set DECL_NO_STATIC_CHAIN
474	if inside a function.
475
4762008-08-05  Fariborz Jahanian <fjahanian@apple.com>
477
478	 Radar 6040305 - work in progress.
479	* decl.c (init_byref_decl): Generate c-style helper
480	functions for compose/dispose helpers.
481
4822008-08-04  Fariborz Jahanian <fjahanian@apple.com>
483
484	 Radar 6040305 - work in progress.
485	* decl.c (synth_block_byref_id_object_copy_func,
486	synth_block_byref_id_object_dispose_func,
487	block_start_struct, block_finish_struct,
488	new_block_byref_decl, init_byref_decl): New routines.
489	(cp_finish_decl): Build the APIed version of 
490	a __byref local vriable.
491	* semantics.c (finish_id_expression): Add a __byref
492	variable to the list of such variables for current
493	block.
494	* parser.c (build_component_ref): Fix to make it work.
495	(cp_parser_block_literal_expr): Push/pop language-c,
496	set context of the helper function.
497	(declare_block_prologue_local_vars): Mend tree for
498	the built-in local variables in the helper prologue.
499
5002008-07-30  Fariborz Jahanian <fjahanian@apple.com>
501
502	 Radar 6040305
503	* call.c (standard_conversion): Allow conversion of 'id'
504	type to a block pointer.
505
5062008-07-30  Fariborz Jahanian <fjahanian@apple.com>
507
508	 Radar 6040305
509	* typeck.c (build_block_call): New
510	(build_function_call): Call build_block_call
511	for block calls.
512	* call.c (standard_conversion): Remove "void *" to
513	block pointer conversion.
514
5152008-07-29  Fariborz Jahanian <fjahanian@apple.com>
516
517	 Radar 6040305
518	* call.c (standard_conversion): Allow assignment of
519	"void *" to block pointer object.
520
5212008-07-28  Fariborz Jahanian <fjahanian@apple.com>
522
523	 Radar 6040305
524	* typeck.c (comptypes): block-pointer types'
525	return type get special treatment.
526
5272008-07-16  Eugene Marinelli <marinelli@apple.com>
528
529	Radar 5559195
530	* decl.c (cxx_maybe_build_cleanup): When considering whether to
531	build a cleanup for a class type, use
532	CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY and
533	CLASSTYPE_DESTRUCTOR_NONTRIVIAL_BECAUSE_OF_BASE instead of
534	TYPE_HAS_NONTRIVIAL_DESTRUCTOR to determine whether it must be
535	output.
536
5372008-07-15  Eugene Marinelli <marinelli@apple.com>
538
539	Radar 5559195
540	* cp-tree.h (struct lang_type_class): Add destructor_triviality_final
541	flag to mark when has_nontrivial_destructor_body and
542	destructor_nontrivial_because_of_base are final.  Add accessor for
543	this flag.
544	* parser.c (cp_parser_statement_seq_opt): Use 
545	CLASSTYPE_DESTRUCTOR_TRIVIALITY_FINAL to determine if
546	destructor should be checked for being empty, and set it if
547	CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY is changed.
548
5492008-07-10  Eugene Marinelli <marinelli@apple.com>
550
551	Radar 5559195
552	* init.c (push_base_cleanups): Check flags indicating whether
553	destructor of base class has a nontrivial body, has a base destructor
554	that must be called, or is private to determine whether it should be
555	called by the derived class.  Set
556	CLASSTYPE_DESTRUCTOR_NONTRIVIAL_BECAUSE_OF_BASE to 1 if it has
557	members that must be deleted.
558	* class.c (check_bases, finish_struct_bits,
559	add_implicitly_declared_members): Set
560	CLASSTYPE_DESTRUCTOR_NONTRIVIAL_BECAUSE_OF_BASE and
561	CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY based on base classes.
562	(check_methods): Set CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY to 1
563	whenever a user-declared destructor is seen as a conservative
564	assumption.
565	* cp-tree.h (struct lang_type_class): Add
566	has_nontrivial_destructor_body and
567	destructor_nontrivial_because_of_base flags.  Decrement remaining
568	dummy bits.  Add accessors for these flags.
569	* parser.c (cp_parser_statement_seq_opt): Unmark
570	CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY and then set it again only if
571	a statement is parsed.
572
5732007-05-07  Fariborz Jahanian <fjahanian@apple.com>
574
575	 Radar 4157812
576	* parser.c (cp_parser_objc_method_keyword_params): Recognize optional
577	method argument attribute.
578
5792007-03-21  Fariborz Jahanian <fjahanian@apple.com>
580
581	 Radar 2848255
582	 * except.c (do_begin_catch): Take a new argument to decide
583	 to call objc_begin_catch for objc exceptions.
584	 (objcp_build_eh_type_type): New.
585	 (do_end_catch): Call objc_end_catch for objc type
586	 exceptions.
587	 (expand_start_catch_block): Add new argument to do_begin_catch call.
588	 (build_throw): Call objc_throw_exception for throwing objc type objects.
589	 * cp-tree.h (objc2_valid_objc_catch_type, objcp_build_eh_type_type):
590	 New extern decl.
591	 * parser.c (cp_parser_objc_try_catch_finally_stateme): Add syntax for
592	 @catch(...).
593
5942006-04-26 Fariborz Jahanian <fjahanian@apple.com>
595
596	 Radar 3803157 (method attributes)
597	* parser.c (cp_parser_objc_maybe_attributes): New.
598	(cp_parser_objc_method_keyword_params): Parse attributes at end
599	of method declaration.
600	(cp_parser_objc_method_tail_params_opt): Parse attributes after
601	'...'.
602	(cp_parser_objc_method_signature): Retreive method attribute for
603	the caller.
604	(cp_parser_objc_method_prototype_list): Pass new arg. to
605	cp_parser_objc_method_signature and pass attributes to 
606	objc_add_method_declaration.
607	(cp_parser_objc_method_definition_list): Pass new arg. to
608	cp_parser_objc_method_signature and pass attributes to
609	objc_start_method_definition.
610	
6112006-03-27 Fariborz Jahanian <fjahanian@apple.com>
612
613	 Radar 4133425
614	* lex.c (unqualified_name_lookup_error): Issue diagnostic
615	for private 'ivar' access.
616
6172006-02-02   Fariborz Jahanian <fjahanian@apple.com>
618
619	 Radar 4426814
620	* typeck.c (build_modify_expr): Undo call to objc_read_weak
621	on LHS of the assignment.
622	* parser.c (cp_parser_cast_expression): Central place to add
623	objc_read_weak call on expressions of __weak objects.
624
6252005-12-15  Fariborz Jahanian <fjahanian@apple.com>
626
627	Radar 4229905
628	* typeck.c (composite_pointer_type): Call objc_have_common_type
629	when comparing two objective-c pointer types.
630
6312005-10-17  Fariborz Jahanian <fjahanian@apple.com>
632
633	Radar 4290840
634	
635	* parser.c (cp_parser_objc_method_keyword_params): Check for valid
636	method parameters and issue error.
637	(cp_parser_objc_method_definition_list): Check for invalid tokens
638	which cannot start a function definition.
639
6402005-08-02  Ziemowit Laski  <zlaski@apple.com>
641
642	Radar 4185810
643	* parser.c (cp_parser_compound_statement): Continue
644	parsing even if the initial '{' is missing; an error
645	message is already being produced.
646	(cp_parser_statement_seq_opt): In addition to '}' and
647	end-of-file, a statement sequence may also be terminated
648	by a stray 'else' or '@end'.
649
650 # APPLE LOCAL begin for-fsf-4_4 3274130 5295549
6512007-08-03  Geoffrey Keating  <geoffk@apple.com>
652
653	Radar 5295549
654	* parser.c (cp_parser_iteration_statement): Handle attributes.
655	* semantics.c (begin_for_stmt): Put attributes in built tree.
656	(begin_while_stmt): Put attributes in built tree.
657	(begin_do_stmt): Put attributes in built tree.
658	* pt.c (tsubst_expr): Handle attributes for FOR_STMT, WHILE_STMT,
659	DO_STMT.
660	* cp-gimplify.c (gimplify_cp_loop): Handle attributes.
661	(gimplify_for_stmt): Pass attributes to gimplify_cp_loop.
662	(gimplify_while_stmt): Pass attributes to gimplify_cp_loop.
663	(gimplify_do_stmt): Pass attributes to gimplify_cp_loop.
664	* dump.c (cp_dump_tree): Dump attributes for FOR_STMT, WHILE_STMT,
665	DO_STMT.
666	* cp-tree.h (begin_while_stmt): Update prototype.
667	(begin_do_stmt): Likewise.
668	(begin_for_stmt): Likewise.
669	* cp-tree.def (FOR_STMT): Add extra parameter.
670	(WHILE_STMT): Likewise.
671	(DO_STMT): Likewise.
672	* init.c (build_vec_init): Update for change to begin_for_stmt.
673
674 # APPLE LOCAL end for-fsf-4_4 3274130 5295549
675