ChangeLog.apple revision 260311
1260311Spfg2008-11-07  Fariborz Jahanian <fjahanian@apple.com>
2260311Spfg
3260311Spfg	 Radar 5847976
4260311Spfg	* decl.c (synth_block_byref_id_object_copy_func): Takes new 'flag' argument
5260311Spfg	and produces the new much simplified API.
6260311Spfg	(synth_block_byref_id_object_dispose_func): Ditto.
7260311Spfg	(new_block_byref_decl): Turn off -fobjc-gc so we don't get
8260311Spfg	bogus warning on field declared as __weak.
9260311Spfg	(init_byref_decl): Takes a new 'flag' argument and passes
10260311Spfg	it down to synth_block_byref_id_object_copy_func and
11260311Spfg	synth_block_byref_id_object_dispose_func.
12260311Spfg	(cp_finish_decl): Calculates the flag for the block 
13260311Spfg	variable declaration and passes it down to init_byref_decl.
14260311Spfg	* parser.c (build_block_struct_initlist): Removes call to	
15260311Spfg	copy_in_object (not needed).
16260311Spfg	(synth_copy_helper_block_func): Produce the new, simplified
17260311Spfg	API.
18260311Spfg	(synth_destroy_helper_block_func): Ditto.
19260311Spfg	(build_block_byref_decl): Copy over COPYABLE_WEAK_BLOCK flag.
20260311Spfg	
21260311Spfg2008-10-31  Fariborz Jahanian <fjahanian@apple.com>
22260311Spfg
23260311Spfg	 Radar 6175959
24260311Spfg	* parser.c (synth_copy_helper_block_func): Use the new API
25260311Spfg	_Block_object_assign for ObjC object copying.
26260311Spfg	(block_object_dispose): New
27260311Spfg	(synth_destroy_helper_block_func): Call block_object_dispose
28260311Spfg	to use new _Block_object_dispose API for ObjC object release.
29260311Spfg
30260311Spfg2008-10-27  Fariborz Jahanian <fjahanian@apple.com>
31260311Spfg
32260311Spfg	 Radar 6231433
33260311Spfg	 * typeck.c (objc_compare_types, objc_have_common_type):
34260311Spfg	 Take an extra argument for better diagnostics.
35260311Spfg	* call.c: Ditto
36260311Spfg
37260311Spfg2010-03-16  Fariborz Jahanian <fjahanian@apple.com>
38260311Spfg
39260311Spfg	 Radar 7760213
40260311Spfg	 * semantics.c (get_final_block_variable): Diagnose 
41260311Spfg	access of __block array.
42260311Spfg	
43260311Spfg2010-03-12  Fariborz Jahanian <fjahanian@apple.com>
44260311Spfg
45260311Spfg	Radar 7735196
46260311Spfg	* cp/parser.c (build_block_struct_initlist): 
47260311Spfg	Set BLOCK_USE_STRET flag in block descriptor for
48260311Spfg	 blocks which return their aggregate value in memory.
49260311Spfg
50260311Spfg2010-03-05  Fariborz Jahanian <fjahanian@apple.com>
51260311Spfg
52260311Spfg	 Radar 7721728
53260311Spfg	 * semantics.c  (get_final_block_variable): Diagnose
54260311Spfg	 importation of copied-in variables.
55260311Spfg
56260311Spfg2009-02-11  Fariborz Jahanian <fjahanian@apple.com>
57260311Spfg
58260311Spfg	 Radar 6573923
59260311Spfg	 * decl.c (synth_block_byref_id_object_copy_func,
60260311Spfg	 synth_block_byref_id_object_dispose_func): Set BLOCK_BYREF_CALLER
61260311Spfg	 flag in call to copy/dispose helper functions.
62260311Spfg
63260311Spfg2009-02-11  Fariborz Jahanian <fjahanian@apple.com>
64260311Spfg
65260311Spfg	 Radar 6545782
66260311Spfg	* semantics.c (get_final_block_variable): New
67260311Spfg	(finish_id_expression): Call get_final_block_variable.
68260311Spfg
69260311Spfg2008-10-27  Fariborz Jahanian <fjahanian@apple.com>
70260311Spfg
71260311Spfg	 Radar 6302949
72260311Spfg	 * parser.c (objc_cp_parser_at_property): Warn on missing
73260311Spfg	 ',' separator for property attribute list.
74260311Spfg
75260311Spfg2008-10-24  Fariborz Jahanian <fjahanian@apple.com>
76260311Spfg
77260311Spfg	 Radar 6305545
78260311Spfg	* semantics.c (expand_or_defer_fn): Lower nested function
79260311Spfg	of the structors.
80260311Spfg
81260311Spfg2008-10-24  Fariborz Jahanian <fjahanian@apple.com>
82260311Spfg
83260311Spfg	 Radar 5847213 (minor tweak)
84260311Spfg	 * parser.c (build_block_descriptor_type):
85260311Spfg	 Make descriptor_ptr_type and descriptor_ptr_type_with_copydispose
86260311Spfg	 visible to pch.
87260311Spfg
88260311Spfg2008-10-17  Fariborz Jahanian <fjahanian@apple.com>
89260311Spfg
90260311Spfg	 Radar 6289031
91260311Spfg	 * decl.c: Removed all code related to
92260311Spfg	 radar 6083129 (byref escapes).
93260311Spfg
94260311Spfg2008-10-15  Fariborz Jahanian <fjahanian@apple.com>
95260311Spfg
96260311Spfg	 Radar 6271728
97260311Spfg	* parser.c (cp_parser_objc_method_definition_list): Method
98260311Spfg	definition always start with '{', or it is error.
99260311Spfg
100260311Spfg2008-10-14  Fariborz Jahanian <fjahanian@apple.com>
101260311Spfg
102260311Spfg	 Radar 6275956
103260311Spfg	* semantics.c (finish_this_expr): Reference to "this" in a block
104260311Spfg	must be looked up.
105260311Spfg
106260311Spfg2008-10-10  Fariborz Jahanian <fjahanian@apple.com>
107260311Spfg
108260311Spfg	Radar 5847213 - New Block ABI
109260311Spfg	
110260311Spfg	* typeck.c (build_block_call): New code gen for block call.
111260311Spfg	* parser.c (build_descriptor_block_decl) New
112260311Spfg	(build_block_struct_type): New block literal type.
113260311Spfg	(build_block_struct_initlist): New block literal initializers.
114260311Spfg	(build_block_literal_tmp): New block literal variable initialization.
115260311Spfg	(synth_copy_helper_block_func): Fixed a minor bug (unrelated to this radar).
116260311Spfg	(build_block_internal_types): Removed.
117260311Spfg	(build_block_descriptor_type): New routine to build build descriptor type.
118260311Spfg	(make_block_pointer_declarator): Unnecessary code is removed.
119260311Spfg	
120260311Spfg2008-10-02  Fariborz Jahanian <fjahanian@apple.com>
121260311Spfg
122260311Spfg	 Radar 6246527
123260311Spfg	 * parser.c (cp_parser_block_literal_expr): Call to do the delta
124260311Spfg	 on printf attribute.
125260311Spfg
126260311Spfg2008-09-30  Fariborz Jahanian <fjahanian@apple.com>
127260311Spfg
128260311Spfg	 Radar 6230297
129260311Spfg	* c-parser.c (build_block_struct_initlist): 'trivial' 
130260311Spfg	block temporary can be static as well.
131260311Spfg	(build_block_literal_tmp): Accomodate 'trivial' block
132260311Spfg	literal temporary variable as static.
133260311Spfg
134260311Spfg2008-09-30  Fariborz Jahanian <fjahanian@apple.com>
135260311Spfg
136260311Spfg	 Radar 6230297
137260311Spfg	 * parser.c (build_block_struct_initlist): 'trivial' 
138260311Spfg	 block temporary can be static as well.
139260311Spfg	 (build_block_literal_tmp): Accomodate 'trivial' block
140260311Spfg	 literal temporary variable as static.
141260311Spfg
142260311Spfg2008-09-30  Fariborz Jahanian <fjahanian@apple.com>
143260311Spfg
144260311Spfg	 Radar 6225809
145260311Spfg	 * parser.c (build_block_byref_decl): Add __block vaiables
146260311Spfg	 to intervening blocks.
147260311Spfg
148260311Spfg2008-09-29  Fariborz Jahanian <fjahanian@apple.com>
149260311Spfg
150260311Spfg	 Radar 6154598
151260311Spfg	tree.c (maybe_dummy_object): Build expression for
152260311Spfg	 copied in "this" in the block.
153260311Spfg
154260311Spfg2008-09-26  Fariborz Jahanian <fjahanian@apple.com>
155260311Spfg
156260311Spfg	Radar 6243400
157260311Spfg	* parser.c (build_block_struct_type): Mostly rewritten
158260311Spfg	to use C++'s API for building block's main struct so structors
159260311Spfg	for those data members requiring them are synthesized and
160260311Spfg	used.
161260311Spfg
162260311Spfg2008-09-25  Fariborz Jahanian <fjahanian@apple.com>
163260311Spfg
164260311Spfg	 Radar 6244520
165260311Spfg	 * decl.c (new_block_byref_decl): New field added to
166260311Spfg	 struct __Block_byref_x.
167260311Spfg	 (init_byref_decl): Above field initialized to NULL.
168260311Spfg
169260311Spfg2008-09-25  Fariborz Jahanian <fjahanian@apple.com>
170260311Spfg
171260311Spfg	 Radar 6237713
172260311Spfg	* parser.c (cp_parser_block_literal_expr): Parse
173260311Spfg	and set attribute on block literals.
174260311Spfg
175260311Spfg2008-09-16  Fariborz Jahanian <fjahanian@apple.com>
176260311Spfg
177260311Spfg	 Radar 6214617
178260311Spfg	* parser.c (cp_block_requires_copying): New
179260311Spfg	(build_block_struct_type): Set BlockImportsCxxObjects flag.
180260311Spfg	(build_block_struct_initlist): Set BLOCK_HAS_CXX_OBJ if need be.
181260311Spfg	(synth_copy_helper_block_func): Call copy ctor if copied in object has one.
182260311Spfg	(synth_destroy_helper_block_func): Call dtor on cxx object.
183260311Spfg	
184260311Spfg2008-09-12  Fariborz Jahanian <fjahanian@apple.com>
185260311Spfg
186260311Spfg	 Radar 6212722 (tweak)
187260311Spfg	* parser.c (build_block_ref_decl): Use decay_conversion.
188260311Spfg
189260311Spfg2008-09-09  Fariborz Jahanian <fjahanian@apple.com>
190260311Spfg
191260311Spfg	 Radar 6169580
192260311Spfg	* decl.c (synth_block_byref_id_object_copy_func): Pass new flag 
193260311Spfg	to finish_function.
194260311Spfg	(synth_block_byref_id_object_): Ditto.
195260311Spfg	(finish_function): Don't pop the nested class when synthesizing
196260311Spfg	block helpers.
197260311Spfg	* semantics.c (finish_id_expression): Added logic to attach
198260311Spfg	copied-in "this" to stand-alone field reference in a block.
199260311Spfg	* parser.c (synth_copy_helper_block_func, synth_destroy_helper_block_func):
200260311Spfg	Pass new flag to finish_function.
201260311Spfg	(cp_parser_block_literal_expr): When block is in non-static member
202260311Spfg	function, need to import "this" as a read-only copied in variable.
203260311Spfg	
204260311Spfg2008-09-05  Fariborz Jahanian <fjahanian@apple.com>
205260311Spfg
206260311Spfg	 Radar 6169527
207260311Spfg	* parser.c (build_block_struct_type): Set CLASSTYPE_AS_BASE.
208260311Spfg	(build_block_internal_types): Ditto.
209260311Spfg	(build_block_struct_initlist): Rewritten.
210260311Spfg	(build_block_literal_tmp): Rewritten.
211260311Spfg	(build_block_ref_decl): Just add copied-in variable to
212260311Spfg	the scope.
213260311Spfg	(declare_block_prologue_local_vars): Rewritten.
214260311Spfg	(declare_block_prologue_local_byref_vars): New
215260311Spfg	(block_build_prologue): Call declare_block_prologue_local_byref_vars
216260311Spfg	for byref variables.
217260311Spfg
218260311Spfg2008-09-03  Fariborz Jahanian <fjahanian@apple.com>
219260311Spfg
220260311Spfg	 Radar 6185344
221260311Spfg	* typeck.c (check_return_expr): Added extra check
222260311Spfg	for return type checking.
223260311Spfg	* parser.c (cp_parser_direct_declarator): Added
224260311Spfg	extra check for type used as block return type.
225260311Spfg	(cp_parser_block_literal_expr): Parse and handle
226260311Spfg	user provided block return type syntax.
227260311Spfg
228260311Spfg2008-08-28  Fariborz Jahanian <fjahanian@apple.com>
229260311Spfg
230260311Spfg	Radar 6160536
231260311Spfg	* parser.c (cp_parser_block_literal_expr): Call build_block_helper_name
232260311Spfg	to get pretty name for block helper function.
233260311Spfg
234260311Spfg2008-08-28  Fariborz Jahanian <fjahanian@apple.com>
235260311Spfg
236260311Spfg	 Radar 6180456
237260311Spfg	* decl.c (synth_block_byref_id_object_copy_func): Use different
238260311Spfg	API when copying __block object in c language.
239260311Spfg	(synth_block_byref_id_object_dispose_func): Use different
240260311Spfg	API when releasing a __block object in c.
241260311Spfg	* parser.c (synth_copy_helper_block_func): Refactored to
242260311Spfg	call build_block_byref_assign_copy_decl().
243260311Spfg
244260311Spfg2008-08-27  Fariborz Jahanian <fjahanian@apple.com>
245260311Spfg
246260311Spfg	 Radar 6087117
247260311Spfg	* typeck.c (convert_arguments): Takes an extra argument
248260311Spfg	for distiguinsing block call to function calls.
249260311Spfg	(build_function_call): Tell convert_arguments if we
250260311Spfg	are calling a block.
251260311Spfg
252260311Spfg2008-08-24  Caroline Tice  <ctice@apple.com.
253260311Spfg
254260311Spfg	 Radar 6144664
255260311Spfg	 * parser.c (build_block_byref_decl):  Assign the 
256260311Spfg	source location for each byref decl to the source
257260311Spfg	location of the helper function decl.
258260311Spfg	(build_block_ref_decl):  Ditto for ref decls.
259260311Spfg
260260311Spfg2008-07-21  Fariborz Jahanian <fjahanian@apple.com>
261260311Spfg
262260311Spfg	 Radar 6029624
263260311Spfg	* call.c (objcp_reference_related_p): New
264260311Spfg	* cp-tree.h (objcp_reference_related_p): New decl.
265260311Spfg
266260311Spfg2008-06-05  Fariborz Jahanian <fjahanian@apple.com>
267260311Spfg
268260311Spfg	 Radar 5982990
269260311Spfg	* parser.c (cp_parser_compound_statement): Take a new
270260311Spfg	argument which is used to call objc_mark_locals_volatile.
271260311Spfg	(cp_parser_primary_expression, cp_parser_statement,
272260311Spfg	  etc.): add extra argument in calling cp_parser_compound_statement.
273260311Spfg	(cp_parser_objc_synchronized_statement): Passes
274260311Spfg	flag_objc_sjlj_exceptions as last argument in calling
275260311Spfg	cp_parser_compound_statement.
276260311Spfg
277260311Spfg2008-03-20  Fariborz Jahanian <fjahanian@apple.com>
278260311Spfg
279260311Spfg	 Radar 5802025
280260311Spfg	* typeck.c (finish_class_member_access_expr): Generate getter call
281260311Spfg	from an OBJC_PROPERTY_REFERENCE_EXPR.
282260311Spfg
283260311Spfg2008-03-19  Fariborz Jahanian <fjahanian@apple.com>
284260311Spfg
285260311Spfg	 Radar 5733674
286260311Spfg	 * decl.c (expand_static_init): Generate write barrier for
287260311Spfg	 static initialization in objective-c++ mode.
288260311Spfg
289260311Spfg2008-02-20  Fariborz Jahanian <fjahanian@apple.com>
290260311Spfg
291260311Spfg	 Radar 5732232 - code gen part 2.
292260311Spfg	* cp-lang.c (c_finish_return): Defined these
293260311Spfg	templates to get a clean compile.
294260311Spfg
295260311Spfg2007-08-22  Fariborz Jahanian <fjahanian@apple.com>
296260311Spfg
297260311Spfg	 Radar 4947311
298260311Spfg	* parser.c (cp_parser_objc_protocol_declaration): Takes attribute list
299260311Spfg	as extra argument and passes it down to 
300260311Spfg	objc_declare_protocols/objc_start_protocol.
301260311Spfg	(cp_parser_objc_class_interface): Now receives attribute list as input.
302260311Spfg	(cp_parser_objc_declaration): Parses attribute list and passes it down 
303260311Spfg	to cp_parser_objc_class_interface/cp_parser_objc_protocol_declaration.
304260311Spfg	
305260311Spfg2007-07-24  Fariborz Jahanian <fjahanian@apple.com>
306260311Spfg
307260311Spfg	 Radar 5355344
308260311Spfg	* cp-tree.h (cp_objc_protocol_id_list): New declaration
309260311Spfg	* cp-lang.c (cp_objc_protocol_id_list): New stub
310260311Spfg	* parser.c (cp_parser_type_name): Added code to disambiguate
311260311Spfg	conditional from a protocol type.
312260311Spfg	(cp_parser_objc_tentative_protocol_refs_opt): New
313260311Spfg
314260311Spfg2007-07-13  Fariborz Jahanian <fjahanian@apple.com>
315260311Spfg
316260311Spfg	 Radar 5277239
317260311Spfg	* parser.c (cp_parser_objc_reference_expression): New routine to
318260311Spfg	build a property reference expression.
319260311Spfg	(cp_objc_property_reference_prefix): New routine to recognize a 
320260311Spfg	property dot syntax.
321260311Spfg	(cp_parser_primary_expression): Build a property reference expression
322260311Spfg	when a property dot-syntax is recognized.
323260311Spfg	(cp_parser_type_name): Exclude property dot-syntax from being recognized
324260311Spfg	as a type name.
325260311Spfg	(cp_parser_class_name): Exclude property dot-syntax from being recognized
326260311Spfg	as a class name.
327260311Spfg
328260311Spfg2007-07-10  Fariborz Jahanian <fjahanian@apple.com>
329260311Spfg
330260311Spfg	 Radar 5285911
331260311Spfg	* typeck.c (finish_class_member_access_expr): Call
332260311Spfg	objc_build_property_reference_expr instead of objc_build_getter_call.
333260311Spfg
334260311Spfg2007-06-29  Fariborz Jahanian <fjahanian@apple.com>
335260311Spfg
336260311Spfg	 Radar 5276085
337260311Spfg	* typeck.c (build_modify_expr): Call objc_weak_reference_expr
338260311Spfg	 instead of objc_remove_weak_read.
339260311Spfg	 * parser.c (cp_parser_cast_expression): Call
340260311Spfg	 objc_build_weak_reference_tree instead of objc_generate_weak_read.
341260311Spfg	 (cp_parser_cast_expression): Ditto.
342260311Spfg
343260311Spfg2007-05-18  Fariborz Jahanian <fjahanian@apple.com>
344260311Spfg
345260311Spfg	 Radar 5202926
346260311Spfg	* mangle.c (write_mangled_name): Removed suppression in last patch.
347260311Spfg
348260311Spfg2007-04-20 Fariborz Jahanian <fjahanian@apple.com>
349260311Spfg
350260311Spfg	Radar 5130983
351260311Spfg	* c-common.h (enum lvalue_use): New enumerator lv_foreach
352260311Spfg	added.
353260311Spfg	* c-common.c (lvalue_error): Diagnose on lv_foreach.
354260311Spfg
355260311Spfg2007-04-20 Fariborz Jahanian <fjahanian@apple.com>
356260311Spfg
357260311Spfg	 Radar 5130983
358260311Spfg	 * parser.c (cp_parser_parse_foreach_stmt): Parse selector expression
359260311Spfg	 as an expression.
360260311Spfg	 (objc_foreach_stmt): Issue diagnostic on non-lavlue selector 
361260311Spfg	 expression.
362260311Spfg
363260311Spfg2007-03-29  Fariborz Jahanian <fjahanian@apple.com>
364260311Spfg
365260311Spfg	 Radar 4947014 - objc atomic property
366260311Spfg	 * lex.c (RID_NONATOMIC): Add
367260311Spfg	 * parser.c (objc_cp_parser_at_property): Recognize 'nonatomic' as
368260311Spfg	 new property attribute.
369260311Spfg
370260311Spfg2007-03-29 Fariborz Jahanian <fjahanian@apple.com>
371260311Spfg	 
372260311Spfg	 Radar 4564694
373260311Spfg	 * lex.c (RID_AT_PACKAGE): Add
374260311Spfg	 * parser.c (cp_lexer_get_preprocessor_token): Parse @package.
375260311Spfg
376260311Spfg2006-12-14  Fariborz Jahanian <fjahania@apple.com>
377260311Spfg
378260311Spfg	 Radar 4854605
379260311Spfg	 * parser.c (objc_foreach_stmt): Set iterator 
380260311Spfg	 to nil.
381260311Spfg
382260311Spfg2006-09-01  Fariborz Jahanian <fjahania@apple.com>
383260311Spfg
384260311Spfg	 Radar 4712269
385260311Spfg	 * typeck.c (build_unary_op): Call objc_build_incr_decr_setter_call
386260311Spfg	 for potential ince/decr pre/post expressions involving properties.
387260311Spfg
388260311Spfg2006-07-21  Fariborz Jahanian <fjahanian@apple.com>
389260311Spfg
390260311Spfg	Radar 4631818
391260311Spfg	* parser.c (cp_parser_parse_foreach_stmt): New.
392260311Spfg	(cp_parser_iteration_statement): Remove old code.
393260311Spfg	Replace it with call to cp_parser_parse_foreach_stmt.
394260311Spfg	(cp_parser_simple_declaration): Remove old code.
395260311Spfg	(cp_parser_init_declarator): Remove old code.
396260311Spfg	
397260311Spfg2006-08-31  Fariborz Jahanian  <fjahanian@apple.com>
398260311Spfg
399260311Spfg	 Radar 4697411
400260311Spfg	* typeck.c (build_class_member_access_expr): Call 
401260311Spfg	objc_volatilize_component_ref.
402260311Spfg
403260311Spfg2006-07-18  Fariborz Jahanian <fjahanian@apple.com>
404260311Spfg
405260311Spfg	 Radar 4592503
406260311Spfg	* class.c (layout_class_type): Check on illegal use of __weak
407260311Spfg	on struct fields.
408260311Spfg	* decl.c (start_decl): Check on illegal use of __weak on
409260311Spfg	variable declarations.
410260311Spfg
411260311Spfg2006-07-14  Fariborz Jahanian <fjahanian@apple.com>
412260311Spfg
413260311Spfg	 Radar 4621020
414260311Spfg	* lex.c (reswords): Added entry for 'weak' attribute keyword.
415260311Spfg	* parser.c (objc_cp_parser_at_property): Recorgnize 'weak'attribute.
416260311Spfg
417260311Spfg2006-06-26  Fariborz Jahanian <fjahanian@apple.com>
418260311Spfg
419260311Spfg	 Radar 4591909
420260311Spfg	* lex.c (reswords): New entry for 'dynamic' attribute.
421260311Spfg	* parser.c (objc_cp_parser_at_property): Change to parse new
422260311Spfg	attribute syntax.
423260311Spfg	
424260311Spfg2006-05-18 Fariborz Jahanian <fjahanian@apple.com>
425260311Spfg
426260311Spfg	 Radar 4548636 (objc attributes on class)
427260311Spfg	* parser.c (objc_attr_follwed_by_at_keyword): New routine to disambiguate
428260311Spfg	attribute before a type and attribute before an @interface declaration..
429260311Spfg	(cp_parser_declaration): Handle case of attribute list which can be
430260311Spfg	followed by an @interface.
431260311Spfg	(cp_parser_objc_class_interface): Parse possible attribute list before
432260311Spfg	parsing @interface.
433260311Spfg	(cp_parser_objc_declaration): Recognize 'attribute' as a valid token which
434260311Spfg	can start an @interface declaration.
435260311Spfg	
436260311Spfg2006-05-16 Fariborz Jahanian <fjahanian@apple.com>
437260311Spfg
438260311Spfg	 Radar 4547045
439260311Spfg	* parser.c (objc_foreach_stmt): Fix a thinko.
440260311Spfg
441260311Spfg2006-04-12 Fariborz Jahanian <fjahanian@apple.com>
442260311Spfg
443260311Spfg	 Radar 4507230
444260311Spfg	* parser.c (objc_foreach_stmt): Check for valid objc
445260311Spfg	objects in foreach header.
446260311Spfg
447260311Spfg2006-04-06 Fariborz Jahanian <fjahanian@apple.com>
448260311Spfg
449260311Spfg	 Radar 4436866 
450260311Spfg	(Missing copies attribute)
451260311Spfg	* lex.c (reswords): New keyword 'copies' added.
452260311Spfg	* parser.c (objc_cp_parser_at_property): Parse 'copies'
453260311Spfg	attribute.
454260311Spfg
455260014Spfg2006-02-15   Fariborz Jahanian <fjahanian@apple.com>
456260014Spfg
457260014Spfg        Radar 4445586
458260014Spfg	* semantics.c (begin_do_stmt): DO_STMT nodes take an
459260014Spfg	extra argument to build.
460260014Spfg
461260311Spfg2005-11-08  Fariborz Jahanian <fjahanian@apple.com>
462260311Spfg
463260311Spfg	Radar 4330422
464260311Spfg
465260311Spfg	* typeck.c (comp_ptr_ttypes_real): Remove the hack. un-volatize the
466260311Spfg	artificially 'volatized' type before doing pointer comparison.
467260311Spfg
468260311Spfg2005-08-15  Ziemowit Laski  <zlaski@apple.com>
469260311Spfg
470260311Spfg	Radar 4093475
471260311Spfg	* parser.c (cp_parser_objc_interstitial_code): Catch stray
472260311Spfg	'{' and '}' tokens and issue appropriate errors.
473260311Spfg	(cp_parser_objc_method_prototype_list,
474260311Spfg	cp_parser_objc_method_definition_list): Bail out if end-of-file
475260311Spfg	is seen; issue error if trailing '@end' is not seen.
476260311Spfg
477260311Spfg2008-08-06  Fariborz Jahanian <fjahanian@apple.com>
478260311Spfg
479260311Spfg	 Radar 6040305 - work in progress.
480260311Spfg	* parser.c (clean_and_exit): Clean up if inside
481260311Spfg	a function.
482260311Spfg	(cp_parser_block_literal_expr): Set DECL_NO_STATIC_CHAIN
483260311Spfg	if inside a function.
484260311Spfg
485260311Spfg2008-08-05  Fariborz Jahanian <fjahanian@apple.com>
486260311Spfg
487260311Spfg	 Radar 6040305 - work in progress.
488260311Spfg	* decl.c (init_byref_decl): Generate c-style helper
489260311Spfg	functions for compose/dispose helpers.
490260311Spfg
491260311Spfg2008-08-04  Fariborz Jahanian <fjahanian@apple.com>
492260311Spfg
493260311Spfg	 Radar 6040305 - work in progress.
494260311Spfg	* decl.c (synth_block_byref_id_object_copy_func,
495260311Spfg	synth_block_byref_id_object_dispose_func,
496260311Spfg	block_start_struct, block_finish_struct,
497260311Spfg	new_block_byref_decl, init_byref_decl): New routines.
498260311Spfg	(cp_finish_decl): Build the APIed version of 
499260311Spfg	a __byref local vriable.
500260311Spfg	* semantics.c (finish_id_expression): Add a __byref
501260311Spfg	variable to the list of such variables for current
502260311Spfg	block.
503260311Spfg	* parser.c (build_component_ref): Fix to make it work.
504260311Spfg	(cp_parser_block_literal_expr): Push/pop language-c,
505260311Spfg	set context of the helper function.
506260311Spfg	(declare_block_prologue_local_vars): Mend tree for
507260311Spfg	the built-in local variables in the helper prologue.
508260311Spfg
509260311Spfg2008-07-30  Fariborz Jahanian <fjahanian@apple.com>
510260311Spfg
511260311Spfg	 Radar 6040305
512260311Spfg	* call.c (standard_conversion): Allow conversion of 'id'
513260311Spfg	type to a block pointer.
514260311Spfg
515260311Spfg2008-07-30  Fariborz Jahanian <fjahanian@apple.com>
516260311Spfg
517260311Spfg	 Radar 6040305
518260311Spfg	* typeck.c (build_block_call): New
519260311Spfg	(build_function_call): Call build_block_call
520260311Spfg	for block calls.
521260311Spfg	* call.c (standard_conversion): Remove "void *" to
522260311Spfg	block pointer conversion.
523260311Spfg
524260311Spfg2008-07-29  Fariborz Jahanian <fjahanian@apple.com>
525260311Spfg
526260311Spfg	 Radar 6040305
527260311Spfg	* call.c (standard_conversion): Allow assignment of
528260311Spfg	"void *" to block pointer object.
529260311Spfg
530260311Spfg2008-07-28  Fariborz Jahanian <fjahanian@apple.com>
531260311Spfg
532260311Spfg	 Radar 6040305
533260311Spfg	* typeck.c (comptypes): block-pointer types'
534260311Spfg	return type get special treatment.
535260311Spfg
536260311Spfg2008-07-16  Eugene Marinelli <marinelli@apple.com>
537260311Spfg
538260311Spfg	Radar 5559195
539260311Spfg	* decl.c (cxx_maybe_build_cleanup): When considering whether to
540260311Spfg	build a cleanup for a class type, use
541260311Spfg	CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY and
542260311Spfg	CLASSTYPE_DESTRUCTOR_NONTRIVIAL_BECAUSE_OF_BASE instead of
543260311Spfg	TYPE_HAS_NONTRIVIAL_DESTRUCTOR to determine whether it must be
544260311Spfg	output.
545260311Spfg
546260311Spfg2008-07-15  Eugene Marinelli <marinelli@apple.com>
547260311Spfg
548260311Spfg	Radar 5559195
549260311Spfg	* cp-tree.h (struct lang_type_class): Add destructor_triviality_final
550260311Spfg	flag to mark when has_nontrivial_destructor_body and
551260311Spfg	destructor_nontrivial_because_of_base are final.  Add accessor for
552260311Spfg	this flag.
553260311Spfg	* parser.c (cp_parser_statement_seq_opt): Use 
554260311Spfg	CLASSTYPE_DESTRUCTOR_TRIVIALITY_FINAL to determine if
555260311Spfg	destructor should be checked for being empty, and set it if
556260311Spfg	CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY is changed.
557260311Spfg
558260311Spfg2008-07-10  Eugene Marinelli <marinelli@apple.com>
559260311Spfg
560260311Spfg	Radar 5559195
561260311Spfg	* init.c (push_base_cleanups): Check flags indicating whether
562260311Spfg	destructor of base class has a nontrivial body, has a base destructor
563260311Spfg	that must be called, or is private to determine whether it should be
564260311Spfg	called by the derived class.  Set
565260311Spfg	CLASSTYPE_DESTRUCTOR_NONTRIVIAL_BECAUSE_OF_BASE to 1 if it has
566260311Spfg	members that must be deleted.
567260311Spfg	* class.c (check_bases, finish_struct_bits,
568260311Spfg	add_implicitly_declared_members): Set
569260311Spfg	CLASSTYPE_DESTRUCTOR_NONTRIVIAL_BECAUSE_OF_BASE and
570260311Spfg	CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY based on base classes.
571260311Spfg	(check_methods): Set CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY to 1
572260311Spfg	whenever a user-declared destructor is seen as a conservative
573260311Spfg	assumption.
574260311Spfg	* cp-tree.h (struct lang_type_class): Add
575260311Spfg	has_nontrivial_destructor_body and
576260311Spfg	destructor_nontrivial_because_of_base flags.  Decrement remaining
577260311Spfg	dummy bits.  Add accessors for these flags.
578260311Spfg	* parser.c (cp_parser_statement_seq_opt): Unmark
579260311Spfg	CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY and then set it again only if
580260311Spfg	a statement is parsed.
581260311Spfg
582260311Spfg2007-05-07  Fariborz Jahanian <fjahanian@apple.com>
583260311Spfg
584260311Spfg	 Radar 4157812
585260311Spfg	* parser.c (cp_parser_objc_method_keyword_params): Recognize optional
586260311Spfg	method argument attribute.
587260311Spfg
588260311Spfg2007-03-21  Fariborz Jahanian <fjahanian@apple.com>
589260311Spfg
590260311Spfg	 Radar 2848255
591260311Spfg	 * except.c (do_begin_catch): Take a new argument to decide
592260311Spfg	 to call objc_begin_catch for objc exceptions.
593260311Spfg	 (objcp_build_eh_type_type): New.
594260311Spfg	 (do_end_catch): Call objc_end_catch for objc type
595260311Spfg	 exceptions.
596260311Spfg	 (expand_start_catch_block): Add new argument to do_begin_catch call.
597260311Spfg	 (build_throw): Call objc_throw_exception for throwing objc type objects.
598260311Spfg	 * cp-tree.h (objc2_valid_objc_catch_type, objcp_build_eh_type_type):
599260311Spfg	 New extern decl.
600260311Spfg	 * parser.c (cp_parser_objc_try_catch_finally_stateme): Add syntax for
601260311Spfg	 @catch(...).
602260311Spfg
603260311Spfg2006-04-26 Fariborz Jahanian <fjahanian@apple.com>
604260311Spfg
605260311Spfg	 Radar 3803157 (method attributes)
606260311Spfg	* parser.c (cp_parser_objc_maybe_attributes): New.
607260311Spfg	(cp_parser_objc_method_keyword_params): Parse attributes at end
608260311Spfg	of method declaration.
609260311Spfg	(cp_parser_objc_method_tail_params_opt): Parse attributes after
610260311Spfg	'...'.
611260311Spfg	(cp_parser_objc_method_signature): Retreive method attribute for
612260311Spfg	the caller.
613260311Spfg	(cp_parser_objc_method_prototype_list): Pass new arg. to
614260311Spfg	cp_parser_objc_method_signature and pass attributes to 
615260311Spfg	objc_add_method_declaration.
616260311Spfg	(cp_parser_objc_method_definition_list): Pass new arg. to
617260311Spfg	cp_parser_objc_method_signature and pass attributes to
618260311Spfg	objc_start_method_definition.
619260311Spfg	
620260311Spfg2006-03-27 Fariborz Jahanian <fjahanian@apple.com>
621260311Spfg
622260311Spfg	 Radar 4133425
623260311Spfg	* lex.c (unqualified_name_lookup_error): Issue diagnostic
624260311Spfg	for private 'ivar' access.
625260311Spfg
626260311Spfg2006-02-02   Fariborz Jahanian <fjahanian@apple.com>
627260311Spfg
628260311Spfg	 Radar 4426814
629260311Spfg	* typeck.c (build_modify_expr): Undo call to objc_read_weak
630260311Spfg	on LHS of the assignment.
631260311Spfg	* parser.c (cp_parser_cast_expression): Central place to add
632260311Spfg	objc_read_weak call on expressions of __weak objects.
633260311Spfg
634260311Spfg2005-12-15  Fariborz Jahanian <fjahanian@apple.com>
635260311Spfg
636260311Spfg	Radar 4229905
637260311Spfg	* typeck.c (composite_pointer_type): Call objc_have_common_type
638260311Spfg	when comparing two objective-c pointer types.
639260311Spfg
640260311Spfg2005-10-17  Fariborz Jahanian <fjahanian@apple.com>
641260311Spfg
642260311Spfg	Radar 4290840
643260311Spfg	
644260311Spfg	* parser.c (cp_parser_objc_method_keyword_params): Check for valid
645260311Spfg	method parameters and issue error.
646260311Spfg	(cp_parser_objc_method_definition_list): Check for invalid tokens
647260311Spfg	which cannot start a function definition.
648260311Spfg
649260311Spfg2005-08-02  Ziemowit Laski  <zlaski@apple.com>
650260311Spfg
651260311Spfg	Radar 4185810
652260311Spfg	* parser.c (cp_parser_compound_statement): Continue
653260311Spfg	parsing even if the initial '{' is missing; an error
654260311Spfg	message is already being produced.
655260311Spfg	(cp_parser_statement_seq_opt): In addition to '}' and
656260311Spfg	end-of-file, a statement sequence may also be terminated
657260311Spfg	by a stray 'else' or '@end'.
658260311Spfg
659260014Spfg # APPLE LOCAL begin for-fsf-4_4 3274130 5295549
660260014Spfg2007-08-03  Geoffrey Keating  <geoffk@apple.com>
661260014Spfg
662260014Spfg	Radar 5295549
663260014Spfg	* parser.c (cp_parser_iteration_statement): Handle attributes.
664260014Spfg	* semantics.c (begin_for_stmt): Put attributes in built tree.
665260014Spfg	(begin_while_stmt): Put attributes in built tree.
666260014Spfg	(begin_do_stmt): Put attributes in built tree.
667260014Spfg	* pt.c (tsubst_expr): Handle attributes for FOR_STMT, WHILE_STMT,
668260014Spfg	DO_STMT.
669260014Spfg	* cp-gimplify.c (gimplify_cp_loop): Handle attributes.
670260014Spfg	(gimplify_for_stmt): Pass attributes to gimplify_cp_loop.
671260014Spfg	(gimplify_while_stmt): Pass attributes to gimplify_cp_loop.
672260014Spfg	(gimplify_do_stmt): Pass attributes to gimplify_cp_loop.
673260014Spfg	* dump.c (cp_dump_tree): Dump attributes for FOR_STMT, WHILE_STMT,
674260014Spfg	DO_STMT.
675260014Spfg	* cp-tree.h (begin_while_stmt): Update prototype.
676260014Spfg	(begin_do_stmt): Likewise.
677260014Spfg	(begin_for_stmt): Likewise.
678260014Spfg	* cp-tree.def (FOR_STMT): Add extra parameter.
679260014Spfg	(WHILE_STMT): Likewise.
680260014Spfg	(DO_STMT): Likewise.
681260014Spfg	* init.c (build_vec_init): Update for change to begin_for_stmt.
682260014Spfg
683260014Spfg # APPLE LOCAL end for-fsf-4_4 3274130 5295549
684