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