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-13 Fariborz Jahanian <fjahanian@apple.com> 306260311Spfg 307260311Spfg Radar 5277239 308260311Spfg * parser.c (cp_parser_objc_reference_expression): New routine to 309260311Spfg build a property reference expression. 310260311Spfg (cp_objc_property_reference_prefix): New routine to recognize a 311260311Spfg property dot syntax. 312260311Spfg (cp_parser_primary_expression): Build a property reference expression 313260311Spfg when a property dot-syntax is recognized. 314260311Spfg (cp_parser_type_name): Exclude property dot-syntax from being recognized 315260311Spfg as a type name. 316260311Spfg (cp_parser_class_name): Exclude property dot-syntax from being recognized 317260311Spfg as a class name. 318260311Spfg 319260311Spfg2007-07-10 Fariborz Jahanian <fjahanian@apple.com> 320260311Spfg 321260311Spfg Radar 5285911 322260311Spfg * typeck.c (finish_class_member_access_expr): Call 323260311Spfg objc_build_property_reference_expr instead of objc_build_getter_call. 324260311Spfg 325260311Spfg2007-06-29 Fariborz Jahanian <fjahanian@apple.com> 326260311Spfg 327260311Spfg Radar 5276085 328260311Spfg * typeck.c (build_modify_expr): Call objc_weak_reference_expr 329260311Spfg instead of objc_remove_weak_read. 330260311Spfg * parser.c (cp_parser_cast_expression): Call 331260311Spfg objc_build_weak_reference_tree instead of objc_generate_weak_read. 332260311Spfg (cp_parser_cast_expression): Ditto. 333260311Spfg 334260311Spfg2007-05-18 Fariborz Jahanian <fjahanian@apple.com> 335260311Spfg 336260311Spfg Radar 5202926 337260311Spfg * mangle.c (write_mangled_name): Removed suppression in last patch. 338260311Spfg 339260311Spfg2007-04-20 Fariborz Jahanian <fjahanian@apple.com> 340260311Spfg 341260311Spfg Radar 5130983 342260311Spfg * c-common.h (enum lvalue_use): New enumerator lv_foreach 343260311Spfg added. 344260311Spfg * c-common.c (lvalue_error): Diagnose on lv_foreach. 345260311Spfg 346260311Spfg2007-04-20 Fariborz Jahanian <fjahanian@apple.com> 347260311Spfg 348260311Spfg Radar 5130983 349260311Spfg * parser.c (cp_parser_parse_foreach_stmt): Parse selector expression 350260311Spfg as an expression. 351260311Spfg (objc_foreach_stmt): Issue diagnostic on non-lavlue selector 352260311Spfg expression. 353260311Spfg 354260311Spfg2007-03-29 Fariborz Jahanian <fjahanian@apple.com> 355260311Spfg 356260311Spfg Radar 4947014 - objc atomic property 357260311Spfg * lex.c (RID_NONATOMIC): Add 358260311Spfg * parser.c (objc_cp_parser_at_property): Recognize 'nonatomic' as 359260311Spfg new property attribute. 360260311Spfg 361260311Spfg2007-03-29 Fariborz Jahanian <fjahanian@apple.com> 362260311Spfg 363260311Spfg Radar 4564694 364260311Spfg * lex.c (RID_AT_PACKAGE): Add 365260311Spfg * parser.c (cp_lexer_get_preprocessor_token): Parse @package. 366260311Spfg 367260311Spfg2006-12-14 Fariborz Jahanian <fjahania@apple.com> 368260311Spfg 369260311Spfg Radar 4854605 370260311Spfg * parser.c (objc_foreach_stmt): Set iterator 371260311Spfg to nil. 372260311Spfg 373260311Spfg2006-09-01 Fariborz Jahanian <fjahania@apple.com> 374260311Spfg 375260311Spfg Radar 4712269 376260311Spfg * typeck.c (build_unary_op): Call objc_build_incr_decr_setter_call 377260311Spfg for potential ince/decr pre/post expressions involving properties. 378260311Spfg 379260311Spfg2006-07-21 Fariborz Jahanian <fjahanian@apple.com> 380260311Spfg 381260311Spfg Radar 4631818 382260311Spfg * parser.c (cp_parser_parse_foreach_stmt): New. 383260311Spfg (cp_parser_iteration_statement): Remove old code. 384260311Spfg Replace it with call to cp_parser_parse_foreach_stmt. 385260311Spfg (cp_parser_simple_declaration): Remove old code. 386260311Spfg (cp_parser_init_declarator): Remove old code. 387260311Spfg 388260311Spfg2006-08-31 Fariborz Jahanian <fjahanian@apple.com> 389260311Spfg 390260311Spfg Radar 4697411 391260311Spfg * typeck.c (build_class_member_access_expr): Call 392260311Spfg objc_volatilize_component_ref. 393260311Spfg 394260311Spfg2006-07-18 Fariborz Jahanian <fjahanian@apple.com> 395260311Spfg 396260311Spfg Radar 4592503 397260311Spfg * class.c (layout_class_type): Check on illegal use of __weak 398260311Spfg on struct fields. 399260311Spfg * decl.c (start_decl): Check on illegal use of __weak on 400260311Spfg variable declarations. 401260311Spfg 402260311Spfg2006-07-14 Fariborz Jahanian <fjahanian@apple.com> 403260311Spfg 404260311Spfg Radar 4621020 405260311Spfg * lex.c (reswords): Added entry for 'weak' attribute keyword. 406260311Spfg * parser.c (objc_cp_parser_at_property): Recorgnize 'weak'attribute. 407260311Spfg 408260311Spfg2006-06-26 Fariborz Jahanian <fjahanian@apple.com> 409260311Spfg 410260311Spfg Radar 4591909 411260311Spfg * lex.c (reswords): New entry for 'dynamic' attribute. 412260311Spfg * parser.c (objc_cp_parser_at_property): Change to parse new 413260311Spfg attribute syntax. 414260311Spfg 415260311Spfg2006-05-18 Fariborz Jahanian <fjahanian@apple.com> 416260311Spfg 417260311Spfg Radar 4548636 (objc attributes on class) 418260311Spfg * parser.c (objc_attr_follwed_by_at_keyword): New routine to disambiguate 419260311Spfg attribute before a type and attribute before an @interface declaration.. 420260311Spfg (cp_parser_declaration): Handle case of attribute list which can be 421260311Spfg followed by an @interface. 422260311Spfg (cp_parser_objc_class_interface): Parse possible attribute list before 423260311Spfg parsing @interface. 424260311Spfg (cp_parser_objc_declaration): Recognize 'attribute' as a valid token which 425260311Spfg can start an @interface declaration. 426260311Spfg 427260311Spfg2006-05-16 Fariborz Jahanian <fjahanian@apple.com> 428260311Spfg 429260311Spfg Radar 4547045 430260311Spfg * parser.c (objc_foreach_stmt): Fix a thinko. 431260311Spfg 432260311Spfg2006-04-12 Fariborz Jahanian <fjahanian@apple.com> 433260311Spfg 434260311Spfg Radar 4507230 435260311Spfg * parser.c (objc_foreach_stmt): Check for valid objc 436260311Spfg objects in foreach header. 437260311Spfg 438260311Spfg2006-04-06 Fariborz Jahanian <fjahanian@apple.com> 439260311Spfg 440260311Spfg Radar 4436866 441260311Spfg (Missing copies attribute) 442260311Spfg * lex.c (reswords): New keyword 'copies' added. 443260311Spfg * parser.c (objc_cp_parser_at_property): Parse 'copies' 444260311Spfg attribute. 445260311Spfg 446260014Spfg2006-02-15 Fariborz Jahanian <fjahanian@apple.com> 447260014Spfg 448260014Spfg Radar 4445586 449260014Spfg * semantics.c (begin_do_stmt): DO_STMT nodes take an 450260014Spfg extra argument to build. 451260014Spfg 452260311Spfg2005-11-08 Fariborz Jahanian <fjahanian@apple.com> 453260311Spfg 454260311Spfg Radar 4330422 455260311Spfg 456260311Spfg * typeck.c (comp_ptr_ttypes_real): Remove the hack. un-volatize the 457260311Spfg artificially 'volatized' type before doing pointer comparison. 458260311Spfg 459260311Spfg2005-08-15 Ziemowit Laski <zlaski@apple.com> 460260311Spfg 461260311Spfg Radar 4093475 462260311Spfg * parser.c (cp_parser_objc_interstitial_code): Catch stray 463260311Spfg '{' and '}' tokens and issue appropriate errors. 464260311Spfg (cp_parser_objc_method_prototype_list, 465260311Spfg cp_parser_objc_method_definition_list): Bail out if end-of-file 466260311Spfg is seen; issue error if trailing '@end' is not seen. 467260311Spfg 468260311Spfg2008-08-06 Fariborz Jahanian <fjahanian@apple.com> 469260311Spfg 470260311Spfg Radar 6040305 - work in progress. 471260311Spfg * parser.c (clean_and_exit): Clean up if inside 472260311Spfg a function. 473260311Spfg (cp_parser_block_literal_expr): Set DECL_NO_STATIC_CHAIN 474260311Spfg if inside a function. 475260311Spfg 476260311Spfg2008-08-05 Fariborz Jahanian <fjahanian@apple.com> 477260311Spfg 478260311Spfg Radar 6040305 - work in progress. 479260311Spfg * decl.c (init_byref_decl): Generate c-style helper 480260311Spfg functions for compose/dispose helpers. 481260311Spfg 482260311Spfg2008-08-04 Fariborz Jahanian <fjahanian@apple.com> 483260311Spfg 484260311Spfg Radar 6040305 - work in progress. 485260311Spfg * decl.c (synth_block_byref_id_object_copy_func, 486260311Spfg synth_block_byref_id_object_dispose_func, 487260311Spfg block_start_struct, block_finish_struct, 488260311Spfg new_block_byref_decl, init_byref_decl): New routines. 489260311Spfg (cp_finish_decl): Build the APIed version of 490260311Spfg a __byref local vriable. 491260311Spfg * semantics.c (finish_id_expression): Add a __byref 492260311Spfg variable to the list of such variables for current 493260311Spfg block. 494260311Spfg * parser.c (build_component_ref): Fix to make it work. 495260311Spfg (cp_parser_block_literal_expr): Push/pop language-c, 496260311Spfg set context of the helper function. 497260311Spfg (declare_block_prologue_local_vars): Mend tree for 498260311Spfg the built-in local variables in the helper prologue. 499260311Spfg 500260311Spfg2008-07-30 Fariborz Jahanian <fjahanian@apple.com> 501260311Spfg 502260311Spfg Radar 6040305 503260311Spfg * call.c (standard_conversion): Allow conversion of 'id' 504260311Spfg type to a block pointer. 505260311Spfg 506260311Spfg2008-07-30 Fariborz Jahanian <fjahanian@apple.com> 507260311Spfg 508260311Spfg Radar 6040305 509260311Spfg * typeck.c (build_block_call): New 510260311Spfg (build_function_call): Call build_block_call 511260311Spfg for block calls. 512260311Spfg * call.c (standard_conversion): Remove "void *" to 513260311Spfg block pointer conversion. 514260311Spfg 515260311Spfg2008-07-29 Fariborz Jahanian <fjahanian@apple.com> 516260311Spfg 517260311Spfg Radar 6040305 518260311Spfg * call.c (standard_conversion): Allow assignment of 519260311Spfg "void *" to block pointer object. 520260311Spfg 521260311Spfg2008-07-28 Fariborz Jahanian <fjahanian@apple.com> 522260311Spfg 523260311Spfg Radar 6040305 524260311Spfg * typeck.c (comptypes): block-pointer types' 525260311Spfg return type get special treatment. 526260311Spfg 527260311Spfg2008-07-16 Eugene Marinelli <marinelli@apple.com> 528260311Spfg 529260311Spfg Radar 5559195 530260311Spfg * decl.c (cxx_maybe_build_cleanup): When considering whether to 531260311Spfg build a cleanup for a class type, use 532260311Spfg CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY and 533260311Spfg CLASSTYPE_DESTRUCTOR_NONTRIVIAL_BECAUSE_OF_BASE instead of 534260311Spfg TYPE_HAS_NONTRIVIAL_DESTRUCTOR to determine whether it must be 535260311Spfg output. 536260311Spfg 537260311Spfg2008-07-15 Eugene Marinelli <marinelli@apple.com> 538260311Spfg 539260311Spfg Radar 5559195 540260311Spfg * cp-tree.h (struct lang_type_class): Add destructor_triviality_final 541260311Spfg flag to mark when has_nontrivial_destructor_body and 542260311Spfg destructor_nontrivial_because_of_base are final. Add accessor for 543260311Spfg this flag. 544260311Spfg * parser.c (cp_parser_statement_seq_opt): Use 545260311Spfg CLASSTYPE_DESTRUCTOR_TRIVIALITY_FINAL to determine if 546260311Spfg destructor should be checked for being empty, and set it if 547260311Spfg CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY is changed. 548260311Spfg 549260311Spfg2008-07-10 Eugene Marinelli <marinelli@apple.com> 550260311Spfg 551260311Spfg Radar 5559195 552260311Spfg * init.c (push_base_cleanups): Check flags indicating whether 553260311Spfg destructor of base class has a nontrivial body, has a base destructor 554260311Spfg that must be called, or is private to determine whether it should be 555260311Spfg called by the derived class. Set 556260311Spfg CLASSTYPE_DESTRUCTOR_NONTRIVIAL_BECAUSE_OF_BASE to 1 if it has 557260311Spfg members that must be deleted. 558260311Spfg * class.c (check_bases, finish_struct_bits, 559260311Spfg add_implicitly_declared_members): Set 560260311Spfg CLASSTYPE_DESTRUCTOR_NONTRIVIAL_BECAUSE_OF_BASE and 561260311Spfg CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY based on base classes. 562260311Spfg (check_methods): Set CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY to 1 563260311Spfg whenever a user-declared destructor is seen as a conservative 564260311Spfg assumption. 565260311Spfg * cp-tree.h (struct lang_type_class): Add 566260311Spfg has_nontrivial_destructor_body and 567260311Spfg destructor_nontrivial_because_of_base flags. Decrement remaining 568260311Spfg dummy bits. Add accessors for these flags. 569260311Spfg * parser.c (cp_parser_statement_seq_opt): Unmark 570260311Spfg CLASSTYPE_HAS_NONTRIVIAL_DESTRUCTOR_BODY and then set it again only if 571260311Spfg a statement is parsed. 572260311Spfg 573260311Spfg2007-05-07 Fariborz Jahanian <fjahanian@apple.com> 574260311Spfg 575260311Spfg Radar 4157812 576260311Spfg * parser.c (cp_parser_objc_method_keyword_params): Recognize optional 577260311Spfg method argument attribute. 578260311Spfg 579260311Spfg2007-03-21 Fariborz Jahanian <fjahanian@apple.com> 580260311Spfg 581260311Spfg Radar 2848255 582260311Spfg * except.c (do_begin_catch): Take a new argument to decide 583260311Spfg to call objc_begin_catch for objc exceptions. 584260311Spfg (objcp_build_eh_type_type): New. 585260311Spfg (do_end_catch): Call objc_end_catch for objc type 586260311Spfg exceptions. 587260311Spfg (expand_start_catch_block): Add new argument to do_begin_catch call. 588260311Spfg (build_throw): Call objc_throw_exception for throwing objc type objects. 589260311Spfg * cp-tree.h (objc2_valid_objc_catch_type, objcp_build_eh_type_type): 590260311Spfg New extern decl. 591260311Spfg * parser.c (cp_parser_objc_try_catch_finally_stateme): Add syntax for 592260311Spfg @catch(...). 593260311Spfg 594260311Spfg2006-04-26 Fariborz Jahanian <fjahanian@apple.com> 595260311Spfg 596260311Spfg Radar 3803157 (method attributes) 597260311Spfg * parser.c (cp_parser_objc_maybe_attributes): New. 598260311Spfg (cp_parser_objc_method_keyword_params): Parse attributes at end 599260311Spfg of method declaration. 600260311Spfg (cp_parser_objc_method_tail_params_opt): Parse attributes after 601260311Spfg '...'. 602260311Spfg (cp_parser_objc_method_signature): Retreive method attribute for 603260311Spfg the caller. 604260311Spfg (cp_parser_objc_method_prototype_list): Pass new arg. to 605260311Spfg cp_parser_objc_method_signature and pass attributes to 606260311Spfg objc_add_method_declaration. 607260311Spfg (cp_parser_objc_method_definition_list): Pass new arg. to 608260311Spfg cp_parser_objc_method_signature and pass attributes to 609260311Spfg objc_start_method_definition. 610260311Spfg 611260311Spfg2006-03-27 Fariborz Jahanian <fjahanian@apple.com> 612260311Spfg 613260311Spfg Radar 4133425 614260311Spfg * lex.c (unqualified_name_lookup_error): Issue diagnostic 615260311Spfg for private 'ivar' access. 616260311Spfg 617260311Spfg2006-02-02 Fariborz Jahanian <fjahanian@apple.com> 618260311Spfg 619260311Spfg Radar 4426814 620260311Spfg * typeck.c (build_modify_expr): Undo call to objc_read_weak 621260311Spfg on LHS of the assignment. 622260311Spfg * parser.c (cp_parser_cast_expression): Central place to add 623260311Spfg objc_read_weak call on expressions of __weak objects. 624260311Spfg 625260311Spfg2005-12-15 Fariborz Jahanian <fjahanian@apple.com> 626260311Spfg 627260311Spfg Radar 4229905 628260311Spfg * typeck.c (composite_pointer_type): Call objc_have_common_type 629260311Spfg when comparing two objective-c pointer types. 630260311Spfg 631260311Spfg2005-10-17 Fariborz Jahanian <fjahanian@apple.com> 632260311Spfg 633260311Spfg Radar 4290840 634260311Spfg 635260311Spfg * parser.c (cp_parser_objc_method_keyword_params): Check for valid 636260311Spfg method parameters and issue error. 637260311Spfg (cp_parser_objc_method_definition_list): Check for invalid tokens 638260311Spfg which cannot start a function definition. 639260311Spfg 640260311Spfg2005-08-02 Ziemowit Laski <zlaski@apple.com> 641260311Spfg 642260311Spfg Radar 4185810 643260311Spfg * parser.c (cp_parser_compound_statement): Continue 644260311Spfg parsing even if the initial '{' is missing; an error 645260311Spfg message is already being produced. 646260311Spfg (cp_parser_statement_seq_opt): In addition to '}' and 647260311Spfg end-of-file, a statement sequence may also be terminated 648260311Spfg by a stray 'else' or '@end'. 649260311Spfg 650260014Spfg # APPLE LOCAL begin for-fsf-4_4 3274130 5295549 651260014Spfg2007-08-03 Geoffrey Keating <geoffk@apple.com> 652260014Spfg 653260014Spfg Radar 5295549 654260014Spfg * parser.c (cp_parser_iteration_statement): Handle attributes. 655260014Spfg * semantics.c (begin_for_stmt): Put attributes in built tree. 656260014Spfg (begin_while_stmt): Put attributes in built tree. 657260014Spfg (begin_do_stmt): Put attributes in built tree. 658260014Spfg * pt.c (tsubst_expr): Handle attributes for FOR_STMT, WHILE_STMT, 659260014Spfg DO_STMT. 660260014Spfg * cp-gimplify.c (gimplify_cp_loop): Handle attributes. 661260014Spfg (gimplify_for_stmt): Pass attributes to gimplify_cp_loop. 662260014Spfg (gimplify_while_stmt): Pass attributes to gimplify_cp_loop. 663260014Spfg (gimplify_do_stmt): Pass attributes to gimplify_cp_loop. 664260014Spfg * dump.c (cp_dump_tree): Dump attributes for FOR_STMT, WHILE_STMT, 665260014Spfg DO_STMT. 666260014Spfg * cp-tree.h (begin_while_stmt): Update prototype. 667260014Spfg (begin_do_stmt): Likewise. 668260014Spfg (begin_for_stmt): Likewise. 669260014Spfg * cp-tree.def (FOR_STMT): Add extra parameter. 670260014Spfg (WHILE_STMT): Likewise. 671260014Spfg (DO_STMT): Likewise. 672260014Spfg * init.c (build_vec_init): Update for change to begin_for_stmt. 673260014Spfg 674260014Spfg # APPLE LOCAL end for-fsf-4_4 3274130 5295549 675