2007-11-29 Fariborz Jahanian Radar 5619052 * pt.c (value_dependent_expression_p): @encode expression is value-dependent if the operand is type-dependent. (type_dependent_expression_p): Treat @encode same as 'sizeof'. 2007-07-06 Josh Conner Radar 5310796 * typeck.c (build_reinterpret_cast_1): Only call strict_aliasing_warning for ARM. 2007-06-27 Josh Conner Radar 5241048 * typeck.c (build_ptrmemfunc1): Add kext support for ARM. 2007-06-27 Josh Conner Radar 5241048 * typeck.c (build_reinterpret_cast_1): Use strict_aliasing warning. * optimize.c (enum in_charge_use, struct thunk_tree_walk_data, struct clone_info): New data types. (maybe_alias_body, maybe_thunk_body): Remove functions. (thunk_body, examine_tree_for_in_charge_use, compute_use_thunks, find_earlier_clone): New functions. (maybe_clone_body): Remove most of old decloner patch, replace with new algorithm. 2007-06-24 Fariborz Jahanian Radar 5276085 * typeck.c (build_modify_expr): Call objc_weak_reference_expr instead of objc_remove_weak_read. * parser.c (cp_parser_cast_expression): Call objc_build_weak_reference_tree instead of objc_generate_weak_read. (cp_parser_cast_expression): Ditto. 2007-06-01 Eric Christopher Radar 5198645 * typeck.c (build_binary_op): Use cp_convert_and_check. * decl.c (finish_enum): Use the location of the enumerators, not the closing brace of the enumeration, when reporting warnings about conversions. * call.c (convert_like_real): Use convs->kind to determine conversion type. Use cp_convert_and_check. (cp_convert_and_check): New. * cp-tree.h (cp_convert_and_check): Declare. 2007-05-16 Josh Conner Radar 5207358 Backport from mainline: 2005-06-10 Aldy Hernandez PR c++/10611 * cp/typeck.c (build_binary_op): Handle vectors. (common_type): Same. (type_after_usual_arithmetic_conversions): Same. * cp/cvt.c (build_expr_type_conversion): Same. 2007-04-20 Fariborz Jahanian Radar 5130983 * parser.c (cp_parser_parse_foreach_stmt): Parse selector expression as an expression. (objc_foreach_stmt): Issue diagnostic on non-lavlue selector expression. 2007-04-18 Fariborz Jahanian Radar 5128402 * parser.c (objc_finish_foreach_stmt): Set elem to nil at the else part of the outer if-stmt instead of at the begining. 2007-03-19 Fariborz Jahanian Radar 4947014 - objc atomic property * lex.c (RID_NONATOMIC): Add * parser.c (objc_cp_parser_at_property): Recognize 'nonatomic' as new property attribute. 2007-03-13 Fariborz Jahanian Radar 4564694 * lex.c (RID_AT_PACKAGE): Add * parser.c (cp_lexer_get_preprocessor_token): Parse @package. 2007-02-28 Geoffrey Keating Radar 5027856 * g++spec.c (lang_specific_driver): Merge from FSF mainline. 2007-02-15 Fariborz Jahanian Radar 4995967 * parser.c (cp_parser_objc_try_catch_finally_stateme): Parse @catch (...) unconditionally. 2007-02-12 Fariborz Jahanian Radar 4965989 * parser.c (cp_parser_objc_superclass_or_category): Add supprt for anonymous category syntax. (cp_parser_objc_superclass_or_category, cp_parser_objc_class_interface): Changed because of change to cp_parser_objc_superclass_or_category API. 2007-01-22 Fariborz Jahanian Radar 2848255 * except.c (do_begin_catch): Take a new argument to decide to call objc_begin_catch for objc exceptions. (objcp_build_eh_type_type): New. (do_end_catch): Call objc_end_catch for objc type exceptions. (expand_start_catch_block): Add new argument to do_begin_catch call. (build_throw): Call objc_throw_exception for throwing objc type objects. * cp-tree.h (objc2_valid_objc_catch_type, objcp_build_eh_type_type): New extern decl. * parser.c (cp_parser_objc_try_catch_finally_stateme): Add syntax for @catch(...). 2006-11-30 Fariborz Jahanian Radar 4854605 * parser.c (objc_foreach_stmt): Set iterator to nil. 2006-11-29 Fariborz Jahanian Radar 4712415 * parser.c (objc_cp_parse_property_decl): Parse attribute at end of property decl. 2006-11-14 Fariborz Jahanian Radar 4829851 * decl.c (duplicate_decls): Check for duplicate decl. of objective-c @class. 2006-11-01 Fariborz Jahanian Radar 4805321 (new property). * lex.c (reswords): New entries added for new property words. (init_reswords): For new property, use RID_AT_DYNAMIC instead of RID_DYNAMIC in old property. * parser.c (objc_cp_parse_property_decl): Attach storage attribute to property. (objc_cp_parser_property_impl): New. (objc_cp_parser_at_property): Handle new property attributes. (cp_parser_objc_method_definition_list): Recognize @synthesize and @dynamic directives. 2006-10-25 Fariborz Jahanian Radar 4795703 (also in gcc-4.2) * parser.c (cp_parser_functional_cast): Use 'type' correctly. 2006-10-10 Mike Stump Radar 4739936 * parser.c (cp_lexer_peek_token): Restore error for invalid integer suffixes. (cp_lexer_iasm_bol): Avoid cp_lexer_peek_token. (cp_parser_iasm_skip_to_eol): Likewise. 2006-09-18 Fariborz Jahanian Radar 4667060 * parser.c (objc_foreach_stmt): Save elem decl. in foreach node. 2006-09-11 Josh Conner Radar 4658012 Backport from mainline: 2006-09-06 Jason Merrill PR c++/27371 * cvt.c (convert_to_void): Strip useless TARGET_EXPR. * cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro. * tree.c (build_cplus_new): Set it. 2006-09-01 Fariborz Jahanian Radar 4712269 * 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 Radar 4697411 * typeck.c (build_class_member_access_expr): Call objc_volatilize_component_ref. 2006-08-30 Fariborz Jahanian Radar 4696522 * typeck.c (build_c_cast): Code for cast of objective-c pointer moved to: (build_static_cast_1). 2006-08-29 Fariborz Jahanian Radar 4705250 * parser.c (cp_parser_member_declaration) : No error on use of @defs with -fobjc-atdefs 2006-08-25 Josh Conner * call.c (build_over_call): Add APPLE LOCAL markers for previous patch. 2006-08-25 Josh Conner Radar 4658012 Backport from mainline: 2006-08-22 Jason Merrill PR c++/23372 * call.c (build_over_call): Don't make a copy here if build_call will make one too. 2006-08-15 Fariborz Jahanian Radar 4668465 * call.c (standard_conversion): In deciding on validity of "pointer to cv D" to "pointer to cv B", ignore the objective-c volatile type added to local object in presence of sjlj's EH implementation. 2006-08-14 Fariborz Jahanian Radar 4675792 * parser.c (objc_cp_parser_at_property): Accomodate when getter matches a c++ keyword. 2006-07-25 Fariborz Jahanian Radar 4652027 * parser.c (cp_parser_objc_class_ivars): Handle illegal declaration of typdef. 2006-07-26 Hui-May Chang Radar 4121962 * class.c (check_field_decls): Fix APPLE LOCAL markers. * class.c (finish_struct_bits): Fix APPLE LOCAL markers. 2006-07-25 Hui-May Chang Radar 4121962 * class.c (check_field_decls): Remove the extra argument in calling "warning". 2006-07-24 Hui-May Chang Radar 4121962 Backport from mainline: 2006-07-05 Jason Merrill * class.c (check_field_decls): Check TYPE_PACKED after stripping array types. (finish_struct_bits): Don't copy TYPE_SIZE here. 2006-07-21 Fariborz Jahanian Radar 4631818 * parser.c (cp_parser_parse_foreach_stmt): New. (cp_parser_iteration_statement): Remove old code. Replace it with call to cp_parser_parse_foreach_stmt. (cp_parser_simple_declaration): Remove old code. (cp_parser_init_declarator): Remove old code. 2006-07-18 Fariborz Jahanian Radar 4592503 * class.c (layout_class_type): Check on illegal use of __weak on struct fields. * decl.c (start_decl): Check on illegal use of __weak on variable declarations. 2006-07-14 Fariborz Jahanian Radar 4621020 * lex.c (reswords): Added entry for 'weak' attribute keyword. * parser.c (objc_cp_parser_at_property): Recorgnize 'weak'attribute. 2006-07-10 Fariborz Jahanian Radar 3904247 * g++spec.c (lang_specific_driver): Handle -x objective-c++ and -ObjC++ to invoke -cc1objplus. -x objective-c and -ObjC to invoke cc1obj. 2006-06-26 Fariborz Jahanian Radar 4591909 * lex.c (reswords): New entry for 'dynamic' attribute. * parser.c (objc_cp_parser_at_property): Change to parse new attribute syntax. 2006-06-20 Howard Hinnint Radar 4539933 * decl2.c (start_static_initialization_or_destruction): Create guard variables for explicitly instantiated templated static data members. 2006-06-13 Fariborz Jahanian Radar 4360010 * parser.c (cp_parser_objc_class_ivars): Issue diagnostic for 'static' ivar. 2006-06-01 Fariborz Jahanian Radar 4557092 * pt.c (tsubst_copy_and_build): Don't fold address of a const_decl for a cfstring. 2006-05-18 Fariborz Jahanian Radar 4548636 (objc attributes on class) * parser.c (objc_attr_follwed_by_at_keyword): New routine to disambiguate attribute before a type and attribute before an @interface declaration.. (cp_parser_declaration): Handle case of attribute list which can be followed by an @interface. (cp_parser_objc_class_interface): Parse possible attribute list before parsing @interface. (cp_parser_objc_declaration): Recognize 'attribute' as a valid token which can start an @interface declaration. 2006-05-16 Fariborz Jahanian Radar 4547045 * parser.c (objc_foreach_stmt): Fix a thinko. 2006-05-16 Devang Patel Radar 4546244 * parser.c (cp_lexer_consume_bincl_eincl_token): New. (cp_lexer_peek_token, cp_lexer_consume_token): Use cp_lexer_consume_bincl_eincl_token. 2006-04-10 Devang Patel Radar 4543648 * parser.c (cp_parser_enumerator_list, cp_parser_initializer_list); Remove redundant code. 2006-04-09 Devang Patel Radar 4531997 * parser.c (cp_lexer_handle_pragma_etc): Renamed as ... (cp_lexer_handle_pragma): ... new name. Do not handle CPP_BINCL or CPP_EINCL tokens. (cp_lexer_peek_token): Skip CPP_BINCL and CPP_EINCL tokens. (cp_lexer_peek_nth_token): Same. (cp_lexer_consume_token): Consume CPP_BINCL and CPP_EINCL tokens. (cp_parser_statement): Do not handle CPP_BINCL, CPP_EINCL tokens. (cp_parser_declaration_seq_opt, cp_parser_enumerator_list, cp_parser_initializer_clause, cp_parser_initializer_list, cp_parser_member_specification_opt, cp_parser_iasm_declaration_seq_opt, cp_parser_iasm_statement, cp_parser_objc_interstitial_code): Same. 2006-05-09 Fariborz Jahanian radar 4538105 * parser.c (objc_foreach_stmt): Mark element selector as being used. 2006-05-09 Fariborz Jahanian radar 4529200 * parser.c (cp_parser_init_declarator): Add '[' as another token that can follow 'in'. 2006-05-05 Fariborz Jahanian radar 4533974 - ObjC new protocol * parser.c (cp_parser_objc_class_implementation): Support for new '@implementation @end' syntax. 2006-04-26 Fariborz Jahanian Radar 3803157 (method attributes) * parser.c (cp_parser_objc_maybe_attributes): New. (cp_parser_objc_method_keyword_params): Parse attributes at end of method declaration. (cp_parser_objc_method_tail_params_opt): Parse attributes after '...'. (cp_parser_objc_method_signature): Retreive method attribute for the caller. (cp_parser_objc_method_prototype_list): Pass new arg. to cp_parser_objc_method_signature and pass attributes to objc_add_method_declaration. (cp_parser_objc_method_definition_list): Pass new arg. to cp_parser_objc_method_signature and pass attributes to objc_start_method_definition. 2006-04-19 Fariborz Jahanian Radar 4516785 * parser.c (cp_parser_simple_type_specifier): Don't lookup for objc object types if type is scope qualified. 2006-04-18 Devang Patel Radar 4517944 * parser.c (cp_parser_enumerator_list): Eat CPP_BINCL and CPP_EINCL tokens. 2006-04-13 Devang Patel Radar 4503682 * parser.c (cp_lexer_new_main): Eat CPP_BINCL, CPP_EINCL tokens. 2006-04-12 Fariborz Jahanian Radar 4507230 * parser.c (objc_foreach_stmt): Check for valid objc objects in foreach header. 2006-04-06 Fariborz Jahanian Radar 4436866 (Missing copies attribute) * lex.c (reswords): New keyword 'copies' added. * parser.c (objc_cp_parser_at_property): Parse 'copies' attribute. 2006-03-27 Fariborz Jahanian Radar 4133425 * lex.c (unqualified_name_lookup_error): Issue doagnostic for private 'ivar' access. 2006-03-24 Devang Patel Radar 4484026 * parser.c (cp_parser_enumerator_list): Eat CPP_BINCL and CPP_EINCL tokens. 2006-03-23 Devang Patel Radar 4488417 * parser.c (cp_parser_initializer_clause): Check CPP_BINCL/CPP_EINCL tokens before checking CPP_OPEN_BRACE. 2006-03-22 Fariborz Jahanian Radar 4436866 * typeck.c (finish_class_member_access_expr): Call objc_build_getter_call. (build_modify_expr): Call objc_build_setter_call. * lex.c: Add keyword @property and context sensitive lexical tokens for readonly, getter, setter, ivar attribute names. * parser.c (objc_cp_parse_property_decl): New. (objc_cp_parser_at_property): New. (cp_parser_objc_method_prototype_list): Process @property keyword. (cp_parser_objc_method_definition_list): Ditto. 2006-03-16 Devang Patel Radar 4461042 * cp/parser.c (cp_parser_initializer_clause): Eat CPP_BINCL/CPP_EINCL tokens. (cp_parser_initializer_list): Same. 2005-03-01 Fariborz Jahanian Radar 4451818 * call.c (standard_conversion, implicit_conversion): Ignore 'volatile' attribute of artificially volatized type in objc when evaluating various conversion weights. 2005-02-28 Devang Patel Ziemowit Laski Radar 4137741 * cp-objcp-common.h: Revert Radar 4133801 changes. * cp-tree.h: Likewise. * decl2.c: Likewise. * parser.c: Likewise. (cp_lexer_handle_pragma): Rename to cp_lexer_handle_pragma_etc(); handle CPP_BINCL and CPP_EINCL tokens in addition to CPP_PRAGMA. (cp_lexer_new_main): Set defer_file_change_debug_hooks flag in preprocessor. (cp_parser_statement, cp_parser_declaration_seq_opt, cp_parser_member_specification_opt, cp_parser_cw_asm_declaration_seq_opt, cp_parser_cw_asm_statement, cp_parser_objc_interstitial_code): Call cp_lexer_handle_pragma_etc() for CPP_BINCL and CPP_EINCL tokens also. 2006-02-15 Fariborz Jahanian Radar 4445586 * semantics.c (begin_do_stmt): DO_STMT nodes take an extra argument to build. 2006-02-15 Fariborz Jahanian Radar 4441551 * parser.c (cp_parser_member_declaration): Warning on @defs as needed. * typeck.c (build_c_cast): Call diagnose_selector_cast. 006-02-13 Fariborz Jahanian Radar 4442245 * typeck.c (build_class_member_access_expr): Check for a valid member declaration before calling objc_v2_build_ivar_ref. 006-02-02 Fariborz Jahanian Radar 4426814 * typeck.c (build_modify_expr): Undo call to objc_read_weak on LHS of the assignment. * parser.c (cp_parser_cast_expression): Central place to add objc_read_weak call on expressions of __weak objects. 2006-01-30 Fariborz Jahanian Radar 4386773 * cp/lex.c (reswords): Add two new entries for @optional and @required keywords. * cp/parser.c (cp_parser_objc_interstitial_code): For @optional/@required set the optional/required flag. 2006-01-18 Fariborz Jahanian Radar 4294910 * cp/parser.c (objc_foreach_stmt): Fix typo in diagnostic. 2006-01-18 Fariborz Jahanian Radar 4294910 * cp/parser.c (objc_foreach_stmt, objc_finish_foreach_stmt): New functions. (cp_parser_iteration_statement): Check for a parsed foreach statement initialization and call objc_foreach_stmt instead. (cp_parser_simple_declaration): Take evasive action for a foreach initialization part. (cp_parser_init_declarator): Parse and recognize a foreach initialization part. 2005-12-15 Fariborz Jahanian Radar 4229905 * typeck.c (composite_pointer_type): Call objc_have_common_type when comparing two objective-c pointer types. 2005-12-06 Fariborz Jahanian Radar 4360146 * typeck.c (build_class_member_access_expr): Build the new ivar reference tree. 2006-05-18 Mike Stump Radar 4501833 * parser.c (cp_parser_compound_statement): Use iasm_end_block to end inline assmebly blocks. (cp_parser_iasm_compound_statement): Likewise. (cp_parser_iasm_top_statement): Likewise. 2006-04-26 Fariborz Jahanian Radar 4508851 * parser.c (cp_parser_objc_interstitial_code): Recognize and parse RID_NAMESPACE keyword. 2006-04-26 Mike Stump Radar 4505741 Rename cw_ to iasm_: See ../ChangeLog.apple-ppc for additional changes. * cp-tree.h: Rename ds_cw_asm to ds_iasm_asm. * decl.c: Likewise. Rename cw_asm_p to iasm_p. * parser.c: Likewise. Rename cp_lexer_cw_bol to cp_lexer_iasm_bol. Rename cp_parser_cw_asm_compound_statement to cp_parser_iasm_compound_statement. Rename cp_parser_cw_asm_top_statement to cp_parser_iasm_top_statement. Rename cp_parser_cw_asm_declaration_seq_opt to cp_parser_iasm_declaration_seq_opt. Rename cp_parser_cw_asm_line_seq_opt to cp_parser_iasm_line_seq_opt. Rename cp_parser_cw_asm_line to cp_parser_iasm_line. Rename cp_parser_cw_skip_to_eol to cp_parser_iasm_skip_to_eol. Rename cp_parser_cw_maybe_skip_comments to cp_parser_iasm_maybe_skip_comments. Rename cp_parser_cw_asm_statement_seq_opt to cp_parser_iasm_statement_seq_opt. Rename cw_build_identifier_string to iasm_build_identifier_string. Rename cp_parser_cw_identifier to cp_parser_iasm_identifier. Rename cp_parser_cw_identifier_or_number to cp_parser_iasm_identifier_or_number. Rename cp_parser_cw_asm_maybe_prefix to cp_parser_iasm_maybe_prefix. Rename cp_parser_cw_asm_statement to cp_parser_iasm_statement. Rename cp_parser_cw_skip_to_next_asm to cp_parser_iasm_skip_to_next_asm. Rename cp_parser_cw_asm_operands to cp_parser_iasm_operands. Rename cp_parser_cw_asm_operand to cp_parser_iasm_operand. Rename cp_parser_cw_asm_relative_branch to cp_parser_iasm_relative_branch. Rename cp_parser_cw_asm_postfix_expression to cp_parser_iasm_postfix_expression. * semantics.c: Likewise. Rename cw_asm_cp_build_component_ref to iasm_cp_build_component_ref. 2006-04-17 Devang Patel Radar 4499790 * parser.c (cp_parser_string_literal): Enable pascal strings for wchars. 2006-04-12 Mike Stump Radar 4477426 4466768 * parser.c (cw_build_identifier_string): Handle pseudo instructions bettter. 2006-03-13 Mike Stump Radar 4230099 * decl2.c (determine_visibility): Add suppport for -fvisibility-ms-compat. * decl.c (cxx_init_decl_processing): Likewise. 2006-02-08 Mike Stump Radar 4407059 * parser.c (cp_parser_unary_operator): Only recognize "offset" when doing x86 assembly. 2006-01-20 Mike Stump Radar 4381918 * decl.c (start_preparsed_function): Avoid warnings about lack of return in asm functions. 2005-12-14 Fariborz Jahanian Radar 4278774 * pt.c (cxx_sizeof_or_alignof_expr): Instantiate @endcode(T). * parser.c (cp_parser_objc_encode_expression): Build a templatized parse tree for @encode(T). 2005-12-13 Mike Stump * Revert 2005-12-07 Devang Patel Radar 4137741 2005-12-08 Mike Stump Radar 4371551 * parser.c (cp_parser_cw_asm_postfix_expression): Also handle exprs with no type. 2005-12-07 Devang Patel Ziemowit Laski Radar 4137741 * cp-objcp-common.h: Revert Radar 4133801 changes. * cp-tree.h: Likewise. * decl2.c: Likewise. * parser.c: Likewise. (cp_lexer_handle_pragma): Rename to cp_lexer_handle_pragma_etc(); handle CPP_BINCL and CPP_EINCL tokens in addition to CPP_PRAGMA. (cp_lexer_new_main): Set defer_file_change_debug_hooks flag in preprocessor. (cp_parser_statement, cp_parser_declaration_seq_opt, cp_parser_member_specification_opt, cp_parser_cw_asm_declaration_seq_opt, cp_parser_cw_asm_statement, cp_parser_objc_interstitial_code): Call cp_lexer_handle_pragma_etc() for CPP_BINCL and CPP_EINCL tokens also. 2005-11-08 Fariborz Jahanian Radar 4330422 * typeck.c (comp_ptr_ttypes_real): Remove the hack. un-volatize the artiificially 'volatized' type before doing pointer comparison. 2005-10-17 Fariborz Jahanian Radar 4290840 * parser.c (cp_parser_objc_method_keyword_params): Check for valid method parameters and issue error. (cp_parser_objc_method_definition_list): Check for invalid tokens which cannot start a function definition. 2005-10-14 Fariborz Jahanian Radar 4294425 * parser.c (cp_parser_objc_message_args): Check for missing message arguments and syntax error. 2005-10-13 Fariborz Jahanian Radar 4261146 * parser.c (cp_parser_objc_class_ivars): Check for @end/eof while looking for '}'. 2005-10-04 Devang Patel Radar 4278470 * parser.c (cp_lexer_new_main): Initialized saved_pos.value. 2005-09-23 Mike Stump Radar 4259442 * parser.c (cp_parser_compound_statement): Handle opcode int. (cp_parser_asm_definition): Add statement_p parameter. Handle opcode int. (cp_parser_cw_identifier): Handle opcode int. (cw_asm_typename_or_reserved): Likewise. 2005-09-15 Fariborz Jahanian Radar 4258924 * cp/parser.c (cp_parser_cw_asm_postfix_expression): Add check for FUNCTION_DECL during lookahead. 2005-09-14 Fariborz Jahanian Radar 4257049 * cp/parser.c (cw_asm_typename_or_reserved): Check for typename. 2005-08-23 Mike Stump Radar 4211971 * parser.c (cp_parser_primary_expression): Add support for complex memory addressing. (cp_parser_cw_asm_postfix_expression): Likewise. * typeck.c (build_x_binary_op): Likewise. 2005-08-19 Mike Stump Radar 4211947 * parser.c (cp_parser_cw_maybe_skip_comments): Add support for ; comments. (cp_parser_asm_definition): Likewise. (cp_parser_cw_skip_to_eol): Likewise. (cp_parser_cw_maybe_skip_comments): Likewise. (cp_parser_cw_asm_top_statement): Likewise. (cp_parser_cw_asm_statement_seq_opt): Likewise. (cp_parser_cw_asm_statement): Likewise. 2005-08-18 Mike Stump Radar 4214021 * parser.c (cp_parser_asm_definition): Add asm nop support. (cp_parser_cw_asm_top_statement): Likewise. (cp_parser_cw_asm_declaration_seq_opt): Likewise. (cp_parser_cw_asm_operands): Likewise. 2005-08-15 Ziemowit Laski Radar 4093475 * parser.c (cp_parser_objc_interstitial_code): Catch stray '{' and '}' tokens and issue appropriate errors. (cp_parser_objc_method_prototype_list, cp_parser_objc_method_definition_list): Bail out if end-of-file is seen; issue error if trailing '@end' is not seen. 2005-07-25 Fariborz Jahanian Radar 4205577 * cp/parser.c (cp_parser_cw_asm_postfix_expression) .align can also be preceeded by a label_decl (because of recent changes). 2005-07-25 Fariborz Jahanian Radar 4187916 * cp-tree.h (can_convert_arg, fn_type_unification): New argument. * call.c (add_template_candidate_real): Pass down 'flags' to fn_type_unification. (can_convert_arg): New 'flags' argument. Pass it to call to implicit_conversion instead of LOOKUP_NORMAL. * class.c (resolve_address_of_overloaded_function): Add LOOKUP_NORMAL in call to can_convert_arg. (resolve_address_of_overloaded_function): Ditto. * decl.c (reshape_init, check_default_argument): Ditto. * typeck.c (build_ptrmemfunc): Ditto. * typeck2.c (digest_init): Ditto. (unify): Add LOOKUP_NORMAL to call to type_unification_real. * pt.c (type_unification_real): Add 'flags' argument. (fn_type_unification): Pass 'flags' to type_unification_real. (type_unification_real): Pass new 'flags' argument to call to can_convert_arg. 2005-08-02 Ziemowit Laski Radar 4185810 * parser.c (cp_parser_compound_statement): Continue parsing even if the initial '{' is missing; an error message is already being produced. (cp_parser_statement_seq_opt): In addition to '}' and end-of-file, a statement sequence may also be terminated by a stray 'else' or '@end'. 2005-07-22 Devang Patel Radar 4182972 * name-lookup.c (pushtag): Do not set DECL_IGNORED_P bit. * decl.c (grokdeclarator): Do not generate debug info for anonymous aggregate type when it receives real name. 2005-07-26 Ziemowit Laski Radar 4168392 * decl.c (check_tag_decl): In '-fms-extensions' mode, turn anonymous fields of aggregate (struct or union) type into anonymous aggregates. For structs, issue a warning if in '-pedantic' mode. 2005-07-25 Devang Patel Radar 4184203 Undo PR c++/1016 patch. 2005-03-13 Kriang Lerdsuwanakij * cp-tree.h (pushtag): Adjust declaration. * decl.c (lookup_and_check_tag): Call lookup_type_scope if lookup_name fails. (xref_tag): Adjust call to pushtag. Make hidden class visible. (start_enum): Adjust call to pushtag. * name-lookup.c (ambiguous_decl): Ignore hidden names. (qualify_lookup): Change return type to bool. (hidden_name_p): New function. (lookup_namespace_name, unqualified_namespace_lookup, lookup_name_real): Use it. (lookup_type_scope): Update comments. (maybe_process_template_type_declaration): Change parameter name from globalize to is_friend. (pushtag): Change globalize parameter of type int to tag_scope. Hide name if introduced by friend declaration. * name-lookup.h (hidden_name_p): Add declaration. * parser.c (cp_parser_lookup_name): Don't deal with hidden name here. * pt.c (push_template_decl_real): Make hidden class template visible. (lookup_template_class, instantiate_class_template): Adjust call to pushtag. * semantics.c (begin_class_definition): Likewise. * rtti.c (init_rtti_processing, build_dynamic_cast_1, tinfo_base_init, emit_support_tinfos): Use ts_current instead of ts_global. 2005-07-22 Devang Patel Radar 4167759 * class.c (finish_struct_1): Limit debug info for ctors/dtors. (cp_set_decl_ignore_flag): New. * cp-tree.h (cp_set_decl_ignore_flag): New. * search.c (note_debug_info_needed): Limit debug info for ctors/dtors. 2005-07-22 Devang Patel Radar 4182972 * name-lookup.c (pushtag): Update comment. * decl.c (grokdeclarator): Generate debug info for anonymous aggregate type when it receives real name. 2005-07-18 Ziemowit Laski Radar 4175534 * call.c (standard_conversion): Do not issue warnings when comparing ObjC pointer types. 2005-06-30 Devang Patel * lang-specs.h: While making PCH, invoke as if -fsave-repository is used. 2005-06-22 Ziemowit Laski Radar 4154928 * call.c (standard_conversion): Allow for a pointer conversion between any two ObjC pointer types. * typeck.c (composite_pointer_type): Determine common type for two ObjC pointer types. 2005-06-15 Devang Patel * parser.c (struct cp_lexer_file): Do not use GTY markers. * decl2.c (cp_finish_file): Flush lexer file stack before writing PCH. 2005-06-02 Devang Patel Radar 4133801 * parser.c (struct cp_lexer_file): Decorate using GTY markers. (cp_lexer_new_main): Initialize fields of new tokens. 2005-06-02 Devang Patel Radar 4133801 * cp-tree.h (cp_flush_lexer_file_stack): New. * parser.c (cp_flush_lexer_file_stack): New. (cp_lexer_file_stack, last_cp_lexer_file): Make static. (cp_add_lexer_file): Initialize next field. * decl2.c (cp_finish_file): Flush cp_lexer_file_stack. 2005-05-19 Ziemowit Laski Radar 4035492 * class.c (layout_class_type): Do not issue C++ ABI warnings for ObjC structs. * decl.c (objc_mark_locals_volatile): Streamline by calling objc_volatilize_decl(). * parser.c (cp_parser_objc_message_expression): Allow simple type specifiers (instead of merely type names) as message receivers. * pt.c (template_args_equal): Do not call objc_comptypes(). * typeck.c (composite_pointer_type): If both pointers are ObjC-esque, arbitrarily choose the first; do not call objc_comptypes(). (comp_array_types): Do not call objc_comptypes(). (convert_for_assignment): Call objc_compare_types(). (comp_ptr_ttypes_real): Call objc_type_quals_match() before concluding that types do not match. 2005-06-01 Devang Patel Radar 4133801 * Make-lang.in (cp/parser.o): Depend on debug.h. * cp-objcp-common.h (LANG_HOOKS_START_SOURCE_FILE, LANG_HOOKS_END_SOURCE_FILE): New. * cp-tree.h (cp_start_source_file, cp_end_source_file): New. * parser.c (debug.h): Include. (enum cp_file_entry_kind): New. (struct cp_lexer_file): New. (cp_lexer_file_stack, last_cp_lexer_file): New. (cp_add_lexer_file, cp_lexer_copy_token, cp_parser_bincl_eincl): New. (cp_lexer_new_main): Insert new CPP_BINCL and CPP_EINCL tokens based on cp_lexer_file_stack. (cp_lexer_peek_nth_token): Skip CPP_BINCL and CPP_EINCL tokens. (cp_lexer_peek_token): Process CPP_BINCL and CPP_EINCL tokens. 2005-04-25 Ziemowit Laski Radar 4094385 * semantics.c (finish_id_expression): Correctly retrieve function candidate from a BASELINK node, if one was provided. 2005-04-20 Mike Stump Radar 4077104 * parser.c (cp_parser_unary_expression): Handle -40(sp) in CW asms better. 2005-04-20 Devang Patel Radar 4093536 Undo PR libstdc++/10606 fix. 2005-02-18 Richard Henderson PR libstdc++/10606 * except.c (do_get_exception_ptr): New. (expand_start_catch_block): Use it. 2005-04-08 Ziemowit Laski Radar 4055183 * typeck.c (build_function_call): Call objc_rewrite_function_call() to handle casts. 2005-03-11 Ziemowit Laski Radar 3995882 * decl.c (objc_mark_locals_volatile): Mark local variables and parameters 'volatile' in ways expected by the C++ front-end. 2005-03-07 Devang Patel * class.c (tree-iterator.h): Include. 2005-03-02 Robert Bowdidge Radar 3809189 * typeck2.c (digest_init): Factor out Pascal-ness of string initializer; allow NUL terminator to not fit into the array being initialized. 2005-02-18 Ziemowit Laski Radar 4011192 * parser.c (cp_parser_objc_try_catch_finally_statement): When parsing '@finally' blocks, make sure the compound statement winds up in a special STATEMENT_LIST instead of current scope. (cp_parser_objc_synchronized_statement): Likewise for '@synchronized' blocks. 2005-02-17 Ziemowit Laski Radar 3635843, 3922342 * tree.c (lvalue_or_else): Do not emit warning if '-Wno-non-lvalue-assign' has been specified. * typeck.c (build_modify_expr): Call objc_generate_write_barrier() if '-fobjc-gc' has been specified. 2005-02-16 Fariborz Jahanian Radar 3971074 * parser.c (cp_parser_cw_asm_statement): Pass lineno to cw_asm_stmt. 2005-02-16 Fariborz Jahanian Radar 3970655 * cp/parser.c (cw_build_identifier_string): New function. (cp_parser_cw_identifier): Build the tree for a '.'identifier. (cp_parser_cw_asm_postfix_expression): Some disambiguation case. 2005-02-10 Ziemowit Laski Radar 3993052 * parser.c (cp_parser_objc_interstitial_code): New routine. (cp_parser_objc_method_prototype_list): Call cp_parser_objc_interstitial_code() instead of doing non-ObjC++ parsing locally. (cp_parser_objc_method_definition_list): Likewise. 2005-02-10 Ziemowit Laski Radar 3982256 * cp-objcp-common.h (cxx_get_alias_set, cxx_warn_unused_global_decl, cp_expr_size, cp_tree_size, cp_var_mod_type_p, cxx_initialize_diagnostics, cxx_types_compatible_p): Move prototypes ... * cp-tree.h: ... here. 2005-02-08 Ziemowit Laski Radar 3987120 * parser.c (cp_parser_objc_encode_expression): Call 'complete_type (cp_parser_type_id ())' instead of 'cp_parser_objc_typename ()' to retrieve argument type. 2005-02-02 Ziemowit Laski Radar 3978104 * parser.c (cp_parser_objc_method_prototype_list): Allow stray semicolons in between method signatures. 2005-01-31 Ziemowit Laski Radar 3978168 * tree.c (lvalue_or_else): Allow certain non-lvalues as arguments to '&', and print appropriate warning. 2005-01-27 Ziemowit Laski Radar 3971244 * typeck.c (composite_pointer_type): Check for ObjC subtype relations. 2005-01-26 Matt Austern Radar 3972840 * call.c (build_over_call): Set type of function node correctly. Type returned by build_vfn_ref_using_vtable is *not* what we want. * class.c (build_vfn_ref_using_vtable): Duplicate logic in build_vfn_ref for setting attributes of vtable array ref node. 2005-01-26 Devang Patel Radar 3971329 * parser.c (cp_parser_objc_method_definition_list): Parse extern linkage specification. 2005-01-24 Ziemowit Laski Radar 3968938 * parser.c (cp_parser_simple_type_specifier): After constructing a protocol-qualified ObjC type, record it in the DECL_SPECS structure. 2005-01-23 Ziemowit Laski Radar 3961973 * cp-tree.h (lvalue_or_else): Change type of first parameter from 'tree' to 'tree *'. * tree.c (lvalue_or_else): Change first parameter from 'tree' to 'tree *'; handle conditional lvalues in addition to lvalue casts; when rewriting expressions, create a new tree instead of clobbering an existing one. * typeck.c (build_unary_op, build_modify_expr): Adjust calls to lvalue_or_else(). 2005-01-19 Matt Austern Radar 3960754 * typeck.c (comptypes): Handle return code from objc_comptypes correctly. 2005-01-18 Mike Stump Radar 3956093 * class.c (has_apple_kext_compatibility_attr_p): Avoid problems when there are no base classes. 2005-01-18 Ziemowit Laski * parser.c (cp_parser_cw_identifier): Reapply change just reverted. 2005-01-18 Ziemowit Laski * parser.c (cp_parser_cw_identifier): Revert change from 2005-01-14. 2005-01-17 Ziemowit Laski Radar 3955336 * parser.c (cp_parser_objc_message_receiver): Try parsing receiver as an expression first; failing that, as a nested type. 2005-01-17 Ziemowit Laski Radar 3951689 * parser.c (cp_parser_objc_try_catch_finally_statement, cp_parser_objc_synchronized_statement, cp_parser_objc_throw_statement cp_parser_objc_statement): New functions. (cp_parser_statement): Call cp_parser_objc_statement() to parse Objective-C statements. 2005-01-15 Geoffrey Keating * g++spec.c: Remove APPLE LOCAL changes involving macosx_version_min_required. 2005-01-14 Ziemowit Laski * parser.c (cp_parser_cw_identifier): Add a default: to squash compiler warnings. 2005-01-08 Ziemowit Laski Radar 3913725 * tree.c (lvalue_or_else): If expression is not an lvalue, check if it is a cast of an lvalue; if so, and if the cast involves POD types with identical size and aligment, rewrite '(type)expr' into '*(type *)&expr' and allow the result as an lvalue. 2005-01-07 Devang Patel Radar 3943502 * parser.c (cp_parser_objc_defs_expression): New. (cp_parser_member_declaration): Handle @defs. 2005-01-06 Robert Bowdidge Radar 3943783 * class.c: change has_apple_kext_compatibility_attr_p to use BINFO_BASE_BINFO for walking class hierarchy. 2005-01-06 Devang Patel Radar 3941766 * parser.c (cp_parser_objc_class_ivars): Add '}' check. 2005-01-05 Mark Mitchell Matt Austern Radar 3934803 PR c++/18369 * init.c (build_new_1): Handle parenthesized type-ids that name an array type. Tidy. 2004-12-20 Matt Austern Radar 3845716 PR c++/19044 * decl.c (make_rtl_for_nonlocal_decl): Use set_builtin_user_assembler_name 2004-12-10 Ziemowit Laski Radar 3640156, 3877958 * decl.c (builtin_function_1): Do not require subsequent declarations for AltiVec PIM builtins. 2004-12-07 Mike Stump Radar 3603833, 3896176, 3518821. * parser.c (cp_parser_binary_expression): Add support for lines that start with named operators such as and. (cp_parser_cw_identifier): Move reused code from here to cw_get_identifier. 2004-11-17 Mike Stump Radar 3860322 g++.dg/asm-block-3.C * parser.c (cp_parser_cw_identifier): Handle C++ keywords like and, or, xor in CW asm blocks. 2004-11-14 Ziemowit Laski Radar 3877761 * parser.c (cp_parser_objc_class_ivars): Allow an optional trailing semicolon, per existing usage. 2004-11-10 Ziemowit Laski Radar 3761423 * typeck.c (finish_class_member_access_expr): Insert call to objc_is_public() to check ObjC ivar access. 2004-11-08 Ziemowit Laski Radar 3869280 * tree.c (lvalue_p_1): Determine lvalue-ness of CONST_DECLs the same way as for VAR_DECLs. 2004-11-03 Ziemowit Laski Radar 3863563 (fix from mainline) * cp-lang.c (cxx_types_compatible_p): Remove prototype and definition. (LANG_HOOKS_TYPES_COMPATIBLE_P): Move to cp-objcp-common.h. * cp-objcp-common.c (cxx_types_compatible_p): Moved definition here from cp-lang.c. * cp-objcp-common.h (cxx_types_compatible_p): Moved prototype here from cp-lang.c. (LANG_HOOKS_TYPES_COMPATIBLE_P): Moved here from cp-lang.c. 2004-11-01 Ziemowit Laski Radar 2810013 * parser.c (cp_parser_primary_expression): Perform instace variable lookup in conjunction with C++ identifier expression lookup. (cp_parser_postfix_expression): Moved instance variable lookup to cp_parser_primary_expression(). 2004-10-21 Ziemowit Laski Radar 3540965 * parser.c (cp_parser_postfix_expression): Do not forget to parse the rhs of a postfix expression when the lhs is an instance variable. 2004-10-18 Robert Bowdidge Radar 3843618 * gcc/cp/parser.c: Bring the change for PR/17829 over from mainline so that Finder_FE will build again. 2004-10-13 Ziemowit Laski Radar 3677258 * cp-tree.h (struct lang_identifier): Add 'interface_value' field. 2004-09-14 Andrew Pinski Rest of Radar 3753405 * cp-tree.h (enum cp_decl_sepcs): Add ds_cw_asm. * decl.c (grokdeclarator): Rename cw_asm_specbit to cw_asm_p to mirror the other specbits. Access specbits for cw_asm. Add "asm" to decl_specs_names. Remove MERGE FIXME comment. * parser.c (cp_parser_decl_specifier_seq, ): Mirror the other decl spec bits. 2004-08-22 Andrew Pinski Revert: 2004-08-22 Andrew Pinski PR c++/14029 * typeck.c (build_unary_op): Use &a.b if the foldded lowered expression is not constant. 2004-08-22 Andrew Pinski PR c++/14029 * typeck.c (build_unary_op): Use &a.b if the foldded lowered expression is not constant. 2004-08-10 Devang Patel Remove Symbol Separation. Radar 3555440. Reviewed by Mike Stump. * decl2.c (finish_file): Do not write context. 2004-08-08 Andrew Pinski * cp/lex.c (cxx_init): Remove APPLE LOCAL for setting -gused by default as it is handled in CC1_SPECs now. 2004-08-03 Stan Shebs Support for CodeWarrior-style assembly language blocks and functions. Radar 3368707. * cp-tree.h (cw_asm_cp_build_component_ref): Declare. * decl.c (grokdeclarator): Recognize asm keyword, set flag on function decl if seen. * parser.c (cp_lexer_get_preprocessor_token): Allow @-tokens if doing asm. (cp_parser_primary_expression): Recognize @-tokens in asm, replace with @-identifier (which will become a label) later. (cp_parser_unary_expression): Call asm-specific postfix expression handler. (cp_parser_compound_statement): Handle asm compound statements specially. (cp_parser_statement_seq_opt): Handle statement sequences in asm blocks specially. (cp_parser_simple_declaration): Leave instead of erroring out if apparent asm opcode is seen. (cp_parser_decl_specifier_seq, cp_parser_storage_class_specifier_opt): Accept RID_ASM as a specifier. (cp_parser_asm_definition): Detect asm blocks and handle. (cp_parser_cw_asm_compound_statement, cp_parser_cw_asm_declaration_seq_opt, cp_parser_cw_asm_line_seq_opt, cp_parser_cw_asm_line, cp_parser_cw_asm_statement_seq_opt, cp_parser_cw_asm_statement, cp_parser_cw_asm_operands, cp_parser_cw_asm_operand, cp_parser_cw_asm_postfix_expression, cw_asm_typename_or_reserved): New functions. semantics.c (finish_id_expression): Handle register names and labels in asm blocks specially. * typeck.c (cw_asm_cp_build_component_ref): New function. 2004-08-01 Devang Patel Re-implement -fwritable-strings support. Radar : 3699482 * decl.c (cxx_init_decl_processing): Check flag_writable_strings. 2004-08-01 Geoffrey Keating * decl.c (grokdeclarator): Don't call warn_about_long_double. 2004-06-08 Fariborz Jahanian * decl2.c (maybe_emit_vtables, get_guard): Remove all APPLE LOCAL coalescing codes. (import_export_decl): Remove all APPLE LOCAL coalescing codes, except for one call to comdat_linkage. 2004-06-08 Fariborz Jahanian * decl2.c (maybe_emit_vtables, import_export_decl, get_guard): Resore various APPLE LOCAL coalescing codes. 2004-06-07 Fariborz Jahanian * decl2.c (maybe_emit_vtables, import_export_decl, get_guard): Remove various APPLE LOCAL coalescing codes. 2004-04-02 Ziemowit Laski Remove APPLE LOCAL AltiVec code whenever possible; merge in AltiVec/VECTOR_TYPE-handling code from mainline.