Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Jan 2014 19:49:54 +0000 (UTC)
From:      "Pedro F. Giffuni" <pfg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r261188 - in stable/10/contrib: gcc gcc/cp gcc/doc gcclibs/include gcclibs/libiberty
Message-ID:  <201401261949.s0QJnsHg000650@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: pfg
Date: Sun Jan 26 19:49:54 2014
New Revision: 261188
URL: http://svnweb.freebsd.org/changeset/base/261188

Log:
  MFC	r260311, r260831:
  
  gcc: Add support for Apple's Block extension
  
  Block objects [1] are a C-level syntactic and runtime feature. They
  are similar to standard C functions, but in addition to executable
  code they may also contain variable bindings to automatic (stack)
  or managed (heap) memory. A block can therefore maintain a set of
  state (data) that it can use to impact behavior when executed.
  
  This port is based on Apple's GCC 5646 with some bugfixes from
  Apple GCC 5666.3. It has some small differences with the support
  in clang, which remains the recommended compiler.
  
  Perhaps the most notable difference is that in GCC __block is not
  actually a keyword, but a macro. There may be workaround for this
  issue in the future. Other issues can be consulted in the clang
  documentation [2]
  
  For better compatiblity with Apple's GCC and llvm-gcc, some related
  fixes and features from Apple have been included. Support for the
  non-standard nested functions in GCC is now off by default.
  
  No effort was made to update the ObjC support since FreeBSD doesn't
  carry ObjC in the base system but some of the code crept in and
  was more difficult to remove than to adjust.
  
  References:
  [1]
  https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Blocks/Articles/00_Introduction.html
  [2]
  http://clang.llvm.org/compatibility.html#block-variable-initialization
  
  Obtained from:	Apple GCC 4.2

Modified:
  stable/10/contrib/gcc/ChangeLog.apple
  stable/10/contrib/gcc/attribs.c
  stable/10/contrib/gcc/c-common.c
  stable/10/contrib/gcc/c-common.h
  stable/10/contrib/gcc/c-convert.c
  stable/10/contrib/gcc/c-cppbuiltin.c
  stable/10/contrib/gcc/c-decl.c
  stable/10/contrib/gcc/c-objc-common.h
  stable/10/contrib/gcc/c-opts.c
  stable/10/contrib/gcc/c-parser.c
  stable/10/contrib/gcc/c-pretty-print.c
  stable/10/contrib/gcc/c-pretty-print.h
  stable/10/contrib/gcc/c-tree.h
  stable/10/contrib/gcc/c-typeck.c
  stable/10/contrib/gcc/c.opt
  stable/10/contrib/gcc/calls.c
  stable/10/contrib/gcc/cgraph.h
  stable/10/contrib/gcc/cgraphunit.c
  stable/10/contrib/gcc/convert.c
  stable/10/contrib/gcc/convert.h
  stable/10/contrib/gcc/cp/ChangeLog.apple
  stable/10/contrib/gcc/cp/call.c
  stable/10/contrib/gcc/cp/class.c
  stable/10/contrib/gcc/cp/cp-gimplify.c
  stable/10/contrib/gcc/cp/cp-objcp-common.c
  stable/10/contrib/gcc/cp/cp-objcp-common.h
  stable/10/contrib/gcc/cp/cp-tree.h
  stable/10/contrib/gcc/cp/decl.c
  stable/10/contrib/gcc/cp/decl.h
  stable/10/contrib/gcc/cp/decl2.c
  stable/10/contrib/gcc/cp/error.c
  stable/10/contrib/gcc/cp/init.c
  stable/10/contrib/gcc/cp/mangle.c
  stable/10/contrib/gcc/cp/name-lookup.c
  stable/10/contrib/gcc/cp/name-lookup.h
  stable/10/contrib/gcc/cp/parser.c
  stable/10/contrib/gcc/cp/pt.c
  stable/10/contrib/gcc/cp/semantics.c
  stable/10/contrib/gcc/cp/tree.c
  stable/10/contrib/gcc/cp/typeck.c
  stable/10/contrib/gcc/dbxout.c
  stable/10/contrib/gcc/doc/extend.texi
  stable/10/contrib/gcc/doc/invoke.texi
  stable/10/contrib/gcc/dwarf2.h
  stable/10/contrib/gcc/dwarf2out.c
  stable/10/contrib/gcc/expmed.c
  stable/10/contrib/gcc/expr.c
  stable/10/contrib/gcc/fold-const.c
  stable/10/contrib/gcc/function.c
  stable/10/contrib/gcc/function.h
  stable/10/contrib/gcc/ggc-common.c
  stable/10/contrib/gcc/ggc.h
  stable/10/contrib/gcc/langhooks-def.h
  stable/10/contrib/gcc/langhooks.c
  stable/10/contrib/gcc/langhooks.h
  stable/10/contrib/gcc/stor-layout.c
  stable/10/contrib/gcc/stub-objc.c
  stable/10/contrib/gcc/targhooks.c
  stable/10/contrib/gcc/toplev.c
  stable/10/contrib/gcc/tree-gimple.h
  stable/10/contrib/gcc/tree-nested.c
  stable/10/contrib/gcc/tree.c
  stable/10/contrib/gcc/tree.def
  stable/10/contrib/gcc/tree.h
  stable/10/contrib/gcc/varasm.c
  stable/10/contrib/gcclibs/include/libiberty.h
  stable/10/contrib/gcclibs/libiberty/physmem.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/contrib/gcc/ChangeLog.apple
