freebsd-dev/contrib/gcc/ChangeLog.apple
Pedro F. Giffuni 5bfc7db451 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 that __block
is not actually a keyword, but a macro. There will be workaround
for this issue in a near 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.

Reference:
[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
MFC after:	3 weeks
2014-01-05 00:43:28 +00:00

952 lines
34 KiB
Plaintext

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 */
2007-08-02 Geoffrey Keating <geoffk@apple.com>
Radar 3274130, 5295549
* c-parser.c (c_parser_while_statement): Handle attributes.
(c_parser_do_statement): Handle attributes.
(c_parser_for_statement): Handle attributes.
* c-common.c (handle_unused_attribute): Warn if a statement
is marked as unused.
* c-tree.h (c_finish_loop): Add extra parameter.
* c-typeck.c (c_finish_loop): Handle attributes.
* doc/extend.texi (Attribute Syntax): Document statement attributes.
(Label Attributes): Explain how they apply to statements.
* tree-cfg.c (cleanup_dead_labels): Preserve labels with
user-specified alignment or attributes.
* stmt.c (expand_label): Update and correct documentation.
* c-common.c (handle_aligned_attribute): Handle LABEL_DECL.
* rtl.def (CODE_LABEL): Add 8th operand.
* rtl.h (LABEL_ALIGN_LOG): New.
(LABEL_MAX_SKIP): New.
(SET_LABEL_ALIGN): New.
* emit-rtl.c (gen_label_rtx): Adjust.
* print-rtl.c (print_rtx): Print LABEL_ALIGN_LOG.
* stmt.c (label_rtx): Set CODE_LABEL's alignment from DECL_ALIGN.
(expand_label): Update documentation.
* final.c (struct label_alignment): Delete.
(label_align): Delete.
(min_labelno): Delete.
(max_labelno): Delete.
(LABEL_TO_ALIGNMENT): Delete.
(LABEL_TO_MAX_SKIP): Delete.
(label_to_alignment): Adjust for LABEL_ALIGN_LOG.
(align_fuzz): Likewise.
(compute_alignments): Likewise.
(shorten_branches): Remove code to set up label_align.
Adjust for LABEL_ALIGN_LOG.
(final_scan_insn): Adjust for LABEL_ALIGN_LOG.
* doc/extend.texi (C Extensions): Add 'Label Attributes' to menu.
(Attribute Syntax): Move label content to Label Attributes.
(Function Attributes): Mention label attributes.
(Variable Attributes): Mention label attributes.
(Type Attributes): Mention label attributes.
(Label Attributes): New.