1261188Spfg2010-03-16  Fariborz Jahanian <fjahanian@apple.com>
2260014Spfg
3261188Spfg	 Radar 7760213
4261188Spfg	* c-common.h (HasByrefArray): New decl.
5261188Spfg	* c-common.c (HasByrefArray): New definition.
6261188Spfg	* c-typeck.c (build_external_ref): Diagnose access of
7261188Spfg	__block array.
8261188Spfg
9261188Spfg2010-03-12  Jim Grosbach <grosbach@apple.com>
10261188Spfg
11261188Spfg	Radar 7744816
12261188Spfg
13261188Spfg	* expmed.c (synth_mult): Remove incorrect special case handling for
14261188Spfg	0xffffffff.
15261188Spfg
16261188Spfg2010-03-12  Fariborz Jahanian <fjahanian@apple.com>
17261188Spfg
18261188Spfg	 Radar 7735196
19261188Spfg	 * c-parser.c (build_block_struct_initlist): 
20261188Spfg	 Set BLOCK_USE_STRET flag in block descriptor for
21261188Spfg	 blocks which return their aggregate value in memory.
22261188Spfg	* c-common.h (BLOCK_USE_STRET): New flag.
23261188Spfg
24261188Spfg2010-03-05  Fariborz Jahanian <fjahanian@apple.com>
25261188Spfg
26261188Spfg	Radar 7721728
27261188Spfg	* c-typeck.c (build_external_ref): Diagnose
28261188Spfg	importation of copied-in variables.
29261188Spfg
30261188Spfg2009-03-12  Caroline Tice  <ctice@apple.com>
31261188Spfg
32261188Spfg	 Radar 6144634
33261188Spfg	 * c-parser.c (c_parser_statement_after_labels): When
34261188Spfg	 re-setting the expression location at the end, use the input
35261188Spfg	 location for Block pointer assignments.
36261188Spfg
37261188Spfg2009-02-11  Fariborz Jahanian <fjahanian@apple.com>
38261188Spfg
39261188Spfg	Radar 6573923
40261188Spfg	* c-decl.c (synth_block_byref_id_object_copy_func,
41261188Spfg	synth_block_byref_id_object_dispose_func): Set BLOCK_BYREF_CALLER
42261188Spfg	flag in call to copy/dispose helper functions.
43261188Spfg	* c-common.h (BLOCK_BYREF_CALLER): New flag.
44261188Spfg
45261188Spfg2008-12-21  Caroline Tice  <ctice@apple.com>
46261188Spfg
47261188Spfg	 Radar 6455678
48261188Spfg	 * cp/typeck.c (original_type):  Stop if the type
49261188Spfg	and its DECL_ORIGINAL_TYPE are the same.
50261188Spfg
51261188Spfg2008-12-18  Bill Wendling  <wendling@apple.com>
52261188Spfg
53261188Spfg	 Radar 6457359
54261188Spfg	 * c-parser.c (build_block_struct_initlist): Changed type.
55261188Spfg	 * cp/parser.c (build_block_struct_initlist): Ditto.
56261188Spfg
57261188Spfg2008-12-02  Caroline Tice  <ctice@apple.com>
58261188Spfg
59261188Spfg	Radar 6386976
60261188Spfg	* objcp/objcp-decl.h (TYPE_HAS_OBJCXX_INFO):  New macro.
61261188Spfg	* objcp/objcp-lang.c  (objcp-decl.h):  New include statement, with
62261188Spfg	required define.      
63261188Spfg	(LANG_HOOKS_IS_RUNTIME_SPECIFIC_TYPE):  Redefine for
64261188Spfg	obj-c++.
65261188Spfg	(objcxx_is_runtime_type):  New function.
66261188Spfg
67261188Spfg2008-12-02  Fariborz Jahanian <fjahanian@apple.com>
68261188Spfg
69261188Spfg	 Radar 6411649
70261188Spfg	* funciton.h: Added new field.
71261188Spfg	* c-common.c (build_block_helper_name): Produce a unique
72261188Spfg	   block number per each enclosing function when building
73261188Spfg	   the block helper function name.
74261188Spfg
75261188Spfg2008-11-18  Stuart Hastings  <stuart@apple.com>
76261188Spfg
77261188Spfg	Radar 6353006
78261188Spfg	* tree.c (generic_block_literal_struct_type): Fix APPLE LOCAL.
79261188Spfg	* langhooks-def.h (lhd_build_generic_block_struct_type): Fix
80261188Spfg	   APPLE LOCAL.
81261188Spfg
82261188Spfg2008-11-07  Fariborz Jahanian <fjahanian@apple.com>
83261188Spfg
84261188Spfg	 Radar 5847976
85261188Spfg	* c-decl.c (synth_block_byref_id_object_copy_func): Takes a new
86261188Spfg	'flag' argument and generates the much simplified API.
87261188Spfg	(synth_block_byref_id_object_dispose_func): Ditto.
88261188Spfg	(new_block_byref_decl): Hack to prevent issuing bogus warning
89261188Spfg	on a field declared as __weak.
90261188Spfg	(init_byref_decl): Takes an additional 'flag' argument
91261188Spfg	and passes it down to synth_block_byref_id_object_copy_func and
92261188Spfg	synth_block_byref_id_object_dispose_func.
93261188Spfg	(finish_decl): Computes the flag for the block variable declaration.
94261188Spfg	* c-common.c (build_block_byref_release_decl, 
95261188Spfg	build_block_byref_assign_copy_decl): Removed.
96261188Spfg	(build_block_byref_release_exp): Use the new API.
97261188Spfg	(build_block_object_assign_decl, build_block_object_assign_call_exp,
98261188Spfg	build_block_object_dispose_decl, build_block_object_dispose_call_exp): New.			
99261188Spfg	(build_indirect_object_id_exp): Fixed a code gen bug which was exposed in
100261188Spfg	c/c++ mode, but not in ObjC/ObjC++ mode.
101261188Spfg	* c-common.h (build_block_object_assign_call_exp,
102261188Spfg	build_block_object_dispose_call_exp,
103261188Spfg	objc_is_gcable_type): New decls.
104261188Spfg	Declaration of several new flags.
105261188Spfg	(cast_to_pointer_to_id): Removed.
106261188Spfg	* stub-objc.c (objc_is_gcable_type): New
107261188Spfg	(copy_in_object, retain_block_component, release_block_component): Removed.
108261188Spfg	(cast_to_pointer_to_id): Removed.
109261188Spfg	* c-parser.c (build_block_struct_initlist): Remove call to copy_in_object.
110261188Spfg	(synth_copy_helper_block_func): Generates much simplified API.
111261188Spfg	(synth_destroy_helper_block_func): Ditto.
112261188Spfg	(block_object_dispose): Removed.
113261188Spfg	* config/darwin-c.c (darwin_cpp_builtins): Define __weak even when
114261188Spfg	-fobjc-gc is off.
115261188Spfg
116261188Spfg2008-10-31  Fariborz Jahanian <fjahanian@apple.com>
117261188Spfg
118261188Spfg	 Radar 6175959
119261188Spfg	* stub-objc.c (block_requires_copying): Object pointers with
120261188Spfg	NSObject attribute also require copy/release API.
121261188Spfg	 * c-parser.c (synth_copy_helper_block_func): Use the new API
122261188Spfg	 _Block_object_assign for ObjC object copying.
123261188Spfg	 (block_object_dispose): New
124261188Spfg	 (synth_destroy_helper_block_func): Call block_object_dispose
125261188Spfg	 to use new _Block_object_dispose API for ObjC object release.
126261188Spfg
127261188Spfg2008-10-27  Fariborz Jahanian <fjahanian@apple.com>
128261188Spfg
129261188Spfg	 Radar 6231433
130261188Spfg	 * c-typeck.c (objc_compare_types, objc_have_common_type):
131261188Spfg	 Take an extra argument for better diagnostics.
132261188Spfg	* c-common.c (objc_compare_types, objc_have_common_type):
133261188Spfg	Take extra argument.
134261188Spfg	* stub-objc.c: Ditto
135261188Spfg	
136261188Spfg2008-10-24  Fariborz Jahanian <fjahanian@apple.com>
137261188Spfg
138261188Spfg	Radar 6305545
139261188Spfg	* cgraph.h (lower_if_nested_functions): New decl.
140261188Spfg	* tree-gimple.h (lower_nested_functions): Takes one more arg.
141261188Spfg	* cgraphunit.c (lower_if_nested_functions): New
142261188Spfg	* tree-nested.c (lower_nested_functions): Skip structors.
143261188Spfg
144261188Spfg2008-10-24  Fariborz Jahanian <fjahanian@apple.com>
145261188Spfg
146261188Spfg	Radar 5847213 (minor tweak)
147261188Spfg	* c-decl.c (build_block_descriptor_type):
148261188Spfg	Make descriptor_ptr_type and descriptor_ptr_type_with_copydispose
149261188Spfg	visible to pch.
150261188Spfg
151261188Spfg2008-10-23  Caroline Tice  <ctice@apple.com>
152261188Spfg
153261188Spfg	 Radar 6300081
154261188Spfg	* tree.c(build_block_pointer_type):  Add call to 
155261188Spfg	build_generic_block_struct_type to initialize 
156261188Spfg	generic_block_literal_struct_type if necessary.
157261188Spfg	* cp/parser.c (build_generic_block_struct_type):  Update comments.
158261188Spfg	(build_block_struct_type):  Remove call to 
159261188Spfg	build_generic_block_struct_type.
160261188Spfg	(make_block_pointer_declarator):  Likewise.
161261188Spfg	* c-decl.c (make_block_pointer_declarator):  Likewise.
162261188Spfg	* c-parser.c (build_block_struct_type):  Likewise.
163261188Spfg	(build_generic_block_struct_type):  Update comments.
164261188Spfg
165261188Spfg2008-10-22  Caroline Tice  <ctice@apple.com>
166261188Spfg
167261188Spfg	 Radar 6300081 & Radar 6163705
168261188Spfg	 * tree.h (generic_block_literal_struct_type):  Extern global variable
169261188Spfg	 decl.
170261188Spfg	 (build_generic_block_struct_type):  New extern function decl.
171261188Spfg	 * cp/parser (build_generic_block_struct_type): New function.
172261188Spfg	 (build_block_struct_type):   Call build_generic_block_struct_type
173261188Spfg	 to initialize generic_block_literal_struct_type.
174261188Spfg	 (make_block_pointer_declarator):  Likewise.
175261188Spfg	 (declare_block_prologue_local_vars):  Temporarily set input_location
176261188Spfg	 to 1 before the start of the block function; re-set input_location at
177261188Spfg	 the end of this function.
178261188Spfg	 * dwarf2out.c (add_type_attribute):  If the type is a
179261188Spfg	 BLOCK_POINTER_TYPE, assign it to be a pointer to a
180261188Spfg	 generic_block_literal_struct_type.
181261188Spfg	 * c-decl.c (make_block_pointer_declarator): Call
182261188Spfg	 build_generic_block_struct_type to initialize
183261188Spfg	 generic_block_literal_struct_type.
184261188Spfg	 * c-common.c (generic_block_literal_struct_type):  New global variable.
185261188Spfg	 * c-parser.c (build_generic_block_struct_type):  New function.
186261188Spfg	 (build_block_struct_type):   Call build_generic_block_struct_type
187261188Spfg	 to initialize  generic_block_literal_struct_type.
188261188Spfg	 * testsuite/gcc.apple/block-debug-1.c:  Fix test to work with new
189261188Spfg	 compiler modifications.
190261188Spfg	 * testsuite/gcc.apple/block-debug-2.c:  Likewise.
191261188Spfg	 * testsuite/g++.apple/block-debug-1.C:  Likewise.
192261188Spfg	 * testsuite/g++.apple/block-debug-2.C:  Likewise.
193261188Spfg
194261188Spfg2008-10-10  Fariborz Jahanian <fjahanian@apple.com>
195261188Spfg
196261188Spfg	Radar 5847213 - New Block ABI
197261188Spfg	* dwarf2out.c (add_type_attribute): Unusuable code
198261188Spfg	for radar 5811943 is removed.
199261188Spfg	* c-decl.c (build_block_byref_decl): Removed unneeded 
200261188Spfg	build of block_original_byref_decl_list.
201261188Spfg	(build_block_internal_types): Removed.
202261188Spfg	(build_block_descriptor_type): New routine to build the descriptor type.
203261188Spfg	(make_block_pointer_declarator): Unused code is removed.
204261188Spfg	* c-typeck.c (build_block_call): New code gen for block calls.
205261188Spfg	* c-common.c (invoke_impl_ptr_type): Removed.
206261188Spfg	* c-common.h (block_original_byref_decl_list, build_block_internal_types): Removed
207261188Spfg	(build_block_descriptor_type, BLOCK_HAS_DESCRIPTOR): Decls added.
208261188Spfg	* c-parser.c (build_block_struct_type): Block literal expression internal type
209261188Spfg	is redeclared into its new layout.
210261188Spfg	(build_block_struct_initlist): Initializer list for above type is redone.
211261188Spfg	(build_descriptor_block_decl): New routine to declare the descriptor variable
212261188Spfg	(build_block_literal_tmp): Modified for the new type and initiazation.
213261188Spfg		
214261188Spfg2008-10-06  Fariborz Jahanian <fjahanian@apple.com>
215261188Spfg
216261188Spfg	 Radar 6268817
217261188Spfg	* c-decl.c (check_for_loop_decls): Block helper function
218261188Spfg	is OK if declared in a for-loop main statement block.
219261188Spfg
220261188Spfg2008-10-02  Fariborz Jahanian <fjahanian@apple.com>
221261188Spfg
222261188Spfg	 Radar 6246527
223261188Spfg	* attribs.c (decl_attributes): Added support for adding attributes
224261188Spfg	on block pointer variable declarations.
225261188Spfg	* c-common.c (block_delta_format_args): Add
226261188Spfg	(any_recognized_block_attribute): Add
227261188Spfg	* c-common.h (any_recognized_block_attribute): New decl.
228261188Spfg	* c-parser.c (c_parser_block_literal_expr): Call to do the delta
229261188Spfg	on printf attribute.
230261188Spfg
231261188Spfg2008-09-30  Fariborz Jahanian <fjahanian@apple.com>
232261188Spfg
233261188Spfg	 Radar 6225809
234261188Spfg	* c-decl.c (build_block_byref_decl): Add __block vaiables
235261188Spfg	to intervening blocks.
236261188Spfg
237261188Spfg2008-09-25  Fariborz Jahanian <fjahanian@apple.com>
238261188Spfg
239261188Spfg	 Radar 6237713
240261188Spfg	* c-common.c (handle_noreturn_attribute): Add 'noreturn'
241261188Spfg	attribute to block pointer decls.
242261188Spfg	* c-parser.c (c_parser_block_literal_expr): Parse and set
243261188Spfg	attributes on block literals.
244261188Spfg
245261188Spfg2008-09-25  Fariborz Jahanian <fjahanian@apple.com>
246261188Spfg
247261188Spfg	 Radar 6244520 - minor addition
248261188Spfg	* c-common.c (build_indirect_object_id_exp): offset needs
249261188Spfg	be updated to accomodate addition of the new field.
250261188Spfg
251261188Spfg2008-09-16  Fariborz Jahanian <fjahanian@apple.com>
252261188Spfg
253261188Spfg	 Radar 6214617
254261188Spfg	* c-common: New flag BLOCK_HAS_CXX_OBJ replaces BLOCK_NO_COPY.
255261188Spfg	(BlockImportsCxxObjects): New field replaces BlockHasByrefVar.
256261188Spfg	* c-parser.c (build_block_struct_type): Remove setting of
257261188Spfg	BLOCK_NO_COPY flag.
258261188Spfg
259261188Spfg2008-09-16  Fariborz Jahanian <fjahanian@apple.com>
260261188Spfg
261261188Spfg	Radar 6217257
262261188Spfg	* c-common.c (handle_blocks_attribute): Diagnose 
263261188Spfg	vla __block declarations.
264261188Spfg
265261188Spfg2008-09-12  Fariborz Jahanian <fjahanian@apple.com>
266261188Spfg
267261188Spfg	 Radar 6212722 (tweak)
268261188Spfg	* c-decl.c (build_block_ref_decl): Use array_to_pointer_conversion
269261188Spfg	and function_to_pointer_conversion.
270261188Spfg	* c-typeck.c (array_to_pointer_conversion, function_to_pointer_conversion):
271261188Spfg	Made them global.
272261188Spfg	* c-common.h (array_to_pointer_conversion, function_to_pointer_conversion):
273261188Spfg	Declare.
274261188Spfg	
275261188Spfg2008-09-09  Fariborz Jahanian <fjahanian@apple.com>
276261188Spfg
277261188Spfg	 Radar 6169580
278261188Spfg	* c-commmon.c (build_block_helper_name): Fix bug in
279261188Spfg	block helper function name mangling.
280261188Spfg
281261188Spfg2008-09-03  Fariborz Jahanian <fjahanian@apple.com>
282261188Spfg
283261188Spfg	 Radar 6185344
284261188Spfg	* c-typeck.c (c_finish_return): Don't do block specific
285261188Spfg	stuff when block has a return type.
286261188Spfg	* c-common.h (block_sema_info): block_has_return_type is
287261188Spfg	a new field.
288261188Spfg	* c-parser.c (c_parser_direct_declarator): Terminate type
289261188Spfg	parsing for block return types.
290261188Spfg	(c_parser_block_literal_expr): Added support to parse and
291261188Spfg	handle explicit return type for blocks.
292261188Spfg
293261188Spfg2008-08-28  Fariborz Jahanian <fjahanian@apple.com>
294261188Spfg
295261188Spfg	 Radar 6160536
296261188Spfg	* c-commmon.c (build_block_helper_name): New
297261188Spfg	* c-common.h (build_block_helper_name): New decl.
298261188Spfg	* c-parser.c (c_parser_block_literal_expr): Call
299261188Spfg	build_block_helper_name to build pretty helper function
300261188Spfg	name.
301261188Spfg
302261188Spfg2008-08-28  Fariborz Jahanian <fjahanian@apple.com>
303261188Spfg
304261188Spfg	 Radar 6180456
305261188Spfg	* c-decl.c (synth_block_byref_id_object_copy_func): Different
306261188Spfg	API for copying __block declared objects in c.
307261188Spfg	(synth_block_byref_id_object_dispose_func): Different API
308261188Spfg	for releasing __block declared objects in c.
309261188Spfg	* c-common.c (block_byref_assign_copy_decl): New
310261188Spfg	(build_indirect_object_id_exp): Cast to 'id *' in objective-c
311261188Spfg	mode only.
312261188Spfg	* c-common.h (build_block_byref_assign_copy_decl): New decl.
313261188Spfg	* c-parser.c (synth_copy_helper_block_func): Refactored code
314261188Spfg	to call build_block_byref_assign_copy_decl().
315261188Spfg	
316261188Spfg2008-08-24  Caroline Tice  <ctice@apple.com>
317261188Spfg
318261188Spfg	Radars 6144664, 6145471, 6144634
319261188Spfg	c-decl.c (build_block_byref_decl):  Assign the source
320261188Spfg	location for each byref decl to the source location of
321261188Spfg	the helper function decl.
322261188Spfg	(build_block_ref_decl):  Ditto for ref decls.
323261188Spfg
324261188Spfg2008-08-14  Fariborz Jahanian <fjahanian@apple.com>
325261188Spfg
326261188Spfg	 Radar 5822844
327261188Spfg	* c-typeck.c (digest_init): Handler block as initializer.
328261188Spfg	(c_finish_return): check for completed block before
329261188Spfg	analyzing block's return expression.
330261188Spfg	* varasm.c (output_constant): Allow outputting block data.
331261188Spfg	* c-common.h (BLOCK_IS_GLOBAL): New flag.
332261188Spfg	(block_is_complete): New field in block data structure.
333261188Spfg	* c-parser.c (build_block_struct_initlist): New initializer and
334261188Spfg	flag for global block data.
335261188Spfg	(build_block_literal_tmp): Temporary data for global block is
336261188Spfg	declared as global static.
337261188Spfg	(c_parser_block_literal_expr): Removed diagnostics for global blocks.
338261188Spfg	Moved fixing helper function type earlier before its tree is built.
339261188Spfg	
340261188Spfg2008-08-06  Fariborz Jahanian <fjahanian@apple.com>
341261188Spfg
342261188Spfg	 Radar 6014138 
343261188Spfg	* c-decl.c (build_block_byref_decl): In the presence of nested "{" 
344261188Spfg	  move up the scope chain until reaching the main function body's scope.
345261188Spfg
346261188Spfg2008-08-04  Fariborz Jahanian <fjahanian@apple.com>
347261188Spfg
348261188Spfg	 Radar 6040305 - work in progress.
349261188Spfg	* c-decl.c (build_indirect_object_id_exp): Removed.
350261188Spfg	* c-common.c (build_indirect_object_id_exp): Added
351261188Spfg	* c-common.h (build_indirect_object_id_exp): New decl.
352261188Spfg	* config/darwin-c.c (darwin_cpp_builtins): Define __byref
353261188Spfg	in c++ mode as well.
354261188Spfg
355261188Spfg2008-07-18  Fariborz Jahanian <fjahanian@apple.com>
356261188Spfg
357261188Spfg	 Radar 6083129 - twiked
358261188Spfg	* c-decl.c (release_all_local_byrefs_at_return): Do not release
359261188Spfg	imported __byref variables in the block.
360261188Spfg	* c-parser.c (gen_block_byref_release_exp): Do not release __byref
361261188Spfg	variables outside of the block when returning from the block.
362261188Spfg
363261188Spfg2008-07-15  Fariborz Jahanian <fjahanian@apple.com>
364261188Spfg
365261188Spfg	 Radar 5988451
366261188Spfg	* c-decl.c (build_block_ref_decl): Insert copied in variable
367261188Spfg	in each enclosing block which does not use it.
368261188Spfg	(begin_block): Remove setting of "the_scope" field of the block.
369261188Spfg	(in_imm_block): Fix effect of changing the "the_scope" field.
370261188Spfg	(lookup_name_in_block): Do not skip over copied-in variables when
371261188Spfg	looking up a variable in the block.
372261188Spfg	* c-parser.c (c_parser_block_literal_expr): Set block's "the_scope" field
373261188Spfg	to the helper function's outer-most body scope.
374261188Spfg
375261188Spfg2008-07-08  Fariborz Jahanian <fjahanian@apple.com>
376261188Spfg
377261188Spfg	 Radar 6048570
378261188Spfg	* c-typeck.c (c_finish_return): Error on returning a block on the stack.
379261188Spfg
380261188Spfg2008-06-05  Fariborz Jahanian <fjahanian@apple.com>
381261188Spfg
382261188Spfg	 Radar 5988995
383261188Spfg	* c-typeck.c (types_are_closure_compatible): Nested block pointer
384261188Spfg	types must be considered when matching block types.
385261188Spfg
386261188Spfg2008-06-05  Fariborz Jahanian <fjahanian@apple.com>
387261188Spfg
388261188Spfg	 Radar 5982990
389261188Spfg	* c-parser.c (c_parser_objc_synch_compound_statement): New
390261188Spfg	(c_parser_objc_synchronized_statement): Call
391261188Spfg	c_parser_objc_synch_compound_statement.
392261188Spfg
393261188Spfg2008-06-04  Fariborz Jahanian <fjahanian@apple.com>
394261188Spfg
395261188Spfg	 Radar 5985368
396261188Spfg	* c-parser.c (c_parser_declaration_or_fndef): Better diagnostics for
397261188Spfg	a bad block definition.
398261188Spfg
399261188Spfg2008-05-23  Fariborz Jahanian <fjahanian@apple.com>
400261188Spfg
401261188Spfg	 Radar 5925781
402261188Spfg	* c-common.c (handle_nonnull_attribute): Support block pointer
403261188Spfg	just like a pointer for nonnull attribute.
404261188Spfg	(check_nonnull_arg): Ditto.
405261188Spfg
406261188Spfg2008-05-20  Fariborz Jahanian <fjahanian@apple.com>
407261188Spfg
408261188Spfg	 Radar 5932809 - minor change for runtime delight.
409261188Spfg	* c-parser.c (build_closure_struct_type): Add strcutor fields
410261188Spfg	for __byref 'id' object blocks as well.
411261188Spfg	(build_closure_struct_initlist): And their initializers.
412261188Spfg	
413261188Spfg2008-04-30  Caroline Tice  <ctice@apple.com>
414261188Spfg
415261188Spfg	 Radar 5811961
416261188Spfg	 * c-decl.c:  (declare_closure_prologue_local_vars):  Set the source
417261188Spfg		location for the new decl expr statement to be the source location of
418261188Spfg		the decl tree.
419261188Spfg
420261188Spfg2008-04-25  Fariborz Jahanian <fjahanian@apple.com>
421261188Spfg
422261188Spfg	 Radar 5803005 (tweaked)
423261188Spfg	* c-typeck.c (build_external_ref): Refactored global decl checks.
424261188Spfg
425261188Spfg2008-04-24  Caroline Tice  <ctice@apple.com>
426261188Spfg
427261188Spfg	 Radar 5811943
428261188Spfg	* tree.h (TYPE_CLOSURE_IMPL_STRUCT):  New macro.
429261188Spfg	(lang_flag_2): Use previously unused field in tree_type to indicate
430261188Spfg	closure structs.
431261188Spfg	*  dwarf2out.c (c-common.h):  New include statement.
432261188Spfg	(dwarf_attr_name):  Add case for DW_AT_APPLE_closure.
433261188Spfg	(gen_variable_die):  Give pointers to closures the
434261188Spfg	invoke_impl_ptr_type.
435261188Spfg	(gen_struct_or_union_type_die):  Add DW_AT_APPLE_closure
436261188Spfg	to structs that define closures.
437261188Spfg	* dwarf2.h (DW_AT_APPLE_closure):  New Dwarf attribute.
438261188Spfg	* c-typeck.c (invoke_impl_ptr_type):  Move declaration from here to
439261188Spfg	c-common.c
440261188Spfg	(build_closure_internal_types):   Set TYPE_CLOSURE_IMPL_STRUCT
441261188Spfg	flag for closure structs.
442261188Spfg	* c-common.c (invoke_impl_ptr_type):  Move declaration to here from
443261188Spfg	c-typeck.c.
444261188Spfg
445261188Spfg2008-04-23  Fariborz Jahanian <fjahanian@apple.com>
446261188Spfg
447261188Spfg	 Radar 5882266
448261188Spfg	* c-typeck.c (types_are_closure_compatible): Check for underlying
449261188Spfg	pointer types as well.
450261188Spfg
451261188Spfg2008-04-15  Stuart Hastings  <stuart@apple.com>
452261188Spfg
453261188Spfg	Radar 5862465
454261188Spfg	* tree.h (PTR_OR_REF_CHECK, POINTER_TYPE_P): Add
455261188Spfg	   CLOSURE_POINTER_TYPE.
456261188Spfg	* fold-const.c (fold_convert): Add CLOSURE_POINTER_TYPE.
457261188Spfg	* testsuite/gcc.apple/closure-5862465.c: New.
458261188Spfg
459261188Spfg2008-03-31  Fariborz Jahanian <fjahanian@apple.com>
460261188Spfg
461261188Spfg	Radar 5831855
462261188Spfg	* c-typeck.c (convert_for_assignment): Block and 'id' types
463261188Spfg	are interchangeable.
464261188Spfg
465261188Spfg2008-03-28  Fariborz Jahanian <fjahanian@apple.com>
466261188Spfg
467261188Spfg	Radar 5809099
468261188Spfg	* convert.c (convert_to_pointer): Allow typecast of closure
469261188Spfg	pointer to 'id'.
470261188Spfg	(convert_to_closure_pointer): Allow typecast of 'id'
471261188Spfg	of a closure pointer expression.
472261188Spfg
473261188Spfg2008-03-25  Fariborz Jahanian <fjahanian@apple.com>
474261188Spfg
475261188Spfg	Radar 5811887 (minor change)
476261188Spfg	* c-opts.c (c_common_post_options): Remove conditional check
477261188Spfg	of pedantic when setting flag_blocks.
478261188Spfg
479261188Spfg2008-03-24  Fariborz Jahanian <fjahanian@apple.com>
480261188Spfg
481261188Spfg	Radar 5811887
482261188Spfg	* c-cppbuiltin.c: flag_closures renamed to flag_blocks
483261188Spfg	* c-parser.c: Ditto.
484261188Spfg	* c.opt: flag_closures renamed to flag_blocks. flag_blocks
485261188Spfg	defaulted to -1.
486261188Spfg	* c-opts.c (c_common_post_options): All flavors of c99, blocks are off by
487261188Spfg	default unless requested via -fblocks.
488261188Spfg
489261188Spfg2008-03-24  Fariborz Jahanian <fjahanian@apple.com>
490261188Spfg
491261188Spfg	Radar 5814025
492261188Spfg	* c-tree.h (make_closure_pointer_declarator): Takes
493261188Spfg	additional argument.
494261188Spfg	* c-decl.c (grokdeclarator): Get 'const'-ness of closure
495261188Spfg	pointer.
496261188Spfg	(make_closure_pointer_declarator): Takes additional argument for
497261188Spfg	const/volatile.
498261188Spfg	* c-parser.c (c_parser_declarator): Pass down attribute info.
499261188Spfg	to make_closure_pointer_declarator.
500261188Spfg
501261188Spfg2008-03-20  Fariborz Jahanian <fjahanian@apple.com>
502261188Spfg
503261188Spfg	Radar 5802025
504261188Spfg	* c-common.h (objc_build_property_getter_func_call): New decl.
505261188Spfg	* stub-objc.c (objc_build_property_getter_func_call): New stub.
506261188Spfg
507261188Spfg2008-03-18  Fariborz Jahanian <fjahanian@apple.com>
508261188Spfg
509261188Spfg	Radar 5803600
510261188Spfg	* c-decl.c (add_closure_global_byref_list,
511261188Spfg	in_closure_global_byref_list): New defs.
512261188Spfg	* c-common.h (add_closure_global_byref_list,
513261188Spfg	in_closure_global_byref_list): New decls.
514261188Spfg	* c-typeck.c (build_external_ref): global variables
515261188Spfg	declared as 'byref' are enterred in their own list
516261188Spfg	of such declarations per each closure.
517261188Spfg	* c-parser.c (c_parser_postfix_expression): Remove previous fix.
518261188Spfg	(c_parser_closure_byref_declaration): Check for global
519261188Spfg	'byref' by calling in_closure_global_byref_list.
520261188Spfg
521261188Spfg2008-03-13  Fariborz Jahanian <fjahanian@apple.com>
522261188Spfg
523261188Spfg	Radar 5795493
524261188Spfg	* c-typeck.c: Renamed typesAreClosureCompatible to
525261188Spfg	types_are_closure_compatible.
526261188Spfg
527261188Spfg2008-03-11  Fariborz Jahanian <fjahanian@apple.com>
528261188Spfg
529261188Spfg	Radar 5732232 (Related to change of command option/macro)
530261188Spfg	* c-cppbuiltin.c: __CLOSURES__ macro rename __BLOCKS__
531261188Spfg	* c.opt: -fclosures change to -fblocks.
532261188Spfg
533261188Spfg2008-03-10  Fariborz Jahanian <fjahanian@apple.com>
534261188Spfg
535261188Spfg	Radar 5782740 - part 2 (bug fix).
536261188Spfg	* c-parser.c (synth_copy_helper_closure,
537261188Spfg	synth_destroy_helper_closure): set DECL_ARG_TYPE field of input
538261188Spfg	arguments for the two synthesized helper functions.
539261188Spfg
540261188Spfg2008-02-21  Caroline Tice  <ctice@apple.com>
541261188Spfg
542261188Spfg	Radar 5741070
543261188Spfg	* objc/objc-act.c (objc_finish_message_expr):  Find
544261188Spfg	the record-type tree from the class interface, and mark the record
545261188Spfg	type as used, for emitting debug info.
546261188Spfg	* cp/cp-objcp-common.c (c_return_interface_record_type):  New function.
547261188Spfg	* cp/cp-tree.h (c_return_interface_record_type): New extern function
548261188Spfg	declaration.
549261188Spfg	* c-tree.h (c_return_interface_record_type): Likewise
550261188Spfg	* c-decl.c (c_return_interface_record_type): New function.
551261188Spfg
552261188Spfg2007-08-22  Fariborz Jahanian <fjahanian@apple.com>
553261188Spfg
554261188Spfg	Radar 4947311
555261188Spfg	* c-common.h (objc_declare_protocols, objc_start_protocol): Decl changed.
556261188Spfg	* stub-objc.c (objc_declare_protocols, objc_start_protocol): Changed.
557261188Spfg	* c-parser.c (c_parser_external_declaration): Call to
558261188Spfg	c_parser_objc_protocol_definition takes additional argument.
559261188Spfg	(c_parser_declaration_or_fndef): Protocols with attributes are processed
560261188Spfg	here by passing it to c_parser_objc_protocol_definition.
561261188Spfg	(c_parser_objc_protocol_definition): Takes additional argument and passes
562261188Spfg	it to objc_declare_protocols or objc_start_protocol.
563261188Spfg
564261188Spfg2007-07-13  Fariborz Jahanian <fjahanian@apple.com>
565261188Spfg
566261188Spfg	Radar 5277239
567261188Spfg	* c-parser.c (c_parser_next_token_starts_declspecs): Exclude
568261188Spfg	objc2's property dot-syntax as a declarator.
569261188Spfg	(c_parser_postfix_expression): Convert property dot-syntax on
570261188Spfg	class objects into a property reference expression.
571261188Spfg
572261188Spfg2007-07-10  Fariborz Jahanian <fjahanian@apple.com>
573261188Spfg
574261188Spfg	Radar 5285911
575261188Spfg	* tree.h (CALL_EXPR_OBJC_PROPERTY_GETTER): Macro removed.
576261188Spfg	* c-typeck.c (build_component_ref): Call
577261188Spfg	objc_build_property_reference_expr instead of objc_build_getter_call.
578261188Spfg	(build_modify_expr): Call objc_property_reference_expr instead of
579261188Spfg	objc_property_call.
580261188Spfg	* c-common.h (objc_build_getter_call, objc_property_call): Decl removed.
581261188Spfg	(objc_build_property_reference_expr, objc_property_reference_expr): Decl.
582261188Spfg	added.
583261188Spfg	* stub-objc.c (objc_build_getter_call, objc_property_call): Stub removed.
584261188Spfg	(objc_build_property_reference_expr, objc_property_reference_expr):
585261188Spfg	Stub added.
586261188Spfg
587261188Spfg2007-06-29  Fariborz Jahanian <fjahanian@apple.com>
588261188Spfg
589261188Spfg	Radar 5276085
590261188Spfg	* c-parser.c (c_parser_binary_expression) : objc_generate_weak_read
591261188Spfg	replaced with call to objc_build_weak_reference_tree
592261188Spfg	* c-typeck.c (build_modify_expr, c_objc_common_truthvalue_conversion):
593261188Spfg	objc_remove_weak_read replaced with call to objc_weak_reference_expr.
594261188Spfg	* c-common.h (objc_weak_reference_expr,
595261188Spfg	objc_build_weak_reference_tree) : New decl.
596261188Spfg	(objc_generate_weak_read, objc_remove_weak_read): remove.
597261188Spfg	* stub-objc.c (objc_weak_reference_expr,
598261188Spfg	objc_build_weak_reference_tree): New stub.
599261188Spfg	(objc_generate_weak_read, objc_remove_weak_read): remove.
600261188Spfg
601261188Spfg2007-05-23 Fariborz Jahanian <fjahanian@apple.com>
602261188Spfg
603261188Spfg	Radar 5195402
604261188Spfg	* c-format.c (handle_format_arg_attribute): Check for NSString *
605261188Spfg	and CFStringRef as valid formatting types.
606261188Spfg	(check_format_string): Ditto.
607261188Spfg	* c-common.h (objc_check_format_nsstring,
608261188Spfg	objc_check_cfstringref_type): New decls.
609261188Spfg	* stub-objc.c (objc_check_nsstring_pointer_type): New stub.
610261188Spfg	* config/darwin-c.c (objc_check_cfstringref_type): New
611261188Spfg	(objc_check_format_cfstring): Call objc_check_cfstringref_type
612261188Spfg	for valid CFStringRef argument type.
613261188Spfg	* config/darwin-protos.h (objc_check_cfstringref_type): New decl.
614261188Spfg	* config/darwin.h (CFSTRING_TYPE_CHECK): New macro.
615261188Spfg
616261188Spfg2007-05-18  Fariborz Jahanian <fjahanian@apple.com>
617261188Spfg
618261188Spfg	Radar 5202926
619261188Spfg	* c-common.h (objc_anonymous_local_objc_name): New decl.
620261188Spfg	* config/darwin-protos.h (objc_anonymous_local_objc_name): Decl.
621261188Spfg	* stub-objc.c (objc_anonymous_local_objc_name): New stub.
622261188Spfg	* config/darwin.h (ASM_OUTPUT_LABELREF) Call
623261188Spfg	objc_anonymous_local_objc_name.
624261188Spfg
625261188Spfg2007-05-07  Fariborz Jahanian <fjahanian@apple.com>
626261188Spfg
627261188Spfg	Radar 4157812
628261188Spfg	* c-common.h (objc_build_keyword_decl): Takes a new argument.
629261188Spfg	* stub-objc.c (objc_build_keyword_decl): Ditto.
630261188Spfg	* c-parser.c (c_parser_objc_method_decl): Recognize optional
631261188Spfg	method's argument attribute.
632261188Spfg	(c_parser_objc_method_decl): Handle errornous selector.
633261188Spfg
634261188Spfg2007-05-02  Fariborz Jahanian <fjahanian@apple.com>
635261188Spfg
636261188Spfg	Radar 4502186
637261188Spfg	* c-typeck.c (convert_for_assignment): Remove synthesized 'volatile'
638261188Spfg	type before doing type comparison.
639261188Spfg
640261188Spfg2007-03-29 Fariborz Jahanian <fjahanian@apple.com>
641261188Spfg
642261188Spfg	Radar 4564694
643261188Spfg	* c-parse.c (c_parser_objc_class_instance_variables): Add @package
644261188Spfg	support to syntax.
645261188Spfg	* c-common.h (RID_AT_PACKAGE): Add
646261188Spfg
647261188Spfg2007-03-29  Fariborz Jahanian <fjahanian@apple.com>
648261188Spfg
649261188Spfg	Radar 4947014 - objc atomic property
650261188Spfg	* c-common.h (RID_NONATOMIC): Add
651261188Spfg	* c-parse.c (c_parser_objc_property_attribute) : Recognize 'nonatomic'
652261188Spfg	as new property.
653261188Spfg
654261188Spfg2007-03-23  Fariborz Jahanian <fjahanian@apple.com>
655261188Spfg
656261188Spfg	Radar 4985544
657261188Spfg	* c-format.c (enum format_type): New entry for NSString format.
658261188Spfg	(format_typ): Has a new entry for NSString format.
659261188Spfg	(decode_format_attr): Error on use of NSString format on a
660261188Spfg	non-objective-c program.
661261188Spfg	(objc_check_nsformat_arg): New.
662261188Spfg	(check_format_info): Call back for NSString is objc_check_nsformat_arg
663261188Spfg	(handle_format_attribute): Use objc_check_format_nsstring for
664261188Spfg	NSString format.
665261188Spfg	* c-common.h (objc_NSString_format): New decl.
666261188Spfg	(objc_check_format_nsstring): New decl.
667261188Spfg	* stub-objc.c  (objc_NSString_format, objc_check_format_nsstring): New
668261188Spfg	stubs.
669261188Spfg	* config/darwin-protos.h (darwin_cfstring_type_node): New decl.
670261188Spfg	* config/darwin.c (darwin_cfstring_type_node): New
671261188Spfg	* config/darwin.h (TARGET_CFSTRING_P): New macro
672261188Spfg
673261188Spfg2007-03-23  Fariborz Jahanian <fjahanian@apple.com>
674261188Spfg
675261188Spfg	Radar 4985544
676261188Spfg	* c-format.c (enum format_type): New entry for NSString format.
677261188Spfg	(format_typ): Has a new entry for NSString format.
678261188Spfg	(decode_format_attr): Error on use of NSString format on a
679261188Spfg	non-objective-c program.
680261188Spfg	(objc_check_nsformat_arg): New.
681261188Spfg	(check_format_info): Call back for NSString is objc_check_nsformat_arg
682261188Spfg	(handle_format_attribute): Use objc_check_format_nsstring for
683261188Spfg	NSString format.
684261188Spfg	* c-common.h (objc_NSString_format): New decl.
685261188Spfg	(objc_check_format_nsstring): New decl.
686261188Spfg	* stub-objc.c  (objc_NSString_format, objc_check_format_nsstring): New
687261188Spfg	stubs.
688261188Spfg	* config/darwin-protos.h (darwin_cfstring_type_node): New decl.
689261188Spfg	* config/darwin.c (darwin_cfstring_type_node): New
690261188Spfg	* config/darwin.h (TARGET_CFSTRING_P): New macro
691261188Spfg
692261188Spfg2007-03-22  Fariborz Jahanian <fjahanian@apple.com>
693261188Spfg
694261188Spfg	Radar 4965989
695261188Spfg	* c-parser.c (c_parser_objc_class_definition): Add supprt for anonymous
696261188Spfg	category syntax.
697261188Spfg
698261188Spfg2007-03-21  Fariborz Jahanian <fjahanian@apple.com>
699261188Spfg
700261188Spfg	Radar 2848255
701261188Spfg	* c-parser.c (c_parser_objc_try_catch_statement): Parse @catch(...).
702261188Spfg	* c.opt: Add -fobjc-zerocost-exceptions option.
703261188Spfg	* c-opts.c (c_common_post_options): Set the flags for
704261188Spfg	-fobjc-zerocost-exceptions.
705261188Spfg	* c-common.h: Add some declarations.
706261188Spfg	* stub-objc.c (objc2_valid_objc_catch_type, objc2_build_throw_call):
707261188Spfg	New stubs.
708261188Spfg	* config/darwin.h (OBJC_FLAG_OBJC_ABI): Check for proper
709261188Spfg	use of -fobjc-zerocost-exceptions option.
710261188Spfg
711261188Spfg2006-11-06  Fariborz Jahanian <fjahania@apple.com>
712261188Spfg
713261188Spfg	Radar 4781080 (part 2)
714261188Spfg	* targhooks.c (default_objc_fpreturn_msgcall): Takes 2nd argument.
715261188Spfg	* targhooks.h (default_objc_fpreturn_msgcall): Changed Decl.
716261188Spfg	* target.h (objc_fpreturn_msgcall): Changed Decl.
717261188Spfg	* config/i386/i386.h (OBJC_FPRETURN_MSGCALL): Changed Decl.
718261188Spfg	* config/i386/i386-protos.h (ix86_objc_fpreturn_msgcall): Changed Decl.
719261188Spfg	* config/i386/i386.c (ix86_objc_fpreturn_msgcall): Changed definition.
720261188Spfg2006-09-15  Fariborz Jahanian <fjahania@apple.com>
721261188Spfg
722261188Spfg	Radar 4727659
723261188Spfg	* c-common.c (handle_noreturn_attribute): Handle method_decl
724261188Spfg	nodes as well.
725261188Spfg
726261188Spfg2006-09-01  Fariborz Jahanian <fjahania@apple.com>
727261188Spfg
728261188Spfg	Radar 4712269
729261188Spfg	* c-common.h (objc_build_incr_decr_setter_call): New decl.
730261188Spfg	* stub-objc.c (objc_build_incr_decr_setter_call): New stub.
731261188Spfg	* c-typeck.c (build_unary_op): Call objc_build_incr_decr_setter_call
732261188Spfg	for potential ince/decr pre/post expressions involving properties.
733261188Spfg
734261188Spfg2006-08-31  Fariborz Jahanian  <fjahanian@apple.com>
735261188Spfg
736261188Spfg	Radar 4697411
737261188Spfg	* c-common.h (objc_volatilize_component_ref): New decl.
738261188Spfg	* c-typeck.c (build_component_ref): Call objc_volatilize_component_ref.
739261188Spfg	* stub-objc.c (objc_volatilize_component_ref): New stub.
740261188Spfg
741261188Spfg2006-07-18  Fariborz Jahanian <fjahanian@apple.com>
742261188Spfg
743261188Spfg	Radar 4592503
744261188Spfg	* c-decl.c (finish_struct): Check on illegal use of __weak
745261188Spfg	on struct fields.
746261188Spfg	* decl.c (start_decl): Check on illegal use of __weak on
747261188Spfg	variable declarations.
748261188Spfg	* stub-objc.c (objc_checkon_weak_attribute): New stub.
749261188Spfg	* c-common.h (objc_checkon_weak_attribute): New decl.
750261188Spfg
751261188Spfg2006-06-26  Fariborz Jahanian <fjahanian@apple.com>
752261188Spfg
753261188Spfg	Radar 4591909
754261188Spfg	* c-parse.in: New/modified grammar for new attributes in
755261188Spfg	  properties.
756261188Spfg	(yylexname): Change to recognize new attribute terminals.
757261188Spfg	* c-common.h (RID_DYNAMIC): New enum declaration.
758261188Spfg
759261188Spfg2006-07-14  Fariborz Jahanian <fjahanian@apple.com>
760261188Spfg
761261188Spfg	Radar 4621020
762261188Spfg	* c-parse.in: Added 'weak' attribute keyword for @property.
763261188Spfg	* c-common.h: 'weak' related declarations.
764261188Spfg
765261188Spfg2006-05-18 Fariborz Jahanian <fjahanian@apple.com>
766261188Spfg
767261188Spfg	Radar 4548636 (objc attributes on class)
768261188Spfg	* c-parse.in: Add attribute non-terminal before
769261188Spfg	AT_INTERFACE.
770261188Spfg	* c-common.h (objc_start_class_interface): New argument added.
771261188Spfg	* stub-objc.c (objc_start_class_interface): Ditto.
772261188Spfg
773261188Spfg2006-05-16 Fariborz Jahanian <fjahanian@apple.com>
774261188Spfg
775261188Spfg	Radar 4547045
776261188Spfg	* c-gimplify.c (obj_reuse_bc_block): Removed.
777261188Spfg	(objc_pop_label, objc_push_label): New.
778261188Spfg	(gimplify_c_loop): Fix up foreach's innerloop break label.
779261188Spfg
780261188Spfg2006-04-26 Fariborz Jahanian <fjahanian@apple.com>
781261188Spfg
782261188Spfg	Radar 3803157 (method attributes)
783261188Spfg	* c-parse.in: Add grammar support for declaring
784261188Spfg	attribute for objc methods.
785261188Spfg	* c-common.c (handle_deprecated_attribute): Recognize
786261188Spfg	objc methods as valid declarations.
787261188Spfg	(handle_unavailable_attribute): Ditto.
788261188Spfg	* c-common.h: Bunch of new extern declarations.
789261188Spfg	* stub-objc.c (objc_add_method_declaration, objc_start_method_definition):
790261188Spfg	Added new argument.
791261188Spfg	(objc_method_decl): New stub.
792261188Spfg
793261188Spfg2006-04-12 Fariborz Jahanian <fjahanian@apple.com>
794261188Spfg
795261188Spfg	Radar 4507230
796261188Spfg	* c-common.h (objc_type_valid_for_messaging): Declare.
797261188Spfg	* stub-objc.c (objc_type_valid_for_messaging): New stub.
798261188Spfg
799261188Spfg2006-04-06 Fariborz Jahanian <fjahanian@apple.com>
800261188Spfg
801261188Spfg	Radar 4436866
802261188Spfg	(Missing copies attribute)
803261188Spfg	* c-parse.in: Add grammer for 'copies' attribute.
804261188Spfg	* c-common.h (RID_COPIES): New enumerator.
805261188Spfg
806261188Spfg2006-03-27 Fariborz Jahanian <fjahanian@apple.com>
807261188Spfg
808261188Spfg	Radar 4133425
809261188Spfg	* c-common.h (objc_diagnose_private_ivar): New decl.
810261188Spfg	* stub-objc.c (objc_diagnose_private_ivar): New stub.
811261188Spfg	* c-decl.c (undeclared_variable): Issue disnostic on
812261188Spfg	private 'ivar' access.
813261188Spfg
814261188Spfg2006-03-27 Fariborz Jahanian <fjahanian@apple.com>
815261188Spfg
816261188Spfg	Radar 4491608
817261188Spfg	* c-typeck.c (convert_arguments): function name must come from 'selector'
818261188Spfg	when diagnosing 'too many arguments'.
819261188Spfg
820261188Spfg2006-03-23 Fariborz Jahanian <fjahanian@apple.com>
821261188Spfg
822261188Spfg	Radar 4193359
823261188Spfg	* c-typeck.c (convert_for_assignment): Remove Objective-C EH machinery
824261188Spfg	'volatile' qualifier before doing type comparison.
825261188Spfg
826261188Spfg2006-02-28 Fariborz Jahanian <fjahanian@apple.com>
827261188Spfg
828261188Spfg	Radar 4441049
829261188Spfg	* c-common.h (objc_v2_bitfield_ivar_bitpos): New decl.
830261188Spfg	* expr.h (objc_v2_bitfield_ivar_bitpos): New decl.
831261188Spfg	* stub-objc.c (objc_v2_bitfield_ivar_bitpos): New stub.
832261188Spfg	* expr.c (get_inner_reference): Compute ivar's bitfield bit offset.
833261188Spfg
834261188Spfg2006-02-15   Fariborz Jahanian <fjahanian@apple.com>
835261188Spfg
836260014Spfg	Radar 4445586
837260014Spfg	* c-common.def (DO_STMT): Takes an extra argument.
838260014Spfg
839261188Spfg2006-02-02   Fariborz Jahanian <fjahanian@apple.com>
840261188Spfg
841261188Spfg	Radar 4426814
842261188Spfg	* c-parse.in (cast_expr): generate objc_read_weak call on
843261188Spfg	each __weak object in the expession.
844261188Spfg	* c-typeck.c (build_modify_expr): Undo the call to objc_read_weak
845261188Spfg	on LHS expression.
846261188Spfg	* c-objc-common.c (c_objc_common_truthvalue_conversion): Generate
847261188Spfg	objc_read_weak call before generating tree for !exp, etc.
848261188Spfg	* c-common.h (objc_generate_weak_read, objc_remove_weak_read): New decl.
849261188Spfg	* stub-objc.c (objc_generate_weak_read, objc_remove_weak_read): New stubs.
850261188Spfg
851261188Spfg2005-12-15  Fariborz Jahanian <fjahanian@apple.com>
852261188Spfg
853261188Spfg	Radar 4229905
854261188Spfg	* c-typeck.c (build_conditional_expr): Call objc_have_common_type when
855261188Spfg	looking for objective-c common pointer types.
856261188Spfg	* c-common.h objc_have_common_type): New declaration.
857261188Spfg	* stub-objc.c (objc_have_common_type): New stub.
858261188Spfg
859261188Spfg2005-12-05  Mike Stump  <mrs@apple.com>
860261188Spfg
861261188Spfg	Radar 4357979
862261188Spfg	* doc/invoke.texi (C Dialect Options): Improve -fnested-functions wording.
863261188Spfg	* doc/extend.texi (Nested Functions): Note that on darwin nested
864261188Spfg	functions are off by default.
865261188Spfg
866261188Spfg2005-11-08  Fariborz Jahanian <fjahanian@apple.com>
867261188Spfg
868261188Spfg	Radar 4330422
869261188Spfg
870261188Spfg	* c-common.h (objc_non_volatilized_type): New declaration
871261188Spfg	* stub-objc.c (objc_non_volatilized_type): New stub.
872261188Spfg
873261188Spfg2005-10-12  Fariborz Jahanian <fjahanian@apple.com>
874261188Spfg
875261188Spfg	Radar 4291785
876261188Spfg
877261188Spfg	* c-common.h (objc_get_interface_ivars): New declaration
878261188Spfg	(objc_detect_field_duplicates): Ditto.
879261188Spfg	* c-decl.c (finish_struct): Check for duplicate among
880261188Spfg	flattened fields if objective-c.
881261188Spfg	* stub-objc.c (objc_get_interface_ivars): New stub.
882261188Spfg	(objc_detect_field_duplicates): Ditto.
883261188Spfg
884261188Spfg2005-09-28  Devang Patel  <dpatel@apple.com>
885261188Spfg
886261188Spfg	Radar 4258406
887261188Spfg	* c-parse.in (nested_function): Report an error, instead of a warning.
888261188Spfg	(nontype_nested_function): Same.
889261188Spfg	* c.opt (Wnested-funcs): Remove.
890261188Spfg	* doc/invoke.texi: Remove Wnested-funcs documentations.
891261188Spfg
892261188Spfg2005-08-03 Fariborz Jahanian <fjahanian@apple.com>
893261188Spfg
894261188Spfg	Radar 4188876
895261188Spfg	* c-typeck.c (pop_init_level): Issue diagnostic on non-constant
896261188Spfg	vector initializers.
897261188Spfg
898261188Spfg2005-06-22  Ziemowit Laski  <zlaski@apple.com>
899261188Spfg
900261188Spfg	Radar 4154928
901261188Spfg	* c-common.h (objc_common_type): New prototype.
902261188Spfg	* c-typeck.c (build_conditional_expr): For two ObjC pointer types,
903261188Spfg	use their ObjC common type.
904261188Spfg	* stub-objc.c (objc_common_type): New stub.
905261188Spfg
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