==============================================================================
--- stable/10/contrib/gcc/ChangeLog.apple	Sun Jan 26 12:45:55 2014	(r261187)
+++ stable/10/contrib/gcc/ChangeLog.apple	Sun Jan 26 19:49:54 2014	(r261188)
@@ -1,8 +1,908 @@
-006-02-15   Fariborz Jahanian <fjahanian@apple.com>
+2010-03-16  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 7760213
+	* c-common.h (HasByrefArray): New decl.
+	* c-common.c (HasByrefArray): New definition.
+	* c-typeck.c (build_external_ref): Diagnose access of
+	__block array.
+
+2010-03-12  Jim Grosbach <grosbach@apple.com>
+
+	Radar 7744816
+
+	* expmed.c (synth_mult): Remove incorrect special case handling for
+	0xffffffff.
+
+2010-03-12  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 7735196
+	 * c-parser.c (build_block_struct_initlist): 
+	 Set BLOCK_USE_STRET flag in block descriptor for
+	 blocks which return their aggregate value in memory.
+	* c-common.h (BLOCK_USE_STRET): New flag.
+
+2010-03-05  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 7721728
+	* c-typeck.c (build_external_ref): Diagnose
+	importation of copied-in variables.
+
+2009-03-12  Caroline Tice  <ctice@apple.com>
+
+	 Radar 6144634
+	 * c-parser.c (c_parser_statement_after_labels): When
+	 re-setting the expression location at the end, use the input
+	 location for Block pointer assignments.
+
+2009-02-11  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 6573923
+	* c-decl.c (synth_block_byref_id_object_copy_func,
+	synth_block_byref_id_object_dispose_func): Set BLOCK_BYREF_CALLER
+	flag in call to copy/dispose helper functions.
+	* c-common.h (BLOCK_BYREF_CALLER): New flag.
+
+2008-12-21  Caroline Tice  <ctice@apple.com>
+
+	 Radar 6455678
+	 * cp/typeck.c (original_type):  Stop if the type
+	and its DECL_ORIGINAL_TYPE are the same.
+
+2008-12-18  Bill Wendling  <wendling@apple.com>
+
+	 Radar 6457359
+	 * c-parser.c (build_block_struct_initlist): Changed type.
+	 * cp/parser.c (build_block_struct_initlist): Ditto.
+
+2008-12-02  Caroline Tice  <ctice@apple.com>
+
+	Radar 6386976
+	* objcp/objcp-decl.h (TYPE_HAS_OBJCXX_INFO):  New macro.
+	* objcp/objcp-lang.c  (objcp-decl.h):  New include statement, with
+	required define.      
+	(LANG_HOOKS_IS_RUNTIME_SPECIFIC_TYPE):  Redefine for
+	obj-c++.
+	(objcxx_is_runtime_type):  New function.
+
+2008-12-02  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6411649
+	* funciton.h: Added new field.
+	* c-common.c (build_block_helper_name): Produce a unique
+	   block number per each enclosing function when building
+	   the block helper function name.
+
+2008-11-18  Stuart Hastings  <stuart@apple.com>
+
+	Radar 6353006
+	* tree.c (generic_block_literal_struct_type): Fix APPLE LOCAL.
+	* langhooks-def.h (lhd_build_generic_block_struct_type): Fix
+	   APPLE LOCAL.
+
+2008-11-07  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 5847976
+	* c-decl.c (synth_block_byref_id_object_copy_func): Takes a new
+	'flag' argument and generates the much simplified API.
+	(synth_block_byref_id_object_dispose_func): Ditto.
+	(new_block_byref_decl): Hack to prevent issuing bogus warning
+	on a field declared as __weak.
+	(init_byref_decl): Takes an additional 'flag' argument
+	and passes it down to synth_block_byref_id_object_copy_func and
+	synth_block_byref_id_object_dispose_func.
+	(finish_decl): Computes the flag for the block variable declaration.
+	* c-common.c (build_block_byref_release_decl, 
+	build_block_byref_assign_copy_decl): Removed.
+	(build_block_byref_release_exp): Use the new API.
+	(build_block_object_assign_decl, build_block_object_assign_call_exp,
+	build_block_object_dispose_decl, build_block_object_dispose_call_exp): New.			
+	(build_indirect_object_id_exp): Fixed a code gen bug which was exposed in
+	c/c++ mode, but not in ObjC/ObjC++ mode.
+	* c-common.h (build_block_object_assign_call_exp,
+	build_block_object_dispose_call_exp,
+	objc_is_gcable_type): New decls.
+	Declaration of several new flags.
+	(cast_to_pointer_to_id): Removed.
+	* stub-objc.c (objc_is_gcable_type): New
+	(copy_in_object, retain_block_component, release_block_component): Removed.
+	(cast_to_pointer_to_id): Removed.
+	* c-parser.c (build_block_struct_initlist): Remove call to copy_in_object.
+	(synth_copy_helper_block_func): Generates much simplified API.
+	(synth_destroy_helper_block_func): Ditto.
+	(block_object_dispose): Removed.
+	* config/darwin-c.c (darwin_cpp_builtins): Define __weak even when
+	-fobjc-gc is off.
+
+2008-10-31  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6175959
+	* stub-objc.c (block_requires_copying): Object pointers with
+	NSObject attribute also require copy/release API.
+	 * c-parser.c (synth_copy_helper_block_func): Use the new API
+	 _Block_object_assign for ObjC object copying.
+	 (block_object_dispose): New
+	 (synth_destroy_helper_block_func): Call block_object_dispose
+	 to use new _Block_object_dispose API for ObjC object release.
+
+2008-10-27  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6231433
+	 * c-typeck.c (objc_compare_types, objc_have_common_type):
+	 Take an extra argument for better diagnostics.
+	* c-common.c (objc_compare_types, objc_have_common_type):
+	Take extra argument.
+	* stub-objc.c: Ditto
+	
+2008-10-24  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 6305545
+	* cgraph.h (lower_if_nested_functions): New decl.
+	* tree-gimple.h (lower_nested_functions): Takes one more arg.
+	* cgraphunit.c (lower_if_nested_functions): New
+	* tree-nested.c (lower_nested_functions): Skip structors.
+
+2008-10-24  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5847213 (minor tweak)
+	* c-decl.c (build_block_descriptor_type):
+	Make descriptor_ptr_type and descriptor_ptr_type_with_copydispose
+	visible to pch.
+
+2008-10-23  Caroline Tice  <ctice@apple.com>
+
+	 Radar 6300081
+	* tree.c(build_block_pointer_type):  Add call to 
+	build_generic_block_struct_type to initialize 
+	generic_block_literal_struct_type if necessary.
+	* cp/parser.c (build_generic_block_struct_type):  Update comments.
+	(build_block_struct_type):  Remove call to 
+	build_generic_block_struct_type.
+	(make_block_pointer_declarator):  Likewise.
+	* c-decl.c (make_block_pointer_declarator):  Likewise.
+	* c-parser.c (build_block_struct_type):  Likewise.
+	(build_generic_block_struct_type):  Update comments.
+
+2008-10-22  Caroline Tice  <ctice@apple.com>
+
+	 Radar 6300081 & Radar 6163705
+	 * tree.h (generic_block_literal_struct_type):  Extern global variable
+	 decl.
+	 (build_generic_block_struct_type):  New extern function decl.
+	 * cp/parser (build_generic_block_struct_type): New function.
+	 (build_block_struct_type):   Call build_generic_block_struct_type
+	 to initialize generic_block_literal_struct_type.
+	 (make_block_pointer_declarator):  Likewise.
+	 (declare_block_prologue_local_vars):  Temporarily set input_location
+	 to 1 before the start of the block function; re-set input_location at
+	 the end of this function.
+	 * dwarf2out.c (add_type_attribute):  If the type is a
+	 BLOCK_POINTER_TYPE, assign it to be a pointer to a
+	 generic_block_literal_struct_type.
+	 * c-decl.c (make_block_pointer_declarator): Call
+	 build_generic_block_struct_type to initialize
+	 generic_block_literal_struct_type.
+	 * c-common.c (generic_block_literal_struct_type):  New global variable.
+	 * c-parser.c (build_generic_block_struct_type):  New function.
+	 (build_block_struct_type):   Call build_generic_block_struct_type
+	 to initialize  generic_block_literal_struct_type.
+	 * testsuite/gcc.apple/block-debug-1.c:  Fix test to work with new
+	 compiler modifications.
+	 * testsuite/gcc.apple/block-debug-2.c:  Likewise.
+	 * testsuite/g++.apple/block-debug-1.C:  Likewise.
+	 * testsuite/g++.apple/block-debug-2.C:  Likewise.
+
+2008-10-10  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5847213 - New Block ABI
+	* dwarf2out.c (add_type_attribute): Unusuable code
+	for radar 5811943 is removed.
+	* c-decl.c (build_block_byref_decl): Removed unneeded 
+	build of block_original_byref_decl_list.
+	(build_block_internal_types): Removed.
+	(build_block_descriptor_type): New routine to build the descriptor type.
+	(make_block_pointer_declarator): Unused code is removed.
+	* c-typeck.c (build_block_call): New code gen for block calls.
+	* c-common.c (invoke_impl_ptr_type): Removed.
+	* c-common.h (block_original_byref_decl_list, build_block_internal_types): Removed
+	(build_block_descriptor_type, BLOCK_HAS_DESCRIPTOR): Decls added.
+	* c-parser.c (build_block_struct_type): Block literal expression internal type
+	is redeclared into its new layout.
+	(build_block_struct_initlist): Initializer list for above type is redone.
+	(build_descriptor_block_decl): New routine to declare the descriptor variable
+	(build_block_literal_tmp): Modified for the new type and initiazation.
+		
+2008-10-06  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6268817
+	* c-decl.c (check_for_loop_decls): Block helper function
+	is OK if declared in a for-loop main statement block.
+
+2008-10-02  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6246527
+	* attribs.c (decl_attributes): Added support for adding attributes
+	on block pointer variable declarations.
+	* c-common.c (block_delta_format_args): Add
+	(any_recognized_block_attribute): Add
+	* c-common.h (any_recognized_block_attribute): New decl.
+	* c-parser.c (c_parser_block_literal_expr): Call to do the delta
+	on printf attribute.
+
+2008-09-30  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6225809
+	* c-decl.c (build_block_byref_decl): Add __block vaiables
+	to intervening blocks.
+
+2008-09-25  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6237713
+	* c-common.c (handle_noreturn_attribute): Add 'noreturn'
+	attribute to block pointer decls.
+	* c-parser.c (c_parser_block_literal_expr): Parse and set
+	attributes on block literals.
+
+2008-09-25  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6244520 - minor addition
+	* c-common.c (build_indirect_object_id_exp): offset needs
+	be updated to accomodate addition of the new field.
+
+2008-09-16  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6214617
+	* c-common: New flag BLOCK_HAS_CXX_OBJ replaces BLOCK_NO_COPY.
+	(BlockImportsCxxObjects): New field replaces BlockHasByrefVar.
+	* c-parser.c (build_block_struct_type): Remove setting of
+	BLOCK_NO_COPY flag.
+
+2008-09-16  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 6217257
+	* c-common.c (handle_blocks_attribute): Diagnose 
+	vla __block declarations.
+
+2008-09-12  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6212722 (tweak)
+	* c-decl.c (build_block_ref_decl): Use array_to_pointer_conversion
+	and function_to_pointer_conversion.
+	* c-typeck.c (array_to_pointer_conversion, function_to_pointer_conversion):
+	Made them global.
+	* c-common.h (array_to_pointer_conversion, function_to_pointer_conversion):
+	Declare.
+	
+2008-09-09  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6169580
+	* c-commmon.c (build_block_helper_name): Fix bug in
+	block helper function name mangling.
+
+2008-09-03  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6185344
+	* c-typeck.c (c_finish_return): Don't do block specific
+	stuff when block has a return type.
+	* c-common.h (block_sema_info): block_has_return_type is
+	a new field.
+	* c-parser.c (c_parser_direct_declarator): Terminate type
+	parsing for block return types.
+	(c_parser_block_literal_expr): Added support to parse and
+	handle explicit return type for blocks.
+
+2008-08-28  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6160536
+	* c-commmon.c (build_block_helper_name): New
+	* c-common.h (build_block_helper_name): New decl.
+	* c-parser.c (c_parser_block_literal_expr): Call
+	build_block_helper_name to build pretty helper function
+	name.
+
+2008-08-28  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6180456
+	* c-decl.c (synth_block_byref_id_object_copy_func): Different
+	API for copying __block declared objects in c.
+	(synth_block_byref_id_object_dispose_func): Different API
+	for releasing __block declared objects in c.
+	* c-common.c (block_byref_assign_copy_decl): New
+	(build_indirect_object_id_exp): Cast to 'id *' in objective-c
+	mode only.
+	* c-common.h (build_block_byref_assign_copy_decl): New decl.
+	* c-parser.c (synth_copy_helper_block_func): Refactored code
+	to call build_block_byref_assign_copy_decl().
+	
+2008-08-24  Caroline Tice  <ctice@apple.com>
+
+	Radars 6144664, 6145471, 6144634
+	c-decl.c (build_block_byref_decl):  Assign the source
+	location for each byref decl to the source location of
+	the helper function decl.
+	(build_block_ref_decl):  Ditto for ref decls.
+
+2008-08-14  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 5822844
+	* c-typeck.c (digest_init): Handler block as initializer.
+	(c_finish_return): check for completed block before
+	analyzing block's return expression.
+	* varasm.c (output_constant): Allow outputting block data.
+	* c-common.h (BLOCK_IS_GLOBAL): New flag.
+	(block_is_complete): New field in block data structure.
+	* c-parser.c (build_block_struct_initlist): New initializer and
+	flag for global block data.
+	(build_block_literal_tmp): Temporary data for global block is
+	declared as global static.
+	(c_parser_block_literal_expr): Removed diagnostics for global blocks.
+	Moved fixing helper function type earlier before its tree is built.
+	
+2008-08-06  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6014138 
+	* c-decl.c (build_block_byref_decl): In the presence of nested "{" 
+	  move up the scope chain until reaching the main function body's scope.
+
+2008-08-04  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6040305 - work in progress.
+	* c-decl.c (build_indirect_object_id_exp): Removed.
+	* c-common.c (build_indirect_object_id_exp): Added
+	* c-common.h (build_indirect_object_id_exp): New decl.
+	* config/darwin-c.c (darwin_cpp_builtins): Define __byref
+	in c++ mode as well.
+
+2008-07-18  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6083129 - twiked
+	* c-decl.c (release_all_local_byrefs_at_return): Do not release
+	imported __byref variables in the block.
+	* c-parser.c (gen_block_byref_release_exp): Do not release __byref
+	variables outside of the block when returning from the block.
+
+2008-07-15  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 5988451
+	* c-decl.c (build_block_ref_decl): Insert copied in variable
+	in each enclosing block which does not use it.
+	(begin_block): Remove setting of "the_scope" field of the block.
+	(in_imm_block): Fix effect of changing the "the_scope" field.
+	(lookup_name_in_block): Do not skip over copied-in variables when
+	looking up a variable in the block.
+	* c-parser.c (c_parser_block_literal_expr): Set block's "the_scope" field
+	to the helper function's outer-most body scope.
+
+2008-07-08  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 6048570
+	* c-typeck.c (c_finish_return): Error on returning a block on the stack.
+
+2008-06-05  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 5988995
+	* c-typeck.c (types_are_closure_compatible): Nested block pointer
+	types must be considered when matching block types.
+
+2008-06-05  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 5982990
+	* c-parser.c (c_parser_objc_synch_compound_statement): New
+	(c_parser_objc_synchronized_statement): Call
+	c_parser_objc_synch_compound_statement.
+
+2008-06-04  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 5985368
+	* c-parser.c (c_parser_declaration_or_fndef): Better diagnostics for
+	a bad block definition.
+
+2008-05-23  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 5925781
+	* c-common.c (handle_nonnull_attribute): Support block pointer
+	just like a pointer for nonnull attribute.
+	(check_nonnull_arg): Ditto.
+
+2008-05-20  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 5932809 - minor change for runtime delight.
+	* c-parser.c (build_closure_struct_type): Add strcutor fields
+	for __byref 'id' object blocks as well.
+	(build_closure_struct_initlist): And their initializers.
+	
+2008-04-30  Caroline Tice  <ctice@apple.com>
+
+	 Radar 5811961
+	 * c-decl.c:  (declare_closure_prologue_local_vars):  Set the source
+		location for the new decl expr statement to be the source location of
+		the decl tree.
+
+2008-04-25  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 5803005 (tweaked)
+	* c-typeck.c (build_external_ref): Refactored global decl checks.
+
+2008-04-24  Caroline Tice  <ctice@apple.com>
+
+	 Radar 5811943
+	* tree.h (TYPE_CLOSURE_IMPL_STRUCT):  New macro.
+	(lang_flag_2): Use previously unused field in tree_type to indicate
+	closure structs.
+	*  dwarf2out.c (c-common.h):  New include statement.
+	(dwarf_attr_name):  Add case for DW_AT_APPLE_closure.
+	(gen_variable_die):  Give pointers to closures the
+	invoke_impl_ptr_type.
+	(gen_struct_or_union_type_die):  Add DW_AT_APPLE_closure
+	to structs that define closures.
+	* dwarf2.h (DW_AT_APPLE_closure):  New Dwarf attribute.
+	* c-typeck.c (invoke_impl_ptr_type):  Move declaration from here to
+	c-common.c
+	(build_closure_internal_types):   Set TYPE_CLOSURE_IMPL_STRUCT
+	flag for closure structs.
+	* c-common.c (invoke_impl_ptr_type):  Move declaration to here from
+	c-typeck.c.
+
+2008-04-23  Fariborz Jahanian <fjahanian@apple.com>
+
+	 Radar 5882266
+	* c-typeck.c (types_are_closure_compatible): Check for underlying
+	pointer types as well.
+
+2008-04-15  Stuart Hastings  <stuart@apple.com>
+
+	Radar 5862465
+	* tree.h (PTR_OR_REF_CHECK, POINTER_TYPE_P): Add
+	   CLOSURE_POINTER_TYPE.
+	* fold-const.c (fold_convert): Add CLOSURE_POINTER_TYPE.
+	* testsuite/gcc.apple/closure-5862465.c: New.
+
+2008-03-31  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5831855
+	* c-typeck.c (convert_for_assignment): Block and 'id' types
+	are interchangeable.
+
+2008-03-28  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5809099
+	* convert.c (convert_to_pointer): Allow typecast of closure
+	pointer to 'id'.
+	(convert_to_closure_pointer): Allow typecast of 'id'
+	of a closure pointer expression.
+
+2008-03-25  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5811887 (minor change)
+	* c-opts.c (c_common_post_options): Remove conditional check
+	of pedantic when setting flag_blocks.
+
+2008-03-24  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5811887
+	* c-cppbuiltin.c: flag_closures renamed to flag_blocks
+	* c-parser.c: Ditto.
+	* c.opt: flag_closures renamed to flag_blocks. flag_blocks
+	defaulted to -1.
+	* c-opts.c (c_common_post_options): All flavors of c99, blocks are off by
+	default unless requested via -fblocks.
+
+2008-03-24  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5814025
+	* c-tree.h (make_closure_pointer_declarator): Takes
+	additional argument.
+	* c-decl.c (grokdeclarator): Get 'const'-ness of closure
+	pointer.
+	(make_closure_pointer_declarator): Takes additional argument for
+	const/volatile.
+	* c-parser.c (c_parser_declarator): Pass down attribute info.
+	to make_closure_pointer_declarator.
+
+2008-03-20  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5802025
+	* c-common.h (objc_build_property_getter_func_call): New decl.
+	* stub-objc.c (objc_build_property_getter_func_call): New stub.
+
+2008-03-18  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5803600
+	* c-decl.c (add_closure_global_byref_list,
+	in_closure_global_byref_list): New defs.
+	* c-common.h (add_closure_global_byref_list,
+	in_closure_global_byref_list): New decls.
+	* c-typeck.c (build_external_ref): global variables
+	declared as 'byref' are enterred in their own list
+	of such declarations per each closure.
+	* c-parser.c (c_parser_postfix_expression): Remove previous fix.
+	(c_parser_closure_byref_declaration): Check for global
+	'byref' by calling in_closure_global_byref_list.
+
+2008-03-13  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5795493
+	* c-typeck.c: Renamed typesAreClosureCompatible to
+	types_are_closure_compatible.
+
+2008-03-11  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5732232 (Related to change of command option/macro)
+	* c-cppbuiltin.c: __CLOSURES__ macro rename __BLOCKS__
+	* c.opt: -fclosures change to -fblocks.
+
+2008-03-10  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5782740 - part 2 (bug fix).
+	* c-parser.c (synth_copy_helper_closure,
+	synth_destroy_helper_closure): set DECL_ARG_TYPE field of input
+	arguments for the two synthesized helper functions.
+
+2008-02-21  Caroline Tice  <ctice@apple.com>
+
+	Radar 5741070
+	* objc/objc-act.c (objc_finish_message_expr):  Find
+	the record-type tree from the class interface, and mark the record
+	type as used, for emitting debug info.
+	* cp/cp-objcp-common.c (c_return_interface_record_type):  New function.
+	* cp/cp-tree.h (c_return_interface_record_type): New extern function
+	declaration.
+	* c-tree.h (c_return_interface_record_type): Likewise
+	* c-decl.c (c_return_interface_record_type): New function.
+
+2007-08-22  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4947311
+	* c-common.h (objc_declare_protocols, objc_start_protocol): Decl changed.
+	* stub-objc.c (objc_declare_protocols, objc_start_protocol): Changed.
+	* c-parser.c (c_parser_external_declaration): Call to
+	c_parser_objc_protocol_definition takes additional argument.
+	(c_parser_declaration_or_fndef): Protocols with attributes are processed
+	here by passing it to c_parser_objc_protocol_definition.
+	(c_parser_objc_protocol_definition): Takes additional argument and passes
+	it to objc_declare_protocols or objc_start_protocol.
+
+2007-07-13  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5277239
+	* c-parser.c (c_parser_next_token_starts_declspecs): Exclude
+	objc2's property dot-syntax as a declarator.
+	(c_parser_postfix_expression): Convert property dot-syntax on
+	class objects into a property reference expression.
+
+2007-07-10  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5285911
+	* tree.h (CALL_EXPR_OBJC_PROPERTY_GETTER): Macro removed.
+	* c-typeck.c (build_component_ref): Call
+	objc_build_property_reference_expr instead of objc_build_getter_call.
+	(build_modify_expr): Call objc_property_reference_expr instead of
+	objc_property_call.
+	* c-common.h (objc_build_getter_call, objc_property_call): Decl removed.
+	(objc_build_property_reference_expr, objc_property_reference_expr): Decl.
+	added.
+	* stub-objc.c (objc_build_getter_call, objc_property_call): Stub removed.
+	(objc_build_property_reference_expr, objc_property_reference_expr):
+	Stub added.
+
+2007-06-29  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5276085
+	* c-parser.c (c_parser_binary_expression) : objc_generate_weak_read
+	replaced with call to objc_build_weak_reference_tree
+	* c-typeck.c (build_modify_expr, c_objc_common_truthvalue_conversion):
+	objc_remove_weak_read replaced with call to objc_weak_reference_expr.
+	* c-common.h (objc_weak_reference_expr,
+	objc_build_weak_reference_tree) : New decl.
+	(objc_generate_weak_read, objc_remove_weak_read): remove.
+	* stub-objc.c (objc_weak_reference_expr,
+	objc_build_weak_reference_tree): New stub.
+	(objc_generate_weak_read, objc_remove_weak_read): remove.
+
+2007-05-23 Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5195402
+	* c-format.c (handle_format_arg_attribute): Check for NSString *
+	and CFStringRef as valid formatting types.
+	(check_format_string): Ditto.
+	* c-common.h (objc_check_format_nsstring,
+	objc_check_cfstringref_type): New decls.
+	* stub-objc.c (objc_check_nsstring_pointer_type): New stub.
+	* config/darwin-c.c (objc_check_cfstringref_type): New
+	(objc_check_format_cfstring): Call objc_check_cfstringref_type
+	for valid CFStringRef argument type.
+	* config/darwin-protos.h (objc_check_cfstringref_type): New decl.
+	* config/darwin.h (CFSTRING_TYPE_CHECK): New macro.
+
+2007-05-18  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 5202926
+	* c-common.h (objc_anonymous_local_objc_name): New decl.
+	* config/darwin-protos.h (objc_anonymous_local_objc_name): Decl.
+	* stub-objc.c (objc_anonymous_local_objc_name): New stub.
+	* config/darwin.h (ASM_OUTPUT_LABELREF) Call
+	objc_anonymous_local_objc_name.
+
+2007-05-07  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4157812
+	* c-common.h (objc_build_keyword_decl): Takes a new argument.
+	* stub-objc.c (objc_build_keyword_decl): Ditto.
+	* c-parser.c (c_parser_objc_method_decl): Recognize optional
+	method's argument attribute.
+	(c_parser_objc_method_decl): Handle errornous selector.
+
+2007-05-02  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4502186
+	* c-typeck.c (convert_for_assignment): Remove synthesized 'volatile'
+	type before doing type comparison.
+
+2007-03-29 Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4564694
+	* c-parse.c (c_parser_objc_class_instance_variables): Add @package
+	support to syntax.
+	* c-common.h (RID_AT_PACKAGE): Add
+
+2007-03-29  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4947014 - objc atomic property
+	* c-common.h (RID_NONATOMIC): Add
+	* c-parse.c (c_parser_objc_property_attribute) : Recognize 'nonatomic'
+	as new property.
+
+2007-03-23  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4985544
+	* c-format.c (enum format_type): New entry for NSString format.
+	(format_typ): Has a new entry for NSString format.
+	(decode_format_attr): Error on use of NSString format on a
+	non-objective-c program.
+	(objc_check_nsformat_arg): New.
+	(check_format_info): Call back for NSString is objc_check_nsformat_arg
+	(handle_format_attribute): Use objc_check_format_nsstring for
+	NSString format.
+	* c-common.h (objc_NSString_format): New decl.
+	(objc_check_format_nsstring): New decl.
+	* stub-objc.c  (objc_NSString_format, objc_check_format_nsstring): New
+	stubs.
+	* config/darwin-protos.h (darwin_cfstring_type_node): New decl.
+	* config/darwin.c (darwin_cfstring_type_node): New
+	* config/darwin.h (TARGET_CFSTRING_P): New macro
+
+2007-03-23  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4985544
+	* c-format.c (enum format_type): New entry for NSString format.
+	(format_typ): Has a new entry for NSString format.
+	(decode_format_attr): Error on use of NSString format on a
+	non-objective-c program.
+	(objc_check_nsformat_arg): New.
+	(check_format_info): Call back for NSString is objc_check_nsformat_arg
+	(handle_format_attribute): Use objc_check_format_nsstring for
+	NSString format.
+	* c-common.h (objc_NSString_format): New decl.
+	(objc_check_format_nsstring): New decl.
+	* stub-objc.c  (objc_NSString_format, objc_check_format_nsstring): New
+	stubs.
+	* config/darwin-protos.h (darwin_cfstring_type_node): New decl.
+	* config/darwin.c (darwin_cfstring_type_node): New
+	* config/darwin.h (TARGET_CFSTRING_P): New macro
+
+2007-03-22  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4965989
+	* c-parser.c (c_parser_objc_class_definition): Add supprt for anonymous
+	category syntax.
+
+2007-03-21  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 2848255
+	* c-parser.c (c_parser_objc_try_catch_statement): Parse @catch(...).
+	* c.opt: Add -fobjc-zerocost-exceptions option.
+	* c-opts.c (c_common_post_options): Set the flags for
+	-fobjc-zerocost-exceptions.
+	* c-common.h: Add some declarations.
+	* stub-objc.c (objc2_valid_objc_catch_type, objc2_build_throw_call):
+	New stubs.
+	* config/darwin.h (OBJC_FLAG_OBJC_ABI): Check for proper
+	use of -fobjc-zerocost-exceptions option.
+
+2006-11-06  Fariborz Jahanian <fjahania@apple.com>
+
+	Radar 4781080 (part 2)
+	* targhooks.c (default_objc_fpreturn_msgcall): Takes 2nd argument.
+	* targhooks.h (default_objc_fpreturn_msgcall): Changed Decl.
+	* target.h (objc_fpreturn_msgcall): Changed Decl.
+	* config/i386/i386.h (OBJC_FPRETURN_MSGCALL): Changed Decl.
+	* config/i386/i386-protos.h (ix86_objc_fpreturn_msgcall): Changed Decl.
+	* config/i386/i386.c (ix86_objc_fpreturn_msgcall): Changed definition.
+2006-09-15  Fariborz Jahanian <fjahania@apple.com>
+
+	Radar 4727659
+	* c-common.c (handle_noreturn_attribute): Handle method_decl
+	nodes as well.
+
+2006-09-01  Fariborz Jahanian <fjahania@apple.com>
+
+	Radar 4712269
+	* c-common.h (objc_build_incr_decr_setter_call): New decl.
+	* stub-objc.c (objc_build_incr_decr_setter_call): New stub.
+	* c-typeck.c (build_unary_op): Call objc_build_incr_decr_setter_call
+	for potential ince/decr pre/post expressions involving properties.
+
+2006-08-31  Fariborz Jahanian  <fjahanian@apple.com>
+
+	Radar 4697411
+	* c-common.h (objc_volatilize_component_ref): New decl.
+	* c-typeck.c (build_component_ref): Call objc_volatilize_component_ref.
+	* stub-objc.c (objc_volatilize_component_ref): New stub.
+
+2006-07-18  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4592503
+	* c-decl.c (finish_struct): Check on illegal use of __weak
+	on struct fields.
+	* decl.c (start_decl): Check on illegal use of __weak on
+	variable declarations.
+	* stub-objc.c (objc_checkon_weak_attribute): New stub.
+	* c-common.h (objc_checkon_weak_attribute): New decl.
+
+2006-06-26  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4591909
+	* c-parse.in: New/modified grammar for new attributes in
+	  properties.
+	(yylexname): Change to recognize new attribute terminals.
+	* c-common.h (RID_DYNAMIC): New enum declaration.
+
+2006-07-14  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4621020
+	* c-parse.in: Added 'weak' attribute keyword for @property.
+	* c-common.h: 'weak' related declarations.
+
+2006-05-18 Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4548636 (objc attributes on class)
+	* c-parse.in: Add attribute non-terminal before
+	AT_INTERFACE.
+	* c-common.h (objc_start_class_interface): New argument added.
+	* stub-objc.c (objc_start_class_interface): Ditto.
+
+2006-05-16 Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4547045
+	* c-gimplify.c (obj_reuse_bc_block): Removed.
+	(objc_pop_label, objc_push_label): New.
+	(gimplify_c_loop): Fix up foreach's innerloop break label.
+
+2006-04-26 Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 3803157 (method attributes)
+	* c-parse.in: Add grammar support for declaring
+	attribute for objc methods.
+	* c-common.c (handle_deprecated_attribute): Recognize
+	objc methods as valid declarations.
+	(handle_unavailable_attribute): Ditto.
+	* c-common.h: Bunch of new extern declarations.
+	* stub-objc.c (objc_add_method_declaration, objc_start_method_definition):
+	Added new argument.
+	(objc_method_decl): New stub.
+
+2006-04-12 Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4507230
+	* c-common.h (objc_type_valid_for_messaging): Declare.
+	* stub-objc.c (objc_type_valid_for_messaging): New stub.
+
+2006-04-06 Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4436866
+	(Missing copies attribute)
+	* c-parse.in: Add grammer for 'copies' attribute.
+	* c-common.h (RID_COPIES): New enumerator.
+
+2006-03-27 Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4133425
+	* c-common.h (objc_diagnose_private_ivar): New decl.
+	* stub-objc.c (objc_diagnose_private_ivar): New stub.
+	* c-decl.c (undeclared_variable): Issue disnostic on
+	private 'ivar' access.
+
+2006-03-27 Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4491608
+	* c-typeck.c (convert_arguments): function name must come from 'selector'
+	when diagnosing 'too many arguments'.
+
+2006-03-23 Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4193359
+	* c-typeck.c (convert_for_assignment): Remove Objective-C EH machinery
+	'volatile' qualifier before doing type comparison.
+
+2006-02-28 Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4441049
+	* c-common.h (objc_v2_bitfield_ivar_bitpos): New decl.
+	* expr.h (objc_v2_bitfield_ivar_bitpos): New decl.
+	* stub-objc.c (objc_v2_bitfield_ivar_bitpos): New stub.
+	* expr.c (get_inner_reference): Compute ivar's bitfield bit offset.
+
+2006-02-15   Fariborz Jahanian <fjahanian@apple.com>
 
 	Radar 4445586
 	* c-common.def (DO_STMT): Takes an extra argument.
 
