1260311Spfg2010-03-16  Fariborz Jahanian <fjahanian@apple.com>
2260014Spfg
3260311Spfg	 Radar 7760213
4260311Spfg	* c-common.h (HasByrefArray): New decl.
5260311Spfg	* c-common.c (HasByrefArray): New definition.
6260311Spfg	* c-typeck.c (build_external_ref): Diagnose access of
7260311Spfg	__block array.
8260311Spfg
9260311Spfg2010-03-12  Jim Grosbach <grosbach@apple.com>
10260311Spfg
11260311Spfg	Radar 7744816
12260311Spfg
13260311Spfg	* expmed.c (synth_mult): Remove incorrect special case handling for
14260311Spfg	0xffffffff.
15260311Spfg
16260311Spfg2010-03-12  Fariborz Jahanian <fjahanian@apple.com>
17260311Spfg
18260311Spfg	 Radar 7735196
19260311Spfg	 * c-parser.c (build_block_struct_initlist): 
20260311Spfg	 Set BLOCK_USE_STRET flag in block descriptor for
21260311Spfg	 blocks which return their aggregate value in memory.
22260311Spfg	* c-common.h (BLOCK_USE_STRET): New flag.
23260311Spfg
24260311Spfg2010-03-05  Fariborz Jahanian <fjahanian@apple.com>
25260311Spfg
26260311Spfg	Radar 7721728
27260311Spfg	* c-typeck.c (build_external_ref): Diagnose
28260311Spfg	importation of copied-in variables.
29260311Spfg
30260311Spfg2009-03-12  Caroline Tice  <ctice@apple.com>
31260311Spfg
32260311Spfg	 Radar 6144634
33260311Spfg	 * c-parser.c (c_parser_statement_after_labels): When
34260311Spfg	 re-setting the expression location at the end, use the input
35260311Spfg	 location for Block pointer assignments.
36260311Spfg
37260311Spfg2009-02-11  Fariborz Jahanian <fjahanian@apple.com>
38260311Spfg
39260311Spfg	Radar 6573923
40260311Spfg	* c-decl.c (synth_block_byref_id_object_copy_func,
41260311Spfg	synth_block_byref_id_object_dispose_func): Set BLOCK_BYREF_CALLER
42260311Spfg	flag in call to copy/dispose helper functions.
43260311Spfg	* c-common.h (BLOCK_BYREF_CALLER): New flag.
44260311Spfg
45260311Spfg2008-12-21  Caroline Tice  <ctice@apple.com>
46260311Spfg
47260311Spfg	 Radar 6455678
48260311Spfg	 * cp/typeck.c (original_type):  Stop if the type
49260311Spfg	and its DECL_ORIGINAL_TYPE are the same.
50260311Spfg
51260311Spfg2008-12-18  Bill Wendling  <wendling@apple.com>
52260311Spfg
53260311Spfg	 Radar 6457359
54260311Spfg	 * c-parser.c (build_block_struct_initlist): Changed type.
55260311Spfg	 * cp/parser.c (build_block_struct_initlist): Ditto.
56260311Spfg
57260311Spfg2008-12-02  Caroline Tice  <ctice@apple.com>
58260311Spfg
59260311Spfg	Radar 6386976
60260311Spfg	* objcp/objcp-decl.h (TYPE_HAS_OBJCXX_INFO):  New macro.
61260311Spfg	* objcp/objcp-lang.c  (objcp-decl.h):  New include statement, with
62260311Spfg	required define.      
63260311Spfg	(LANG_HOOKS_IS_RUNTIME_SPECIFIC_TYPE):  Redefine for
64260311Spfg	obj-c++.
65260311Spfg	(objcxx_is_runtime_type):  New function.
66260311Spfg
67260311Spfg2008-12-02  Fariborz Jahanian <fjahanian@apple.com>
68260311Spfg
69260311Spfg	 Radar 6411649
70260311Spfg	* funciton.h: Added new field.
71260311Spfg	* c-common.c (build_block_helper_name): Produce a unique
72260311Spfg	   block number per each enclosing function when building
73260311Spfg	   the block helper function name.
74260311Spfg
75260311Spfg2008-11-18  Stuart Hastings  <stuart@apple.com>
76260311Spfg
77260311Spfg	Radar 6353006
78260311Spfg	* tree.c (generic_block_literal_struct_type): Fix APPLE LOCAL.
79260311Spfg	* langhooks-def.h (lhd_build_generic_block_struct_type): Fix
80260311Spfg	   APPLE LOCAL.
81260311Spfg
82260311Spfg2008-11-07  Fariborz Jahanian <fjahanian@apple.com>
83260311Spfg
84260311Spfg	 Radar 5847976
85260311Spfg	* c-decl.c (synth_block_byref_id_object_copy_func): Takes a new
86260311Spfg	'flag' argument and generates the much simplified API.
87260311Spfg	(synth_block_byref_id_object_dispose_func): Ditto.
88260311Spfg	(new_block_byref_decl): Hack to prevent issuing bogus warning
89260311Spfg	on a field declared as __weak.
90260311Spfg	(init_byref_decl): Takes an additional 'flag' argument
91260311Spfg	and passes it down to synth_block_byref_id_object_copy_func and
92260311Spfg	synth_block_byref_id_object_dispose_func.
93260311Spfg	(finish_decl): Computes the flag for the block variable declaration.
94260311Spfg	* c-common.c (build_block_byref_release_decl, 
95260311Spfg	build_block_byref_assign_copy_decl): Removed.
96260311Spfg	(build_block_byref_release_exp): Use the new API.
97260311Spfg	(build_block_object_assign_decl, build_block_object_assign_call_exp,
98260311Spfg	build_block_object_dispose_decl, build_block_object_dispose_call_exp): New.			
99260311Spfg	(build_indirect_object_id_exp): Fixed a code gen bug which was exposed in
100260311Spfg	c/c++ mode, but not in ObjC/ObjC++ mode.
101260311Spfg	* c-common.h (build_block_object_assign_call_exp,
102260311Spfg	build_block_object_dispose_call_exp,
103260311Spfg	objc_is_gcable_type): New decls.
104260311Spfg	Declaration of several new flags.
105260311Spfg	(cast_to_pointer_to_id): Removed.
106260311Spfg	* stub-objc.c (objc_is_gcable_type): New
107260311Spfg	(copy_in_object, retain_block_component, release_block_component): Removed.
108260311Spfg	(cast_to_pointer_to_id): Removed.
109260311Spfg	* c-parser.c (build_block_struct_initlist): Remove call to copy_in_object.
110260311Spfg	(synth_copy_helper_block_func): Generates much simplified API.
111260311Spfg	(synth_destroy_helper_block_func): Ditto.
112260311Spfg	(block_object_dispose): Removed.
113260311Spfg	* config/darwin-c.c (darwin_cpp_builtins): Define __weak even when
114260311Spfg	-fobjc-gc is off.
115260311Spfg
116260311Spfg2008-10-31  Fariborz Jahanian <fjahanian@apple.com>
117260311Spfg
118260311Spfg	 Radar 6175959
119260311Spfg	* stub-objc.c (block_requires_copying): Object pointers with
120260311Spfg	NSObject attribute also require copy/release API.
121260311Spfg	 * c-parser.c (synth_copy_helper_block_func): Use the new API
122260311Spfg	 _Block_object_assign for ObjC object copying.
123260311Spfg	 (block_object_dispose): New
124260311Spfg	 (synth_destroy_helper_block_func): Call block_object_dispose
125260311Spfg	 to use new _Block_object_dispose API for ObjC object release.
126260311Spfg
127260311Spfg2008-10-27  Fariborz Jahanian <fjahanian@apple.com>
128260311Spfg
129260311Spfg	 Radar 6231433
130260311Spfg	 * c-typeck.c (objc_compare_types, objc_have_common_type):
131260311Spfg	 Take an extra argument for better diagnostics.
132260311Spfg	* c-common.c (objc_compare_types, objc_have_common_type):
133260311Spfg	Take extra argument.
134260311Spfg	* stub-objc.c: Ditto
135260311Spfg	
136260311Spfg2008-10-24  Fariborz Jahanian <fjahanian@apple.com>
137260311Spfg
138260311Spfg	Radar 6305545
139260311Spfg	* cgraph.h (lower_if_nested_functions): New decl.
140260311Spfg	* tree-gimple.h (lower_nested_functions): Takes one more arg.
141260311Spfg	* cgraphunit.c (lower_if_nested_functions): New
142260311Spfg	* tree-nested.c (lower_nested_functions): Skip structors.
143260311Spfg
144260311Spfg2008-10-24  Fariborz Jahanian <fjahanian@apple.com>
145260311Spfg
146260311Spfg	Radar 5847213 (minor tweak)
147260311Spfg	* c-decl.c (build_block_descriptor_type):
148260311Spfg	Make descriptor_ptr_type and descriptor_ptr_type_with_copydispose
149260311Spfg	visible to pch.
150260311Spfg
151260311Spfg2008-10-23  Caroline Tice  <ctice@apple.com>
152260311Spfg
153260311Spfg	 Radar 6300081
154260311Spfg	* tree.c(build_block_pointer_type):  Add call to 
155260311Spfg	build_generic_block_struct_type to initialize 
156260311Spfg	generic_block_literal_struct_type if necessary.
157260311Spfg	* cp/parser.c (build_generic_block_struct_type):  Update comments.
158260311Spfg	(build_block_struct_type):  Remove call to 
159260311Spfg	build_generic_block_struct_type.
160260311Spfg	(make_block_pointer_declarator):  Likewise.
161260311Spfg	* c-decl.c (make_block_pointer_declarator):  Likewise.
162260311Spfg	* c-parser.c (build_block_struct_type):  Likewise.
163260311Spfg	(build_generic_block_struct_type):  Update comments.
164260311Spfg
165260311Spfg2008-10-22  Caroline Tice  <ctice@apple.com>
166260311Spfg
167260311Spfg	 Radar 6300081 & Radar 6163705
168260311Spfg	 * tree.h (generic_block_literal_struct_type):  Extern global variable
169260311Spfg	 decl.
170260311Spfg	 (build_generic_block_struct_type):  New extern function decl.
171260311Spfg	 * cp/parser (build_generic_block_struct_type): New function.
172260311Spfg	 (build_block_struct_type):   Call build_generic_block_struct_type
173260311Spfg	 to initialize generic_block_literal_struct_type.
174260311Spfg	 (make_block_pointer_declarator):  Likewise.
175260311Spfg	 (declare_block_prologue_local_vars):  Temporarily set input_location
176260311Spfg	 to 1 before the start of the block function; re-set input_location at
177260311Spfg	 the end of this function.
178260311Spfg	 * dwarf2out.c (add_type_attribute):  If the type is a
179260311Spfg	 BLOCK_POINTER_TYPE, assign it to be a pointer to a
180260311Spfg	 generic_block_literal_struct_type.
181260311Spfg	 * c-decl.c (make_block_pointer_declarator): Call
182260311Spfg	 build_generic_block_struct_type to initialize
183260311Spfg	 generic_block_literal_struct_type.
184260311Spfg	 * c-common.c (generic_block_literal_struct_type):  New global variable.
185260311Spfg	 * c-parser.c (build_generic_block_struct_type):  New function.
186260311Spfg	 (build_block_struct_type):   Call build_generic_block_struct_type
187260311Spfg	 to initialize  generic_block_literal_struct_type.
188260311Spfg	 * testsuite/gcc.apple/block-debug-1.c:  Fix test to work with new
189260311Spfg	 compiler modifications.
190260311Spfg	 * testsuite/gcc.apple/block-debug-2.c:  Likewise.
191260311Spfg	 * testsuite/g++.apple/block-debug-1.C:  Likewise.
192260311Spfg	 * testsuite/g++.apple/block-debug-2.C:  Likewise.
193260311Spfg
194260311Spfg2008-10-10  Fariborz Jahanian <fjahanian@apple.com>
195260311Spfg
196260311Spfg	Radar 5847213 - New Block ABI
197260311Spfg	* dwarf2out.c (add_type_attribute): Unusuable code
198260311Spfg	for radar 5811943 is removed.
199260311Spfg	* c-decl.c (build_block_byref_decl): Removed unneeded 
200260311Spfg	build of block_original_byref_decl_list.
201260311Spfg	(build_block_internal_types): Removed.
202260311Spfg	(build_block_descriptor_type): New routine to build the descriptor type.
203260311Spfg	(make_block_pointer_declarator): Unused code is removed.
204260311Spfg	* c-typeck.c (build_block_call): New code gen for block calls.
205260311Spfg	* c-common.c (invoke_impl_ptr_type): Removed.
206260311Spfg	* c-common.h (block_original_byref_decl_list, build_block_internal_types): Removed
207260311Spfg	(build_block_descriptor_type, BLOCK_HAS_DESCRIPTOR): Decls added.
208260311Spfg	* c-parser.c (build_block_struct_type): Block literal expression internal type
209260311Spfg	is redeclared into its new layout.
210260311Spfg	(build_block_struct_initlist): Initializer list for above type is redone.
211260311Spfg	(build_descriptor_block_decl): New routine to declare the descriptor variable
212260311Spfg	(build_block_literal_tmp): Modified for the new type and initiazation.
213260311Spfg		
214260311Spfg2008-10-06  Fariborz Jahanian <fjahanian@apple.com>
215260311Spfg
216260311Spfg	 Radar 6268817
217260311Spfg	* c-decl.c (check_for_loop_decls): Block helper function
218260311Spfg	is OK if declared in a for-loop main statement block.
219260311Spfg
220260311Spfg2008-10-02  Fariborz Jahanian <fjahanian@apple.com>
221260311Spfg
222260311Spfg	 Radar 6246527
223260311Spfg	* attribs.c (decl_attributes): Added support for adding attributes
224260311Spfg	on block pointer variable declarations.
225260311Spfg	* c-common.c (block_delta_format_args): Add
226260311Spfg	(any_recognized_block_attribute): Add
227260311Spfg	* c-common.h (any_recognized_block_attribute): New decl.
228260311Spfg	* c-parser.c (c_parser_block_literal_expr): Call to do the delta
229260311Spfg	on printf attribute.
230260311Spfg
231260311Spfg2008-09-30  Fariborz Jahanian <fjahanian@apple.com>
232260311Spfg
233260311Spfg	 Radar 6225809
234260311Spfg	* c-decl.c (build_block_byref_decl): Add __block vaiables
235260311Spfg	to intervening blocks.
236260311Spfg
237260311Spfg2008-09-25  Fariborz Jahanian <fjahanian@apple.com>
238260311Spfg
239260311Spfg	 Radar 6237713
240260311Spfg	* c-common.c (handle_noreturn_attribute): Add 'noreturn'
241260311Spfg	attribute to block pointer decls.
242260311Spfg	* c-parser.c (c_parser_block_literal_expr): Parse and set
243260311Spfg	attributes on block literals.
244260311Spfg
245260311Spfg2008-09-25  Fariborz Jahanian <fjahanian@apple.com>
246260311Spfg
247260311Spfg	 Radar 6244520 - minor addition
248260311Spfg	* c-common.c (build_indirect_object_id_exp): offset needs
249260311Spfg	be updated to accomodate addition of the new field.
250260311Spfg
251260311Spfg2008-09-16  Fariborz Jahanian <fjahanian@apple.com>
252260311Spfg
253260311Spfg	 Radar 6214617
254260311Spfg	* c-common: New flag BLOCK_HAS_CXX_OBJ replaces BLOCK_NO_COPY.
255260311Spfg	(BlockImportsCxxObjects): New field replaces BlockHasByrefVar.
256260311Spfg	* c-parser.c (build_block_struct_type): Remove setting of
257260311Spfg	BLOCK_NO_COPY flag.
258260311Spfg
259260311Spfg2008-09-16  Fariborz Jahanian <fjahanian@apple.com>
260260311Spfg
261260311Spfg	Radar 6217257
262260311Spfg	* c-common.c (handle_blocks_attribute): Diagnose 
263260311Spfg	vla __block declarations.
264260311Spfg
265260311Spfg2008-09-12  Fariborz Jahanian <fjahanian@apple.com>
266260311Spfg
267260311Spfg	 Radar 6212722 (tweak)
268260311Spfg	* c-decl.c (build_block_ref_decl): Use array_to_pointer_conversion
269260311Spfg	and function_to_pointer_conversion.
270260311Spfg	* c-typeck.c (array_to_pointer_conversion, function_to_pointer_conversion):
271260311Spfg	Made them global.
272260311Spfg	* c-common.h (array_to_pointer_conversion, function_to_pointer_conversion):
273260311Spfg	Declare.
274260311Spfg	
275260311Spfg2008-09-09  Fariborz Jahanian <fjahanian@apple.com>
276260311Spfg
277260311Spfg	 Radar 6169580
278260311Spfg	* c-commmon.c (build_block_helper_name): Fix bug in
279260311Spfg	block helper function name mangling.
280260311Spfg
281260311Spfg2008-09-03  Fariborz Jahanian <fjahanian@apple.com>
282260311Spfg
283260311Spfg	 Radar 6185344
284260311Spfg	* c-typeck.c (c_finish_return): Don't do block specific
285260311Spfg	stuff when block has a return type.
286260311Spfg	* c-common.h (block_sema_info): block_has_return_type is
287260311Spfg	a new field.
288260311Spfg	* c-parser.c (c_parser_direct_declarator): Terminate type
289260311Spfg	parsing for block return types.
290260311Spfg	(c_parser_block_literal_expr): Added support to parse and
291260311Spfg	handle explicit return type for blocks.
292260311Spfg
293260311Spfg2008-08-28  Fariborz Jahanian <fjahanian@apple.com>
294260311Spfg
295260311Spfg	 Radar 6160536
296260311Spfg	* c-commmon.c (build_block_helper_name): New
297260311Spfg	* c-common.h (build_block_helper_name): New decl.
298260311Spfg	* c-parser.c (c_parser_block_literal_expr): Call
299260311Spfg	build_block_helper_name to build pretty helper function
300260311Spfg	name.
301260311Spfg
302260311Spfg2008-08-28  Fariborz Jahanian <fjahanian@apple.com>
303260311Spfg
304260311Spfg	 Radar 6180456
305260311Spfg	* c-decl.c (synth_block_byref_id_object_copy_func): Different
306260311Spfg	API for copying __block declared objects in c.
307260311Spfg	(synth_block_byref_id_object_dispose_func): Different API
308260311Spfg	for releasing __block declared objects in c.
309260311Spfg	* c-common.c (block_byref_assign_copy_decl): New
310260311Spfg	(build_indirect_object_id_exp): Cast to 'id *' in objective-c
311260311Spfg	mode only.
312260311Spfg	* c-common.h (build_block_byref_assign_copy_decl): New decl.
313260311Spfg	* c-parser.c (synth_copy_helper_block_func): Refactored code
314260311Spfg	to call build_block_byref_assign_copy_decl().
315260311Spfg	
316260311Spfg2008-08-24  Caroline Tice  <ctice@apple.com>
317260311Spfg
318260311Spfg	Radars 6144664, 6145471, 6144634
319260311Spfg	c-decl.c (build_block_byref_decl):  Assign the source
320260311Spfg	location for each byref decl to the source location of
321260311Spfg	the helper function decl.
322260311Spfg	(build_block_ref_decl):  Ditto for ref decls.
323260311Spfg
324260311Spfg2008-08-14  Fariborz Jahanian <fjahanian@apple.com>
325260311Spfg
326260311Spfg	 Radar 5822844
327260311Spfg	* c-typeck.c (digest_init): Handler block as initializer.
328260311Spfg	(c_finish_return): check for completed block before
329260311Spfg	analyzing block's return expression.
330260311Spfg	* varasm.c (output_constant): Allow outputting block data.
331260311Spfg	* c-common.h (BLOCK_IS_GLOBAL): New flag.
332260311Spfg	(block_is_complete): New field in block data structure.
333260311Spfg	* c-parser.c (build_block_struct_initlist): New initializer and
334260311Spfg	flag for global block data.
335260311Spfg	(build_block_literal_tmp): Temporary data for global block is
336260311Spfg	declared as global static.
337260311Spfg	(c_parser_block_literal_expr): Removed diagnostics for global blocks.
338260311Spfg	Moved fixing helper function type earlier before its tree is built.
339260311Spfg	
340260311Spfg2008-08-06  Fariborz Jahanian <fjahanian@apple.com>
341260311Spfg
342260311Spfg	 Radar 6014138 
343260311Spfg	* c-decl.c (build_block_byref_decl): In the presence of nested "{" 
344260311Spfg	  move up the scope chain until reaching the main function body's scope.
345260311Spfg
346260311Spfg2008-08-04  Fariborz Jahanian <fjahanian@apple.com>
347260311Spfg
348260311Spfg	 Radar 6040305 - work in progress.
349260311Spfg	* c-decl.c (build_indirect_object_id_exp): Removed.
350260311Spfg	* c-common.c (build_indirect_object_id_exp): Added
351260311Spfg	* c-common.h (build_indirect_object_id_exp): New decl.
352260311Spfg	* config/darwin-c.c (darwin_cpp_builtins): Define __byref
353260311Spfg	in c++ mode as well.
354260311Spfg
355260311Spfg2008-07-18  Fariborz Jahanian <fjahanian@apple.com>
356260311Spfg
357260311Spfg	 Radar 6083129 - twiked
358260311Spfg	* c-decl.c (release_all_local_byrefs_at_return): Do not release
359260311Spfg	imported __byref variables in the block.
360260311Spfg	* c-parser.c (gen_block_byref_release_exp): Do not release __byref
361260311Spfg	variables outside of the block when returning from the block.
362260311Spfg
363260311Spfg2008-07-15  Fariborz Jahanian <fjahanian@apple.com>
364260311Spfg
365260311Spfg	 Radar 5988451
366260311Spfg	* c-decl.c (build_block_ref_decl): Insert copied in variable
367260311Spfg	in each enclosing block which does not use it.
368260311Spfg	(begin_block): Remove setting of "the_scope" field of the block.
369260311Spfg	(in_imm_block): Fix effect of changing the "the_scope" field.
370260311Spfg	(lookup_name_in_block): Do not skip over copied-in variables when
371260311Spfg	looking up a variable in the block.
372260311Spfg	* c-parser.c (c_parser_block_literal_expr): Set block's "the_scope" field
373260311Spfg	to the helper function's outer-most body scope.
374260311Spfg
375260311Spfg2008-07-08  Fariborz Jahanian <fjahanian@apple.com>
376260311Spfg
377260311Spfg	 Radar 6048570
378260311Spfg	* c-typeck.c (c_finish_return): Error on returning a block on the stack.
379260311Spfg
380260311Spfg2008-06-05  Fariborz Jahanian <fjahanian@apple.com>
381260311Spfg
382260311Spfg	 Radar 5988995
383260311Spfg	* c-typeck.c (types_are_closure_compatible): Nested block pointer
384260311Spfg	types must be considered when matching block types.
385260311Spfg
386260311Spfg2008-06-05  Fariborz Jahanian <fjahanian@apple.com>
387260311Spfg
388260311Spfg	 Radar 5982990
389260311Spfg	* c-parser.c (c_parser_objc_synch_compound_statement): New
390260311Spfg	(c_parser_objc_synchronized_statement): Call
391260311Spfg	c_parser_objc_synch_compound_statement.
392260311Spfg
393260311Spfg2008-06-04  Fariborz Jahanian <fjahanian@apple.com>
394260311Spfg
395260311Spfg	 Radar 5985368
396260311Spfg	* c-parser.c (c_parser_declaration_or_fndef): Better diagnostics for
397260311Spfg	a bad block definition.
398260311Spfg
399260311Spfg2008-05-23  Fariborz Jahanian <fjahanian@apple.com>
400260311Spfg
401260311Spfg	 Radar 5925781
402260311Spfg	* c-common.c (handle_nonnull_attribute): Support block pointer
403260311Spfg	just like a pointer for nonnull attribute.
404260311Spfg	(check_nonnull_arg): Ditto.
405260311Spfg
406260311Spfg2008-05-20  Fariborz Jahanian <fjahanian@apple.com>
407260311Spfg
408260311Spfg	 Radar 5932809 - minor change for runtime delight.
409260311Spfg	* c-parser.c (build_closure_struct_type): Add strcutor fields
410260311Spfg	for __byref 'id' object blocks as well.
411260311Spfg	(build_closure_struct_initlist): And their initializers.
412260311Spfg	
413260311Spfg2008-04-30  Caroline Tice  <ctice@apple.com>
414260311Spfg
415260311Spfg	 Radar 5811961
416260311Spfg	 * c-decl.c:  (declare_closure_prologue_local_vars):  Set the source
417260311Spfg		location for the new decl expr statement to be the source location of
418260311Spfg		the decl tree.
419260311Spfg
420260311Spfg2008-04-25  Fariborz Jahanian <fjahanian@apple.com>
421260311Spfg
422260311Spfg	 Radar 5803005 (tweaked)
423260311Spfg	* c-typeck.c (build_external_ref): Refactored global decl checks.
424260311Spfg
425260311Spfg2008-04-24  Caroline Tice  <ctice@apple.com>
426260311Spfg
427260311Spfg	 Radar 5811943
428260311Spfg	* tree.h (TYPE_CLOSURE_IMPL_STRUCT):  New macro.
429260311Spfg	(lang_flag_2): Use previously unused field in tree_type to indicate
430260311Spfg	closure structs.
431260311Spfg	*  dwarf2out.c (c-common.h):  New include statement.
432260311Spfg	(dwarf_attr_name):  Add case for DW_AT_APPLE_closure.
433260311Spfg	(gen_variable_die):  Give pointers to closures the
434260311Spfg	invoke_impl_ptr_type.
435260311Spfg	(gen_struct_or_union_type_die):  Add DW_AT_APPLE_closure
436260311Spfg	to structs that define closures.
437260311Spfg	* dwarf2.h (DW_AT_APPLE_closure):  New Dwarf attribute.
438260311Spfg	* c-typeck.c (invoke_impl_ptr_type):  Move declaration from here to
439260311Spfg	c-common.c
440260311Spfg	(build_closure_internal_types):   Set TYPE_CLOSURE_IMPL_STRUCT
441260311Spfg	flag for closure structs.
442260311Spfg	* c-common.c (invoke_impl_ptr_type):  Move declaration to here from
443260311Spfg	c-typeck.c.
444260311Spfg
445260311Spfg2008-04-23  Fariborz Jahanian <fjahanian@apple.com>
446260311Spfg
447260311Spfg	 Radar 5882266
448260311Spfg	* c-typeck.c (types_are_closure_compatible): Check for underlying
449260311Spfg	pointer types as well.
450260311Spfg
451260311Spfg2008-04-15  Stuart Hastings  <stuart@apple.com>
452260311Spfg
453260311Spfg	Radar 5862465
454260311Spfg	* tree.h (PTR_OR_REF_CHECK, POINTER_TYPE_P): Add
455260311Spfg	   CLOSURE_POINTER_TYPE.
456260311Spfg	* fold-const.c (fold_convert): Add CLOSURE_POINTER_TYPE.
457260311Spfg	* testsuite/gcc.apple/closure-5862465.c: New.
458260311Spfg
459260311Spfg2008-03-31  Fariborz Jahanian <fjahanian@apple.com>
460260311Spfg
461260311Spfg	Radar 5831855
462260311Spfg	* c-typeck.c (convert_for_assignment): Block and 'id' types
463260311Spfg	are interchangeable.
464260311Spfg
465260311Spfg2008-03-28  Fariborz Jahanian <fjahanian@apple.com>
466260311Spfg
467260311Spfg	Radar 5809099
468260311Spfg	* convert.c (convert_to_pointer): Allow typecast of closure
469260311Spfg	pointer to 'id'.
470260311Spfg	(convert_to_closure_pointer): Allow typecast of 'id'
471260311Spfg	of a closure pointer expression.
472260311Spfg
473260311Spfg2008-03-25  Fariborz Jahanian <fjahanian@apple.com>
474260311Spfg
475260311Spfg	Radar 5811887 (minor change)
476260311Spfg	* c-opts.c (c_common_post_options): Remove conditional check
477260311Spfg	of pedantic when setting flag_blocks.
478260311Spfg
479260311Spfg2008-03-24  Fariborz Jahanian <fjahanian@apple.com>
480260311Spfg
481260311Spfg	Radar 5811887
482260311Spfg	* c-cppbuiltin.c: flag_closures renamed to flag_blocks
483260311Spfg	* c-parser.c: Ditto.
484260311Spfg	* c.opt: flag_closures renamed to flag_blocks. flag_blocks
485260311Spfg	defaulted to -1.
486260311Spfg	* c-opts.c (c_common_post_options): All flavors of c99, blocks are off by
487260311Spfg	default unless requested via -fblocks.
488260311Spfg
489260311Spfg2008-03-24  Fariborz Jahanian <fjahanian@apple.com>
490260311Spfg
491260311Spfg	Radar 5814025
492260311Spfg	* c-tree.h (make_closure_pointer_declarator): Takes
493260311Spfg	additional argument.
494260311Spfg	* c-decl.c (grokdeclarator): Get 'const'-ness of closure
495260311Spfg	pointer.
496260311Spfg	(make_closure_pointer_declarator): Takes additional argument for
497260311Spfg	const/volatile.
498260311Spfg	* c-parser.c (c_parser_declarator): Pass down attribute info.
499260311Spfg	to make_closure_pointer_declarator.
500260311Spfg
501260311Spfg2008-03-20  Fariborz Jahanian <fjahanian@apple.com>
502260311Spfg
503260311Spfg	Radar 5802025
504260311Spfg	* c-common.h (objc_build_property_getter_func_call): New decl.
505260311Spfg	* stub-objc.c (objc_build_property_getter_func_call): New stub.
506260311Spfg
507260311Spfg2008-03-18  Fariborz Jahanian <fjahanian@apple.com>
508260311Spfg
509260311Spfg	Radar 5803600
510260311Spfg	* c-decl.c (add_closure_global_byref_list,
511260311Spfg	in_closure_global_byref_list): New defs.
512260311Spfg	* c-common.h (add_closure_global_byref_list,
513260311Spfg	in_closure_global_byref_list): New decls.
514260311Spfg	* c-typeck.c (build_external_ref): global variables
515260311Spfg	declared as 'byref' are enterred in their own list
516260311Spfg	of such declarations per each closure.
517260311Spfg	* c-parser.c (c_parser_postfix_expression): Remove previous fix.
518260311Spfg	(c_parser_closure_byref_declaration): Check for global
519260311Spfg	'byref' by calling in_closure_global_byref_list.
520260311Spfg
521260311Spfg2008-03-13  Fariborz Jahanian <fjahanian@apple.com>
522260311Spfg
523260311Spfg	Radar 5795493
524260311Spfg	* c-typeck.c: Renamed typesAreClosureCompatible to
525260311Spfg	types_are_closure_compatible.
526260311Spfg
527260311Spfg2008-03-11  Fariborz Jahanian <fjahanian@apple.com>
528260311Spfg
529260311Spfg	Radar 5732232 (Related to change of command option/macro)
530260311Spfg	* c-cppbuiltin.c: __CLOSURES__ macro rename __BLOCKS__
531260311Spfg	* c.opt: -fclosures change to -fblocks.
532260311Spfg
533260311Spfg2008-03-10  Fariborz Jahanian <fjahanian@apple.com>
534260311Spfg
535260311Spfg	Radar 5782740 - part 2 (bug fix).
536260311Spfg	* c-parser.c (synth_copy_helper_closure,
537260311Spfg	synth_destroy_helper_closure): set DECL_ARG_TYPE field of input
538260311Spfg	arguments for the two synthesized helper functions.
539260311Spfg
540260311Spfg2008-02-21  Caroline Tice  <ctice@apple.com>
541260311Spfg
542260311Spfg	Radar 5741070
543260311Spfg	* objc/objc-act.c (objc_finish_message_expr):  Find
544260311Spfg	the record-type tree from the class interface, and mark the record
545260311Spfg	type as used, for emitting debug info.
546260311Spfg	* cp/cp-objcp-common.c (c_return_interface_record_type):  New function.
547260311Spfg	* cp/cp-tree.h (c_return_interface_record_type): New extern function
548260311Spfg	declaration.
549260311Spfg	* c-tree.h (c_return_interface_record_type): Likewise
550260311Spfg	* c-decl.c (c_return_interface_record_type): New function.
551260311Spfg
552260311Spfg2007-08-22  Fariborz Jahanian <fjahanian@apple.com>
553260311Spfg
554260311Spfg	Radar 4947311
555260311Spfg	* c-common.h (objc_declare_protocols, objc_start_protocol): Decl changed.
556260311Spfg	* stub-objc.c (objc_declare_protocols, objc_start_protocol): Changed.
557260311Spfg	* c-parser.c (c_parser_external_declaration): Call to
558260311Spfg	c_parser_objc_protocol_definition takes additional argument.
559260311Spfg	(c_parser_declaration_or_fndef): Protocols with attributes are processed
560260311Spfg	here by passing it to c_parser_objc_protocol_definition.
561260311Spfg	(c_parser_objc_protocol_definition): Takes additional argument and passes
562260311Spfg	it to objc_declare_protocols or objc_start_protocol.
563260311Spfg
564260311Spfg2007-07-13  Fariborz Jahanian <fjahanian@apple.com>
565260311Spfg
566260311Spfg	Radar 5277239
567260311Spfg	* c-parser.c (c_parser_next_token_starts_declspecs): Exclude
568260311Spfg	objc2's property dot-syntax as a declarator.
569260311Spfg	(c_parser_postfix_expression): Convert property dot-syntax on
570260311Spfg	class objects into a property reference expression.
571260311Spfg
572260311Spfg2007-07-10  Fariborz Jahanian <fjahanian@apple.com>
573260311Spfg
574260311Spfg	Radar 5285911
575260311Spfg	* tree.h (CALL_EXPR_OBJC_PROPERTY_GETTER): Macro removed.
576260311Spfg	* c-typeck.c (build_component_ref): Call
577260311Spfg	objc_build_property_reference_expr instead of objc_build_getter_call.
578260311Spfg	(build_modify_expr): Call objc_property_reference_expr instead of
579260311Spfg	objc_property_call.
580260311Spfg	* c-common.h (objc_build_getter_call, objc_property_call): Decl removed.
581260311Spfg	(objc_build_property_reference_expr, objc_property_reference_expr): Decl.
582260311Spfg	added.
583260311Spfg	* stub-objc.c (objc_build_getter_call, objc_property_call): Stub removed.
584260311Spfg	(objc_build_property_reference_expr, objc_property_reference_expr):
585260311Spfg	Stub added.
586260311Spfg
587260311Spfg2007-06-29  Fariborz Jahanian <fjahanian@apple.com>
588260311Spfg
589260311Spfg	Radar 5276085
590260311Spfg	* c-parser.c (c_parser_binary_expression) : objc_generate_weak_read
591260311Spfg	replaced with call to objc_build_weak_reference_tree
592260311Spfg	* c-typeck.c (build_modify_expr, c_objc_common_truthvalue_conversion):
593260311Spfg	objc_remove_weak_read replaced with call to objc_weak_reference_expr.
594260311Spfg	* c-common.h (objc_weak_reference_expr,
595260311Spfg	objc_build_weak_reference_tree) : New decl.
596260311Spfg	(objc_generate_weak_read, objc_remove_weak_read): remove.
597260311Spfg	* stub-objc.c (objc_weak_reference_expr,
598260311Spfg	objc_build_weak_reference_tree): New stub.
599260311Spfg	(objc_generate_weak_read, objc_remove_weak_read): remove.
600260311Spfg
601260311Spfg2007-05-23 Fariborz Jahanian <fjahanian@apple.com>
602260311Spfg
603260311Spfg	Radar 5195402
604260311Spfg	* c-format.c (handle_format_arg_attribute): Check for NSString *
605260311Spfg	and CFStringRef as valid formatting types.
606260311Spfg	(check_format_string): Ditto.
607260311Spfg	* c-common.h (objc_check_format_nsstring,
608260311Spfg	objc_check_cfstringref_type): New decls.
609260311Spfg	* stub-objc.c (objc_check_nsstring_pointer_type): New stub.
610260311Spfg	* config/darwin-c.c (objc_check_cfstringref_type): New
611260311Spfg	(objc_check_format_cfstring): Call objc_check_cfstringref_type
612260311Spfg	for valid CFStringRef argument type.
613260311Spfg	* config/darwin-protos.h (objc_check_cfstringref_type): New decl.
614260311Spfg	* config/darwin.h (CFSTRING_TYPE_CHECK): New macro.
615260311Spfg
616260311Spfg2007-05-18  Fariborz Jahanian <fjahanian@apple.com>
617260311Spfg
618260311Spfg	Radar 5202926
619260311Spfg	* c-common.h (objc_anonymous_local_objc_name): New decl.
620260311Spfg	* config/darwin-protos.h (objc_anonymous_local_objc_name): Decl.
621260311Spfg	* stub-objc.c (objc_anonymous_local_objc_name): New stub.
622260311Spfg	* config/darwin.h (ASM_OUTPUT_LABELREF) Call
623260311Spfg	objc_anonymous_local_objc_name.
624260311Spfg
625260311Spfg2007-05-07  Fariborz Jahanian <fjahanian@apple.com>
626260311Spfg
627260311Spfg	Radar 4157812
628260311Spfg	* c-common.h (objc_build_keyword_decl): Takes a new argument.
629260311Spfg	* stub-objc.c (objc_build_keyword_decl): Ditto.
630260311Spfg	* c-parser.c (c_parser_objc_method_decl): Recognize optional
631260311Spfg	method's argument attribute.
632260311Spfg	(c_parser_objc_method_decl): Handle errornous selector.
633260311Spfg
634260311Spfg2007-05-02  Fariborz Jahanian <fjahanian@apple.com>
635260311Spfg
636260311Spfg	Radar 4502186
637260311Spfg	* c-typeck.c (convert_for_assignment): Remove synthesized 'volatile'
638260311Spfg	type before doing type comparison.
639260311Spfg
640260311Spfg2007-03-29 Fariborz Jahanian <fjahanian@apple.com>
641260311Spfg
642260311Spfg	Radar 4564694
643260311Spfg	* c-parse.c (c_parser_objc_class_instance_variables): Add @package
644260311Spfg	support to syntax.
645260311Spfg	* c-common.h (RID_AT_PACKAGE): Add
646260311Spfg
647260311Spfg2007-03-29  Fariborz Jahanian <fjahanian@apple.com>
648260311Spfg
649260311Spfg	Radar 4947014 - objc atomic property
650260311Spfg	* c-common.h (RID_NONATOMIC): Add
651260311Spfg	* c-parse.c (c_parser_objc_property_attribute) : Recognize 'nonatomic'
652260311Spfg	as new property.
653260311Spfg
654260311Spfg2007-03-23  Fariborz Jahanian <fjahanian@apple.com>
655260311Spfg
656260311Spfg	Radar 4985544
657260311Spfg	* c-format.c (enum format_type): New entry for NSString format.
658260311Spfg	(format_typ): Has a new entry for NSString format.
659260311Spfg	(decode_format_attr): Error on use of NSString format on a
660260311Spfg	non-objective-c program.
661260311Spfg	(objc_check_nsformat_arg): New.
662260311Spfg	(check_format_info): Call back for NSString is objc_check_nsformat_arg
663260311Spfg	(handle_format_attribute): Use objc_check_format_nsstring for
664260311Spfg	NSString format.
665260311Spfg	* c-common.h (objc_NSString_format): New decl.
666260311Spfg	(objc_check_format_nsstring): New decl.
667260311Spfg	* stub-objc.c  (objc_NSString_format, objc_check_format_nsstring): New
668260311Spfg	stubs.
669260311Spfg	* config/darwin-protos.h (darwin_cfstring_type_node): New decl.
670260311Spfg	* config/darwin.c (darwin_cfstring_type_node): New
671260311Spfg	* config/darwin.h (TARGET_CFSTRING_P): New macro
672260311Spfg
673260311Spfg2007-03-23  Fariborz Jahanian <fjahanian@apple.com>
674260311Spfg
675260311Spfg	Radar 4985544
676260311Spfg	* c-format.c (enum format_type): New entry for NSString format.
677260311Spfg	(format_typ): Has a new entry for NSString format.
678260311Spfg	(decode_format_attr): Error on use of NSString format on a
679260311Spfg	non-objective-c program.
680260311Spfg	(objc_check_nsformat_arg): New.
681260311Spfg	(check_format_info): Call back for NSString is objc_check_nsformat_arg
682260311Spfg	(handle_format_attribute): Use objc_check_format_nsstring for
683260311Spfg	NSString format.
684260311Spfg	* c-common.h (objc_NSString_format): New decl.
685260311Spfg	(objc_check_format_nsstring): New decl.
686260311Spfg	* stub-objc.c  (objc_NSString_format, objc_check_format_nsstring): New
687260311Spfg	stubs.
688260311Spfg	* config/darwin-protos.h (darwin_cfstring_type_node): New decl.
689260311Spfg	* config/darwin.c (darwin_cfstring_type_node): New
690260311Spfg	* config/darwin.h (TARGET_CFSTRING_P): New macro
691260311Spfg
692260311Spfg2007-03-22  Fariborz Jahanian <fjahanian@apple.com>
693260311Spfg
694260311Spfg	Radar 4965989
695260311Spfg	* c-parser.c (c_parser_objc_class_definition): Add supprt for anonymous
696260311Spfg	category syntax.
697260311Spfg
698260311Spfg2007-03-21  Fariborz Jahanian <fjahanian@apple.com>
699260311Spfg
700260311Spfg	Radar 2848255
701260311Spfg	* c-parser.c (c_parser_objc_try_catch_statement): Parse @catch(...).
702260311Spfg	* c.opt: Add -fobjc-zerocost-exceptions option.
703260311Spfg	* c-opts.c (c_common_post_options): Set the flags for
704260311Spfg	-fobjc-zerocost-exceptions.
705260311Spfg	* c-common.h: Add some declarations.
706260311Spfg	* stub-objc.c (objc2_valid_objc_catch_type, objc2_build_throw_call):
707260311Spfg	New stubs.
708260311Spfg	* config/darwin.h (OBJC_FLAG_OBJC_ABI): Check for proper
709260311Spfg	use of -fobjc-zerocost-exceptions option.
710260311Spfg
711260311Spfg2006-11-06  Fariborz Jahanian <fjahania@apple.com>
712260311Spfg
713260311Spfg	Radar 4781080 (part 2)
714260311Spfg	* targhooks.c (default_objc_fpreturn_msgcall): Takes 2nd argument.
715260311Spfg	* targhooks.h (default_objc_fpreturn_msgcall): Changed Decl.
716260311Spfg	* target.h (objc_fpreturn_msgcall): Changed Decl.
717260311Spfg	* config/i386/i386.h (OBJC_FPRETURN_MSGCALL): Changed Decl.
718260311Spfg	* config/i386/i386-protos.h (ix86_objc_fpreturn_msgcall): Changed Decl.
719260311Spfg	* config/i386/i386.c (ix86_objc_fpreturn_msgcall): Changed definition.
720260311Spfg2006-09-15  Fariborz Jahanian <fjahania@apple.com>
721260311Spfg
722260311Spfg	Radar 4727659
723260311Spfg	* c-common.c (handle_noreturn_attribute): Handle method_decl
724260311Spfg	nodes as well.
725260311Spfg
726260311Spfg2006-09-01  Fariborz Jahanian <fjahania@apple.com>
727260311Spfg
728260311Spfg	Radar 4712269
729260311Spfg	* c-common.h (objc_build_incr_decr_setter_call): New decl.
730260311Spfg	* stub-objc.c (objc_build_incr_decr_setter_call): New stub.
731260311Spfg	* c-typeck.c (build_unary_op): Call objc_build_incr_decr_setter_call
732260311Spfg	for potential ince/decr pre/post expressions involving properties.
733260311Spfg
734260311Spfg2006-08-31  Fariborz Jahanian  <fjahanian@apple.com>
735260311Spfg
736260311Spfg	Radar 4697411
737260311Spfg	* c-common.h (objc_volatilize_component_ref): New decl.
738260311Spfg	* c-typeck.c (build_component_ref): Call objc_volatilize_component_ref.
739260311Spfg	* stub-objc.c (objc_volatilize_component_ref): New stub.
740260311Spfg
741260311Spfg2006-07-18  Fariborz Jahanian <fjahanian@apple.com>
742260311Spfg
743260311Spfg	Radar 4592503
744260311Spfg	* c-decl.c (finish_struct): Check on illegal use of __weak
745260311Spfg	on struct fields.
746260311Spfg	* decl.c (start_decl): Check on illegal use of __weak on
747260311Spfg	variable declarations.
748260311Spfg	* stub-objc.c (objc_checkon_weak_attribute): New stub.
749260311Spfg	* c-common.h (objc_checkon_weak_attribute): New decl.
750260311Spfg
751260311Spfg2006-06-26  Fariborz Jahanian <fjahanian@apple.com>
752260311Spfg
753260311Spfg	Radar 4591909
754260311Spfg	* c-parse.in: New/modified grammar for new attributes in
755260311Spfg	  properties.
756260311Spfg	(yylexname): Change to recognize new attribute terminals.
757260311Spfg	* c-common.h (RID_DYNAMIC): New enum declaration.
758260311Spfg
759260311Spfg2006-07-14  Fariborz Jahanian <fjahanian@apple.com>
760260311Spfg
761260311Spfg	Radar 4621020
762260311Spfg	* c-parse.in: Added 'weak' attribute keyword for @property.
763260311Spfg	* c-common.h: 'weak' related declarations.
764260311Spfg
765260311Spfg2006-05-18 Fariborz Jahanian <fjahanian@apple.com>
766260311Spfg
767260311Spfg	Radar 4548636 (objc attributes on class)
768260311Spfg	* c-parse.in: Add attribute non-terminal before
769260311Spfg	AT_INTERFACE.
770260311Spfg	* c-common.h (objc_start_class_interface): New argument added.
771260311Spfg	* stub-objc.c (objc_start_class_interface): Ditto.
772260311Spfg
773260311Spfg2006-05-16 Fariborz Jahanian <fjahanian@apple.com>
774260311Spfg
775260311Spfg	Radar 4547045
776260311Spfg	* c-gimplify.c (obj_reuse_bc_block): Removed.
777260311Spfg	(objc_pop_label, objc_push_label): New.
778260311Spfg	(gimplify_c_loop): Fix up foreach's innerloop break label.
779260311Spfg
780260311Spfg2006-04-26 Fariborz Jahanian <fjahanian@apple.com>
781260311Spfg
782260311Spfg	Radar 3803157 (method attributes)
783260311Spfg	* c-parse.in: Add grammar support for declaring
784260311Spfg	attribute for objc methods.
785260311Spfg	* c-common.c (handle_deprecated_attribute): Recognize
786260311Spfg	objc methods as valid declarations.
787260311Spfg	(handle_unavailable_attribute): Ditto.
788260311Spfg	* c-common.h: Bunch of new extern declarations.
789260311Spfg	* stub-objc.c (objc_add_method_declaration, objc_start_method_definition):
790260311Spfg	Added new argument.
791260311Spfg	(objc_method_decl): New stub.
792260311Spfg
793260311Spfg2006-04-12 Fariborz Jahanian <fjahanian@apple.com>
794260311Spfg
795260311Spfg	Radar 4507230
796260311Spfg	* c-common.h (objc_type_valid_for_messaging): Declare.
797260311Spfg	* stub-objc.c (objc_type_valid_for_messaging): New stub.
798260311Spfg
799260311Spfg2006-04-06 Fariborz Jahanian <fjahanian@apple.com>
800260311Spfg
801260311Spfg	Radar 4436866
802260311Spfg	(Missing copies attribute)
803260311Spfg	* c-parse.in: Add grammer for 'copies' attribute.
804260311Spfg	* c-common.h (RID_COPIES): New enumerator.
805260311Spfg
806260311Spfg2006-03-27 Fariborz Jahanian <fjahanian@apple.com>
807260311Spfg
808260311Spfg	Radar 4133425
809260311Spfg	* c-common.h (objc_diagnose_private_ivar): New decl.
810260311Spfg	* stub-objc.c (objc_diagnose_private_ivar): New stub.
811260311Spfg	* c-decl.c (undeclared_variable): Issue disnostic on
812260311Spfg	private 'ivar' access.
813260311Spfg
814260311Spfg2006-03-27 Fariborz Jahanian <fjahanian@apple.com>
815260311Spfg
816260311Spfg	Radar 4491608
817260311Spfg	* c-typeck.c (convert_arguments): function name must come from 'selector'
818260311Spfg	when diagnosing 'too many arguments'.
819260311Spfg
820260311Spfg2006-03-23 Fariborz Jahanian <fjahanian@apple.com>
821260311Spfg
822260311Spfg	Radar 4193359
823260311Spfg	* c-typeck.c (convert_for_assignment): Remove Objective-C EH machinery
824260311Spfg	'volatile' qualifier before doing type comparison.
825260311Spfg
826260311Spfg2006-02-28 Fariborz Jahanian <fjahanian@apple.com>
827260311Spfg
828260311Spfg	Radar 4441049
829260311Spfg	* c-common.h (objc_v2_bitfield_ivar_bitpos): New decl.
830260311Spfg	* expr.h (objc_v2_bitfield_ivar_bitpos): New decl.
831260311Spfg	* stub-objc.c (objc_v2_bitfield_ivar_bitpos): New stub.
832260311Spfg	* expr.c (get_inner_reference): Compute ivar's bitfield bit offset.
833260311Spfg
834260311Spfg2006-02-15   Fariborz Jahanian <fjahanian@apple.com>
835260311Spfg
836260014Spfg	Radar 4445586
837260014Spfg	* c-common.def (DO_STMT): Takes an extra argument.
838260014Spfg
839260311Spfg2006-02-02   Fariborz Jahanian <fjahanian@apple.com>
840260311Spfg
841260311Spfg	Radar 4426814
842260311Spfg	* c-parse.in (cast_expr): generate objc_read_weak call on
843260311Spfg	each __weak object in the expession.
844260311Spfg	* c-typeck.c (build_modify_expr): Undo the call to objc_read_weak
845260311Spfg	on LHS expression.
846260311Spfg	* c-objc-common.c (c_objc_common_truthvalue_conversion): Generate
847260311Spfg	objc_read_weak call before generating tree for !exp, etc.
848260311Spfg	* c-common.h (objc_generate_weak_read, objc_remove_weak_read): New decl.
849260311Spfg	* stub-objc.c (objc_generate_weak_read, objc_remove_weak_read): New stubs.
850260311Spfg
851260311Spfg2005-12-15  Fariborz Jahanian <fjahanian@apple.com>
852260311Spfg
853260311Spfg	Radar 4229905
854260311Spfg	* c-typeck.c (build_conditional_expr): Call objc_have_common_type when
855260311Spfg	looking for objective-c common pointer types.
856260311Spfg	* c-common.h objc_have_common_type): New declaration.
857260311Spfg	* stub-objc.c (objc_have_common_type): New stub.
858260311Spfg
859260311Spfg2005-12-05  Mike Stump  <mrs@apple.com>
860260311Spfg
861260311Spfg	Radar 4357979
862260311Spfg	* doc/invoke.texi (C Dialect Options): Improve -fnested-functions wording.
863260311Spfg	* doc/extend.texi (Nested Functions): Note that on darwin nested
864260311Spfg	functions are off by default.
865260311Spfg
866260311Spfg2005-11-08  Fariborz Jahanian <fjahanian@apple.com>
867260311Spfg
868260311Spfg	Radar 4330422
869260311Spfg
870260311Spfg	* c-common.h (objc_non_volatilized_type): New declaration
871260311Spfg	* stub-objc.c (objc_non_volatilized_type): New stub.
872260311Spfg
873260311Spfg2005-10-12  Fariborz Jahanian <fjahanian@apple.com>
874260311Spfg
875260311Spfg	Radar 4291785
876260311Spfg
877260311Spfg	* c-common.h (objc_get_interface_ivars): New declaration
878260311Spfg	(objc_detect_field_duplicates): Ditto.
879260311Spfg	* c-decl.c (finish_struct): Check for duplicate among
880260311Spfg	flattened fields if objective-c.
881260311Spfg	* stub-objc.c (objc_get_interface_ivars): New stub.
882260311Spfg	(objc_detect_field_duplicates): Ditto.
883260311Spfg
884260311Spfg2005-09-28  Devang Patel  <dpatel@apple.com>
885260311Spfg
886260311Spfg	Radar 4258406
887260311Spfg	* c-parse.in (nested_function): Report an error, instead of a warning.
888260311Spfg	(nontype_nested_function): Same.
889260311Spfg	* c.opt (Wnested-funcs): Remove.
890260311Spfg	* doc/invoke.texi: Remove Wnested-funcs documentations.
891260311Spfg
892260311Spfg2005-08-03 Fariborz Jahanian <fjahanian@apple.com>
893260311Spfg
894260311Spfg	Radar 4188876
895260311Spfg	* c-typeck.c (pop_init_level): Issue diagnostic on non-constant
896260311Spfg	vector initializers.
897260311Spfg
898260311Spfg2005-06-22  Ziemowit Laski  <zlaski@apple.com>
899260311Spfg
900260311Spfg	Radar 4154928
901260311Spfg	* c-common.h (objc_common_type): New prototype.
902260311Spfg	* c-typeck.c (build_conditional_expr): For two ObjC pointer types,
903260311Spfg	use their ObjC common type.
904260311Spfg	* stub-objc.c (objc_common_type): New stub.
905260311Spfg
906260014Spfg/* APPLE LOCAL merge marger */
907260014Spfg/* Stuff under is in fsf mainline, but not in the 4.2 branch */
908260014Spfg
909260014Spfg2007-08-02  Geoffrey Keating  <geoffk@apple.com>
910260014Spfg
911260014Spfg	Radar 3274130, 5295549
912260014Spfg	* c-parser.c (c_parser_while_statement): Handle attributes.
913260014Spfg	(c_parser_do_statement): Handle attributes.
914260014Spfg	(c_parser_for_statement): Handle attributes.
915260014Spfg	* c-common.c (handle_unused_attribute): Warn if a statement
916260014Spfg	is marked as unused.
917260014Spfg	* c-tree.h (c_finish_loop): Add extra parameter.
918260014Spfg	* c-typeck.c (c_finish_loop): Handle attributes.
919260014Spfg	* doc/extend.texi (Attribute Syntax): Document statement attributes.
920260014Spfg	(Label Attributes): Explain how they apply to statements.
921260014Spfg	* tree-cfg.c (cleanup_dead_labels): Preserve labels with
922260014Spfg	user-specified alignment or attributes.
923260014Spfg	* stmt.c (expand_label): Update and correct documentation.
924260014Spfg
925260014Spfg	* c-common.c (handle_aligned_attribute): Handle LABEL_DECL.
926260014Spfg	* rtl.def (CODE_LABEL): Add 8th operand.
927260014Spfg	* rtl.h (LABEL_ALIGN_LOG): New.
928260014Spfg	(LABEL_MAX_SKIP): New.
929260014Spfg	(SET_LABEL_ALIGN): New.
930260014Spfg	* emit-rtl.c (gen_label_rtx): Adjust.
931260014Spfg	* print-rtl.c (print_rtx): Print LABEL_ALIGN_LOG.
932260014Spfg	* stmt.c (label_rtx): Set CODE_LABEL's alignment from DECL_ALIGN.
933260014Spfg	(expand_label): Update documentation.
934260014Spfg	* final.c (struct label_alignment): Delete.
935260014Spfg	(label_align): Delete.
936260014Spfg	(min_labelno): Delete.
937260014Spfg	(max_labelno): Delete.
938260014Spfg	(LABEL_TO_ALIGNMENT): Delete.
939260014Spfg	(LABEL_TO_MAX_SKIP): Delete.
940260014Spfg	(label_to_alignment): Adjust for LABEL_ALIGN_LOG.
941260014Spfg	(align_fuzz): Likewise.
942260014Spfg	(compute_alignments): Likewise.
943260014Spfg	(shorten_branches): Remove code to set up label_align.
944260014Spfg	Adjust for LABEL_ALIGN_LOG.
945260014Spfg	(final_scan_insn): Adjust for LABEL_ALIGN_LOG.
946260014Spfg	* doc/extend.texi (C Extensions): Add 'Label Attributes' to menu.
947260014Spfg	(Attribute Syntax): Move label content to Label Attributes.
948260014Spfg	(Function Attributes): Mention label attributes.
949260014Spfg	(Variable Attributes): Mention label attributes.
950260014Spfg	(Type Attributes): Mention label attributes.
951260014Spfg	(Label Attributes): New.
952