+2006-02-02   Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4426814
+	* c-parse.in (cast_expr): generate objc_read_weak call on
+	each __weak object in the expession.
+	* c-typeck.c (build_modify_expr): Undo the call to objc_read_weak
+	on LHS expression.
+	* c-objc-common.c (c_objc_common_truthvalue_conversion): Generate
+	objc_read_weak call before generating tree for !exp, etc.
+	* c-common.h (objc_generate_weak_read, objc_remove_weak_read): New decl.
+	* stub-objc.c (objc_generate_weak_read, objc_remove_weak_read): New stubs.
+
+2005-12-15  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4229905
+	* c-typeck.c (build_conditional_expr): Call objc_have_common_type when
+	looking for objective-c common pointer types.
+	* c-common.h objc_have_common_type): New declaration.
+	* stub-objc.c (objc_have_common_type): New stub.
+
+2005-12-05  Mike Stump  <mrs@apple.com>
+
+	Radar 4357979
+	* doc/invoke.texi (C Dialect Options): Improve -fnested-functions wording.
+	* doc/extend.texi (Nested Functions): Note that on darwin nested
+	functions are off by default.
+
+2005-11-08  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4330422
+
+	* c-common.h (objc_non_volatilized_type): New declaration
+	* stub-objc.c (objc_non_volatilized_type): New stub.
+
+2005-10-12  Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4291785
+
+	* c-common.h (objc_get_interface_ivars): New declaration
+	(objc_detect_field_duplicates): Ditto.
+	* c-decl.c (finish_struct): Check for duplicate among
+	flattened fields if objective-c.
+	* stub-objc.c (objc_get_interface_ivars): New stub.
+	(objc_detect_field_duplicates): Ditto.
+
+2005-09-28  Devang Patel  <dpatel@apple.com>
+
+	Radar 4258406
+	* c-parse.in (nested_function): Report an error, instead of a warning.
+	(nontype_nested_function): Same.
+	* c.opt (Wnested-funcs): Remove.
+	* doc/invoke.texi: Remove Wnested-funcs documentations.
+
+2005-08-03 Fariborz Jahanian <fjahanian@apple.com>
+
+	Radar 4188876
+	* c-typeck.c (pop_init_level): Issue diagnostic on non-constant
+	vector initializers.
+
+2005-06-22  Ziemowit Laski  <zlaski@apple.com>
+
+	Radar 4154928
+	* c-common.h (objc_common_type): New prototype.
+	* c-typeck.c (build_conditional_expr): For two ObjC pointer types,
+	use their ObjC common type.
+	* stub-objc.c (objc_common_type): New stub.
+
 /* APPLE LOCAL merge marger */
 /* Stuff under is in fsf mainline, but not in the 4.2 branch */
 

Modified: stable/10/contrib/gcc/attribs.c
==============================================================================
--- stable/10/contrib/gcc/attribs.c	Sun Jan 26 12:45:55 2014	(r261187)
+++ stable/10/contrib/gcc/attribs.c	Sun Jan 26 19:49:54 2014	(r261188)
@@ -216,7 +216,8 @@ decl_attributes (tree *node, tree attrib
       if (spec->function_type_required && TREE_CODE (*anode) != FUNCTION_TYPE
 	  && TREE_CODE (*anode) != METHOD_TYPE)
 	{
-	  if (TREE_CODE (*anode) == POINTER_TYPE
+	  /* APPLE LOCAL radar 6246527 */
+	  if ((TREE_CODE (*anode) == POINTER_TYPE || TREE_CODE (*anode) == BLOCK_POINTER_TYPE)
 	      && (TREE_CODE (TREE_TYPE (*anode)) == FUNCTION_TYPE
 		  || TREE_CODE (TREE_TYPE (*anode)) == METHOD_TYPE))
 	    {
@@ -323,6 +324,14 @@ decl_attributes (tree *node, tree attrib
 
       if (fn_ptr_tmp)
 	{
+	   /* APPLE LOCAL begin radar 6246527 */
+	   if (DECL_P (*node) && TREE_TYPE (*node) && 
+	       TREE_CODE (TREE_TYPE (*node)) == BLOCK_POINTER_TYPE)
+	     /* Rebuild the block pointer type and put it in the
+	        appropriate place.  */
+	     fn_ptr_tmp = build_block_pointer_type (fn_ptr_tmp);
+	   else
+	   /* APPLE LOCAL end radar 6246527 */
 	  /* Rebuild the function pointer type and put it in the
 	     appropriate place.  */
 	  fn_ptr_tmp = build_pointer_type (fn_ptr_tmp);

Modified: stable/10/contrib/gcc/c-common.c
==============================================================================
--- stable/10/contrib/gcc/c-common.c	Sun Jan 26 12:45:55 2014	(r261187)
+++ stable/10/contrib/gcc/c-common.c	Sun Jan 26 19:49:54 2014	(r261188)
@@ -552,6 +552,8 @@ static tree handle_cleanup_attribute (tr
 static tree handle_warn_unused_result_attribute (tree *, tree, tree, int,
 						 bool *);
 static tree handle_sentinel_attribute (tree *, tree, tree, int, bool *);
+/* APPLE LOCAL radar 5932809 - copyable byref blocks */
+static tree handle_blocks_attribute (tree *, tree, tree, int, bool *);
 
 static void check_function_nonnull (tree, tree);
 static void check_nonnull_arg (void *, tree, unsigned HOST_WIDE_INT);
@@ -607,7 +609,8 @@ const struct attribute_spec c_common_att
 			      handle_section_attribute },
   { "aligned",                0, 1, false, false, false,
 			      handle_aligned_attribute },
-  { "weak",                   0, 0, true,  false, false,
+  /* APPLE LOCAL weak types 5954418 */
+  { "weak",                   0, 0, false, false, false,
 			      handle_weak_attribute },
   { "alias",                  1, 1, true,  false, false,
 			      handle_alias_attribute },
@@ -650,6 +653,8 @@ const struct attribute_spec c_common_att
 			      handle_warn_unused_result_attribute },
   { "sentinel",               0, 1, false, true, true,
 			      handle_sentinel_attribute },
+  /* APPLE LOCAL radar 5932809 - copyable byref blocks */
+  { "blocks", 1, 1, true, false, false, handle_blocks_attribute },
   { NULL,                     0, 0, false, false, false, NULL }
 };
 
@@ -4259,7 +4264,10 @@ handle_noreturn_attribute (tree *node, t
   tree type = TREE_TYPE (*node);
 
   /* See FIXME comment in c_common_attribute_table.  */
-  if (TREE_CODE (*node) == FUNCTION_DECL)
+  /* APPLE LOCAL begin radar 4727659 */
+  if (TREE_CODE (*node) == FUNCTION_DECL
+      || objc_method_decl (TREE_CODE (*node)))
+  /* APPLE LOCAL end radar 4727659 */
     TREE_THIS_VOLATILE (*node) = 1;
   else if (TREE_CODE (type) == POINTER_TYPE
 	   && TREE_CODE (TREE_TYPE (type)) == FUNCTION_TYPE)
@@ -4267,6 +4275,14 @@ handle_noreturn_attribute (tree *node, t
       = build_pointer_type
 	(build_type_variant (TREE_TYPE (type),
 			     TYPE_READONLY (TREE_TYPE (type)), 1));
+  /* APPLE LOCAL begin radar 6237713 */
+  else if (TREE_CODE (type) == BLOCK_POINTER_TYPE
+	   && TREE_CODE (TREE_TYPE (type)) == FUNCTION_TYPE)
+    TREE_TYPE (*node)
+      = build_block_pointer_type
+	(build_type_variant (TREE_TYPE (type),
+			     TYPE_READONLY (TREE_TYPE (type)), 1));
+  /* APPLE LOCAL end radar 6237713 */
   else
     {
       warning (OPT_Wattributes, "%qE attribute ignored", name);
@@ -4893,6 +4909,23 @@ handle_weak_attribute (tree *node, tree 
   if (TREE_CODE (*node) == FUNCTION_DECL
       || TREE_CODE (*node) == VAR_DECL)
     declare_weak (*node);

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201401261949.s0QJnsHg000650>