aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
AgeCommit message (Collapse)AuthorFilesLines
2003-09-10cgraph.h (struct cgraph_node): Rename lowered to analyzed.Richard Henderson4-20/+22
* cgraph.h (struct cgraph_node): Rename lowered to analyzed. * cgraphunit.c: Update to match. (record_call_1): Rearrange. Call lang hook for language nodes. (cgraph_analyze_function): Don't call lower_function. * langhooks.h (struct lang_hooks_for_callgraph): Replace lower_function with analyze_expr. * langhooks-def.h: Update to match. * langhooks.c (lhd_callgraph_analyze_expr): New. * decl2.c (cxx_callgraph_analyze_expr): New, from corpse of mark_member_pointers. (lower_function): Remove. * cp-tree.h: Update to match. * cp-lang.c (LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR): New. (LANG_HOOKS_CALLGRAPH_LOWER_FUNCTION): Remove. From-SVN: r71277
2003-09-09cgraphunit.c (cgraph_finalize_function): Remove unused argument.Richard Henderson2-1/+4
* cgraphunit.c (cgraph_finalize_function): Remove unused argument. * cgraph.h (cgraph_finalize_function): Update. * c-decl.c (finish_function): Update. cp/ * semantics.c (expand_or_defer_fn): Update call to cgraph_finalize_function. java/ * parse.y (source_end_java_method): Update call to cgraph_finalize_function. From-SVN: r71263
2003-09-09semantics.c (expand_or_defer_fn): Use cgraph_finalize_function always.Richard Henderson1-0/+3
* semantics.c (expand_or_defer_fn): Use cgraph_finalize_function always. From-SVN: r71262
2003-09-09decl2.c (finish_file): Avoid out-of-bounds array reference during memmove.Richard Henderson3-60/+15
* decl2.c (finish_file): Avoid out-of-bounds array reference during memmove. From-SVN: r71261
2003-09-09except.c: Include cgraph.h.Richard Henderson2-37/+16
* except.c: Include cgraph.h. (output_function_exception_table): Invoke cgraph_varpool_mark_needed_node. * Makefile.in (except.o): Update. * decl2.c (mark_member_pointers): Rename from mark_member_pointers_and_eh_handlers and don't check eh handlers. From-SVN: r71254
2003-09-09re PR bootstrap/12168 (ICE (bus error) in set_mem_attributes_minus_bitpos)Christian Ehrhardt2-0/+6
PR bootstrap/12168 * method.c (use_thunk): Clear DECL_RTL of copied nodes. From-SVN: r71234
2003-09-09langhooks-def.h (lhd_register_builtin_type): New function.Mark Mitchell2-0/+5
* langhooks-def.h (lhd_register_builtin_type): New function. (LANG_HOOKS_REGISTER_BUILTIN_TYPE): New macro. (LANG_HOOKS_FOR_TYPES_INITIALIZER): Update. * langhooks.h (lang_hooks_for_types): Add register_builtin_type. * langhooks.c (lhd_register_builtin_type): New function. * c-common.h (c_register_builtin_type): Declare. * c-common.c (c_register_builtin_type): New function. * c-lang.c (LANG_HOOKS_REGISTER_BUILTIN_TYPE): Define to c_register_builtin_type. * config/ia64/hpux.h (TARGET_OS_CPP_BUILTINS): Remove __fpreg, __float80, and __float128 macros. * config/ia64/ia64.c (ia64_init_builtins): Create __fpreg, __float80, and __float128 types. * cp-lang.c (LANG_HOOKS_REGISTER_BUILTIN_TYPE): Define to c_register_builtin_type. * gcc.dg/ia64-types1.c: New test. * gcc.dg/ia64-types2.c: Likewise. From-SVN: r71227
2003-09-08re PR c++/11786 (operator() call on variable in other namespace not recognized)Mark Mitchell3-2/+10
PR c++/11786 * decl2.c (add_function): Do not complain about seeing the same non-function twice. * semantics.c (perform_koenig_lookup): Improve documentation. PR c++/11786 * g++.dg/lookup/koenig2.C: New test. From-SVN: r71213
2003-09-08* optimize.c (maybe_clone_body): Inc/dec function_depth.Richard Henderson2-0/+11
From-SVN: r71210
2003-09-08re PR c++/5296 ([DR115] Pointers to functions and template functions behave ↵Mark Mitchell2-15/+29
different in deduction) PR c++/5296 * pt.c (try_one_overload): Add addr_p parameter. (resolve_overloaded_unification): Pass it. PR c++/5296 * g++.dg/rtti/typeid2.C: New test. From-SVN: r71209
2003-09-08c-decl.c (c_expand_body_1): Push and pop function context here.Richard Henderson7-37/+19
gcc/ * c-decl.c (c_expand_body_1): Push and pop function context here. * tree-optimize.c (tree_rest_of_compilation): ... not here. Take nested argument instead of computing nesting ourselves. gcc/cp/ * decl.c (finish_function): Clear current_function_decl. * decl2.c (mark_used): Don't push/pop gc context. * optimize.c (optimize_function): Likewise. * tree.c (cp_cannot_inline_tree_fn): Likewise. * pt.c (instantiate_decl): Inc/dec function_depth instead. * semantics.c (expand_body): Update for tree_rest_of_compilation nested argument. From-SVN: r71208
2003-09-07Fix typo.Mark Mitchell1-1/+1
From-SVN: r71177
2003-09-07re PR c++/11762 (namespace aliasing ICE in warn_extern_redeclared_static)Gabriel Dos Reis4-10/+82
* c-pretty-print.h (pp_c_left_brace): Declare. (pp_c_right_brace): Likewise. * c-pretty-print.c (pp_c_left_brace): Now a function (pp_c_right_brace): Likewise. cp/ PR c++/11762 * error.c (dump_decl): Handle namespace-alias-definition. * decl.c (warn_extern_redeclared_static): There is no point in checking changes in storage class specifier for a namespace declaration. (duplicate_decls): Tidy diagnostic message. * cxx-pretty-print.c (pp_cxx_left_brace): New macro. (pp_cxx_right_brace): Likewise. (pp_cxx_original_namespace_definition): New function. (pp_cxx_namespace_alias_definition): Likewise. (pp_cxx_declaration): Use them. Handle NAMESPACE_DECLs. From-SVN: r71175
2003-09-07decl2.c (maybe_emit_vtables, [...]): Avoid re-emitting variables in ↵Jan Hubicka2-3/+14
unit-at-a-time mode. * decl2.c (maybe_emit_vtables, write_out_vars, finish_file): Avoid re-emitting variables in unit-at-a-time mode. From-SVN: r71167
2003-09-07re PR c++/11867 (static_cast ignores ambiguity)Mark Mitchell3-20/+42
PR c++/11687 * call.c (standard_conversion): Improve comments. (perform_direct_initialization): Make sure we return an expression of the correct type. * typeck.c (build_static_cast): Check for ambiguity and accessibility when performing conversions. PR c++/11687 * g++.dg/expr/static_cast5.C: New test. From-SVN: r71157
2003-09-06cp-tree.h (add_binding): Remove declaration.Gabriel Dos Reis6-82/+107
* cp-tree.h (add_binding): Remove declaration. * name-lookup.h (supplement_binding): Declare. * decl.c (add_binding): Move to name-lookup.c. (push_local_binding): Adjust. (push_class_binding): Likewise. (set_identifier_type_value_with_scope): Likewise. * name-lookup.c (supplement_binding): Rename from add_binding. Return a bool. Improve documentation. (set_namespace_binding): Adjust. * Make-lang.in (cp/name-lookup.o): Depend on toplev.h From-SVN: r71144
2003-09-06re PR c++/11794 (using declaration inside nested class seems ignored)Nathan Sidwell2-2/+8
cp: PR c++/11794 * class.c (pushclass): Push dependent using decls for nested classes of templates too. testsuite: PR c++/11794 * g++.dg/parse/using3.C: New test. From-SVN: r71143
2003-09-06re PR c++/11409 (using declarations and fabs built-in)Roger Sayle2-1/+12
PR c++/11409 * class.c (resolve_address_of_overloaded_function): When building list of matching non-template function decls, ignore anticipated declarations of undeclared or shadowed GCC builtins. * g++.dg/overload/builtin3.C: New test case. From-SVN: r71139
2003-09-06re PR c++/11595 (crash on duplicate label definition)Steven Bosscher2-7/+10
PR c++/11595 * decl.c (define_label): Remove unreachable timevar pop. Always return the decl, even if the definition is invalid. From-SVN: r71138
2003-09-06re PR c++/12167 (ICE on default argument of class member function if non-simple)Nathan Sidwell2-0/+17
cp: PR c++/12167 * parser.c (cp_parser_late_parsing_default_args): Push & pop the unparsed functions queue. testsuite: PR c++/12167 * g++.dg/parse/defarg5.C: New test. * g++.dg/template/non-type-template-argument-1.C: Tweak expected error. From-SVN: r71133
2003-09-05re PR c++/12163 (static_cast + explicit ctor regression)Mark Mitchell3-2/+26
PR c++/12163 * call.c (perform_direct_initialization): Correct logic for direct-initialization of a class type. PR c++/12146 * pt.c (lookup_template_function): Robustify. PR c++/12163 * g++.dg/expr/static_cast4.C: New test. PR c++/12146 * g++.dg/template/crash9.C: New test. From-SVN: r71115
2003-09-05re PR c++/11922 (ICE on type_unification_real)Nathan Sidwell3-8/+26
cp: PR c++/11922 * pt.c (tsubst_qualified_id): Make sure we get a non-type. (tsubst_expr, tsubst_copy_and_build): Pass false, not zero, as is_type_p to lookup_qualified_name. * semantics.c (finish_call_expr): Refactor some code. testsuite: PR c++/11922 * g++/dg/template/qualified-id1.C: New test. From-SVN: r71109
2003-09-05re PR c++/12037 (Spurious "statement has no effect" in templates)Nathan Sidwell10-37/+130
cp: PR c++/12037 * cp-tree.h (COMPOUND_EXPR_OVERLOADED): New. (build_min_non_dep): Declare. * tree.c (build_min): Propagate TREE_SIDE_EFFECTS. (build_min_non_dep): New. * cvt.c (convert_to_void): Don't explicitly copy TREE_SIDE_EFFECTS, TREE_NO_UNUSED_WARNING. * call.c (build_new_method_call): Use build_min_non_dep. * decl2.c (grok_array_decl): Likewise. (build_offset_ref_call_from_tree): Likewise. * typeck.c (finish_class_member_access_expr, build_x_indirect_ref, build_x_binary_op, build_x_unary_op, build_x_conditional_expr, build_x_compound_expr): Likewise. (build_static_cast, build_reinterpret_cast, build_const_cast): Propagate TREE_SIDE_EFFECTS inside a template. * typeck2.c (build_x_arrow): Use build_min_non_dep. (build_functional_cast): Propagate TREE_SIDE_EFFECTS inside a template. * rtti.c (build_dynamic_cast_1): Set DECL_IS_PURE. (build_dynamic_cast): Set TREE_SIDE_EFFECTS. * pt.c (build_non_dependent_expr): Check COMPOUND_EXPR_OVERLOADED. testsuite: PR c++/12037 * g++.dg/warn/noeffect4.C: New test. From-SVN: r71108
2003-09-04cgraph.c (cgraph_mark_reachable_node): Split out from ...Richard Henderson2-1/+6
* cgraph.c (cgraph_mark_reachable_node): Split out from ... (cgraph_mark_needed_node): Remove needed argument. * cgraph.h: Update to match. * cgraphunit.c (decide_is_function_needed): Split out from ... (cgraph_finalize_function): Reorg. Avoid deferred_inline_function if we generated the function. (record_call_1): Update for cgraph_mark_reachable_node. * varasm.c (mark_referenced): Likewise. * objc/objc-act.c (mark_referenced_methods): Likewise. * decl2.c (mark_member_pointers_and_eh_handlers): Update for change in cgraph_mark_needed_node arguments. From-SVN: r71104
2003-09-04re PR c++/12161 (ICE during bootstrap, locale-inst.c, cp/call.c: 4571)Geoffrey Keating3-0/+18
PR 12161 * decl2.c (mark_used): Use ggc_push_context/ggc_pop_context. * tree.c (cp_cannot_inline_tree_fn): Likewise. From-SVN: r71084
2003-09-04cp-tree.h (finish_sizeof, [...]): Remove.Nathan Sidwell6-59/+68
cp: * cp-tree.h (finish_sizeof, finish_alignof): Remove. (expr_sizeof): Replace with ... (cxx_sizeof_or_alignof_expr): ... here. (cxx_sizeof_or_alignof_type): Make complain parameter a bool. * parser.c (cp_parser_unary_expression): Commonize alignof and sizeof handling. * pt.c (tsubst_copy_and_build): Adjust alignof and sizeof substitution. * semantics.c (finish_sizeof, finish_alignof): Remove. * typeck.c (cxx_sizeof_or_alignof_type): Complain parameter becomes bool. Set TREE_READONLY. (expr_sizeof): Replace with ... (cxx_sizeof_or_alignof_expr): ... here. Clear TREE_SIDE_EFFECTS. From-SVN: r71054
2003-09-04Remove cast-as-lvalue extension.Mark Mitchell5-72/+45
* call.c (build_conditional_expr): Correct formatting. (convert_like_real): Use lvalue_p, not non_cast_lvalue_p. (initialize_real): Use real_lvalue_p, not real_non_cast_lvalue_p. * cp-tree.h (non_cast_lvalue_p): Remove. (real_non_cast_lvalue_p): Remove. (non_cast_lvalue_or_else): Remove. * tree.c (lvalue_p_1): Remove allow_cast_as_lvalue parameter. (real_lvalue_p): Adjust call to lvalue_p_1. (non_cast_lvalue_p): Remove. (non_cast_lvalue_or_else): Remove. (lvalue_p): Adjust call to lvalue_p_1. (lvalue_or_else): Simplify. * typeck.c (build_unary_op): Use lvalue_or_else, not non_cast_lvalue_or_else. (build_static_cast): Use real_lvalue_p, not real_non_cast_lvalue_p. * doc/extend.texi: Document removal of cast-as-lvalue extension in C++. * g++.dg/expr/lval1.C: New test. * g++.dg/ext/lvcast.C: Remove. From-SVN: r71051
2003-09-03targhooks.c: New file.DJ Delorie2-1/+5
* targhooks.c: New file. * targhooks.h: New file. * Makefile.in: Add targhooks.o support. (function.o): Depend on$(TARGET_H). (stmt.o): Likewise. (combine.o): Depend on $(TREE_H) and $(TARGET_H). * builtins.c (apply_args_size, expand_builtin_apply_args_1, expand_builtin_apply): Convert to calls.struct_value_rtx hook. (expand_builtin_saveregs): Convert to calls.expand_builtin_saveregs hook. * c-decl.c (start_decl): Handle new calls.promote_prototypes hook here, instead of ... (get_parm_info) ... here. (store_parm_decls_oldstyle): Convert to calls.promote_prototypes hook. (finish_function): Handle calls.promote_prototypes hook here too. * c-typeck.c (convert_arguments): Convert to calls.promote_prototypes hook. (c_convert_parm_for_inlining): Likewise. * calls.c (initialize_argument_information): Convert to calls.promote_function_args hook. (expand_call): Convert to calls.struct_value_rtx, calls.strict_argument_naming, calls.pretend_outgoing_varargs_named, and calls.promote_function_return hooks. Pass fndecl to aggregate_value_p. Initialize CUMULATIVE_ARGS before calling hooks, so they can use that. (emit_library_call_value_1): Likewise. * combine.c (setup_incoming_promotions): Convert to calls.promote_function_args hook. * emit-rtl.c: Convert to calls.struct_value_rtx hook. * expr.c (expand_assignment): Pass call to aggregate_value_p. (expand_expr): Likewise. * expr.h: Remove support for SETUP_INCOMING_VARARGS, STRICT_ARGUMENT_NAMING, PRETEND_OUTGOING_VARARGS_NAMED, RETURN_IN_MEMORY macro defaults. * final.c (profile_function): Convert to calls.struct_value_rtx hook. * function.c (aggregate_value_p): Accept function type tree as second parameter; try to deduce fntype from it. Convert to calls.return_in_memory hook. (assign_parms): Convert to calls.setup_incoming_varargs, calls.strict_argument_naming, calls.promote_function_args, calls.pretend_outgoing_varargs_named hooks. Pass fndecl to aggregate_value_p. (expand_function_start): Likewise. Convert to calls.struct_value_rtx hook. (expand_function_end): Convert to calls.promote_function_return hook. (allocate_struct_function): Pass fndecl to aggregate_value_p. * hard-reg-set.h: Update comments to new hook names. * integrate.c (expand_inline_function): Pass fndecl to aggregate_value_p. * reg-stack.c (stack_result): Likewise. * rtl.h (struct_value_rtx, struct_value_incoming_rtx): Delete. * stmt.c (expand_value_return): Convert to calls.promote_function_return hook. * target-def.h: Add TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN, TARGET_PROMOTE_PROTOTYPES, TARGET_STRUCT_VALUE_RTX, TARGET_RETURN_IN_MEMORY, TARGET_EXPAND_BUILTIN_SAVEREGS, TARGET_SETUP_INCOMING_VARARGS, TARGET_STRICT_ARGUMENT_NAMING, TARGET_PRETEND_OUTGOING_VARARGS_NAMED, and TARGET_CALLS. * target.h: Likewise. * tree.h (aggregate_value_p): Also takes a tree to deduce function attributes from (for target hooks). * doc/tm.texi (PROMOTE_FUNCTION_ARGS, PROMOTE_FUNCTION_RETURN, PROMOTE_PROTOTYPES, RETURN_IN_MEMORY, STRUCT_VALUE_REGNUM, STRUCT_VALUE, STRUCT_VALUE_INCOMING_REGNUM, STRUCT_VALUE_INCOMING, EXPAND_BUILTIN_SAVEREGS, SETUP_INCOMING_VARARGS, STRICT_ARGUMENT_NAMING, PRETEND_OUTGOING_VARARGS_NAMED): Convert to hooks. * config/alpha/alpha.c (alpha_output_mi_thunk_osf): Pass function to aggregate_value_p. * config/arm/arm.c (arm_init_cumulative_args, arm_output_mi_thunk): Likewise. * config/i386/i386.c (ix86_return_pops_args, x86_this_parameter): Likewise. * config/mips/mips.c (mips_save_reg_p, mips_expand_prologue, mips_can_use_return_insn): Likewise. * config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise. * config/s390/s390.c (s390_output_mi_thunk): Likewise. * config/sparc/sparc.c (sparc_output_mi_thunk): Pass function to aggregate_value_p. * config/story16/stormy16.c (xstormy16_asm_output_mi_thunk): Pass function to aggregate_value_p. * objc/objc-act.c (generate_struct_by_value_array): Pass NULL to aggregate_value_p. * config/sh/sh-protos.h (sh_builtin_saveregs): Remove. (sh_attr_renesas_p, sh_cfun_attr_renesas_p, sh_function_arg, sh_function_arg_advance, sh_pass_in_reg_p): New. * config/sh/sh.c (sh_handle_renesas_attribute, sh_promote_prototypes, sh_struct_value_rtx, sh_return_in_memory, sh_builtin_saveregs, sh_setup_incoming_varargs, sh_strict_argument_naming, sh_pretend_outgoing_varargs_named): New decls. (targetm): Add new hooks. (calc_live_regs): Save MACL and MACH if the function has the renesas attribute. (sh_expand_prologue): Support renesas attribute. (sh_builtin_saveregs): Make static. (sh_build_va_list): Support renesas attribute. (sh_va_start): Likewise. (sh_va_arg): Likewise. (sh_promote_prototypes): New. (sh_function_arg): New, moved from sh.h. Support renesas attribute. (sh_function_arg_advance): Likewise. (sh_return_in_memory): Likewise. (sh_strict_argument_naming): Likewise. (sh_pretend_outgoing_varargs_named): Likewise. (sh_struct_value_rtx): New. (sh_attribute): Add renesas attribute. (sh_handle_renesas_attribute): New. (sh_attr_renesas_p, sh_cfun_attr_renesas_p): New. (sh_ms_bitfield_layout_p): Support renesas attribute also. (sh_output_mi_thunk): Pass function to aggregate_value_p. * config/sh/sh.h (TARGET_SWITCHES): Add -mrenesas as an alias for -mhitachi. (STRUCT_VALUE_REGNUM, STRUCT_VALUE, RETURN_IN_MEMORY): Moved to target hooks. (sh_args): Add renesas_abi flag. (INIT_CUMULATIVE_ARGS): Set it. Pass fndecl to aggregate_value_p. (FUNCTION_ARG_ADVANCE, FUNCTION_ARG): Move to sh.c. (PASS_IN_REG_P): Support renesas attribute. Pass DF and TF on the stack for the renesas abi. (STRICT_ARGUMENT_NAMING, PRETEND_OUTGOING_VARARGS_NAMED, SETUP_INCOMING_VARARGS, EXPAND_BUILTIN_SAVEREGS, PROMOTE_PROTOTYPES): Moved to sh.c. * config/sh/sh.md (call): Set call cookie to indicate renesas calls. * decl.c (finish_function): Pass fndecl to aggregate_value_p. * misc.c (default_pass_by_ref): Convert to calls.return_in_memory hook. From-SVN: r71048
2003-09-03re PR c++/12053 (ABI difference between default g++ 3.3 and g++ 3.2)Mark Mitchell2-1/+18
PR c++/12053 * class.c (include_empty_classes): Correct logic for ABI version 1. PR c++/12053 * g++.dg/abi/layout4.C: New test. From-SVN: r71036
2003-09-03optimize.c (optimize_function): Push/pop ggc context around the call to ↵Richard Henderson2-0/+28
optimize_inline_calls. * optimize.c (optimize_function): Push/pop ggc context around the call to optimize_inline_calls. From-SVN: r71034
2003-09-02re PR c++/11553 (g++ accepts duplicate 'friend')Scott Brumbaugh2-1/+10
PR c++/11553 * parser.c (cp_parser_decl_specifier_seq): Add check for a duplicate friend decl-specifier. PR c++/11553 * g++.dg/parse/friend3.C: New test. From-SVN: r71008
2003-09-02re PR c++/11847 (reference does not work as template argument any more)Mark Mitchell2-2/+9
PR c++/11847 * pt.c (convert_nontype_argument): Correct representation of REFERENCE_TYPE expressions. PR c++/11847 * g++.dg/template/class1.C: New test. From-SVN: r71003
2003-09-02re PR c++/11808 (Wrong namespace lookup for template function when induced ↵Mark Mitchell5-29/+49
by a template parameter) PR c++/11808 * cp-tree.h (KOENIG_LOOKUP_P): New macro. (finish_call_expr): Change prototype. * parser.c (cp_parser_postfix_expression): Adjust call to finish_call_expr. * pt.c (tsubst_copy_and_build): Use KOENIG_LOOKUP_P. * semantics.c (finish_call_expr): Add koenig_p parameter. PR c++/11808 * g++.dg/expr/call1.C: New test. From-SVN: r70998
2003-09-01re PR c++/12114 ([3.3.2] Uninitialized memory accessed in dtor)Mark Mitchell6-27/+86
PR c++/12114 * g++.dg/init/ref9.C: New test. PR c++/11972 * g++.dg/template/nested4.C: New test. PR c++/12114 * cp-tree.h (initialize_reference): Change prototype. * call.c (initialize_reference): Add cleanup parameter. * decl.c (grok_reference_init): Likewise. (check_initializer): Likewise. (cp_finish_decl): Insert a CLEANUP_STMT if necessary. (duplicate_decls): When replacing an anticipated builtin, do not honor TREE_NOTHROW. * typeck.c (convert_for_initialization): Correct call to initialize_reference. PR c++/11972 * pt.c (dependent_type_p_r): Pass only the innermost template arguments to any_dependent_template_arguments_p. From-SVN: r70981
2003-09-01c-typeck.c (build_binary_op): Kill BIT_ANDTC_EXPR.Josef Zlomek5-5/+8
* c-typeck.c (build_binary_op): Kill BIT_ANDTC_EXPR. * convert.c (convert_to_integer): Kill BIT_ANDTC_EXPR. * fold-const.c (int_const_binop): Kill BIT_ANDTC_EXPR. (fold): Kill BIT_ANDTC_EXPR and label bit_and. * tree.def (BIT_ANDTC_EXPR): Kill. * error.c (dump_expr): Kill BIT_ANDTC_EXPR. * lex.c (init_operators): Kill BIT_ANDTC_EXPR. * pt.c (tsubst_copy): Kill BIT_ANDTC_EXPR. * typeck.c (build_binary_op): Kill BIT_ANDTC_EXPR. (tsubst_copy_and_build): Kill BIT_ANDTC_EXPR. * com.c (ffecom_overlap_): Kill BIT_ANDTC_EXPR. (ffecom_tree_canonize_ref_): Kill BIT_ANDTC_EXPR. From-SVN: r70972
2003-08-30re PR c++/12093 (inconstitent error with templates/non-templates)Mark Mitchell2-0/+9
2003-08-29 Mark Mitchell <mark@codesourcery.com> PR c++/12093 * pt.c (build_non_dependent_expr): Do not build a NON_DEPENDENT_EXPR for a STRING_CST. 2003-08-29 Mark Mitchell <mark@codesourcery.com> PR c++/12093 * g++.dg/template/non-dependent4.C: New test. From-SVN: r70941
2003-08-30Add missing ChangeLog entryMark Mitchell1-0/+8
From-SVN: r70937
2003-08-29re PR c++/11928 (c++ typedef handling)Mark Mitchell2-2/+27
PR c++/11928 * search.c (add_conversions): Avoid adding two conversion operators for the same type. PR c++/11928 * g++.dg/inherit/conv1.C: New test. From-SVN: r70934
2003-08-29tree-optimize.c: New file.Richard Henderson6-252/+76
gcc/ * tree-optimize.c: New file. * Makefile.in (OBJS-archive): Add tree-optimize.o. (tree-optimize.o): New. * c-decl.c (store_parm_decls): Use allocate_struct_function. (finish_function): Don't free_after_parsing or free_after_compilation. (set_save_expr_context): Move to tree-optimize.c. (c_expand_body_1): Use tree_rest_of_compilation. * c-lang.c (LANG_HOOKS_RTL_EXPAND_STMT): New. * objc/objc-lang.c (LANG_HOOKS_RTL_EXPAND_STMT): New. * c-objc-common.c (expand_deferred_fns): Don't emit unused inlines; iterate until closure. * langhooks-def.h (LANG_HOOKS_RTL_EXPAND_START, LANG_HOOKS_RTL_EXPAND_STMT, LANG_HOOKS_RTL_EXPAND_END): New. (LANG_HOOKS_RTL_EXPAND_INITIALIZER): New. * langhooks.h (struct lang_hooks_for_rtl_expansion): New. * toplev.h (tree_rest_of_compilation): Declare it. gcc/cp/ * cp-lang.c (LANG_HOOKS_RTL_EXPAND_START): New. (LANG_HOOKS_RTL_EXPAND_STMT): New. * cp-tree.h (cxx_expand_function_start): Declare. * decl.c (start_function): Use allocate_struct_function. Move stmts_are_full_exprs_p assertion from expand_body. Do not free_after_parsing or free_after_compilation. (cxx_push_function_context): Move code to set struct function data from genrtl_start_function. * optimize.c (optimize_function): Don't inc/dec function_depth. * semantics.c (expand_body): Use tree_rest_of_compilation. (cxx_expand_function_start): Rename from genrtl_start_function, omit bits done by tree_rest_of_compilation. (genrtl_finish_function): Remove. (clear_decl_rtl): Move to ../tree-optimize.c. Co-Authored-By: Jason Merrill <jason@redhat.com> From-SVN: r70933
2003-08-29re PR middle-end/6196 (ICE in copy_to_mode_reg, at explow.c:711)Mark Mitchell2-7/+13
PR c++/6196 * pt.c (tsubst_copy_and_build): Correct handling of address-of-label extension. * semantics.c (finish_goto_stmt): The address of a label must go through the lvalue-to-rvalue conversion. PR c++/6196 * g++.dg/ext/label1.C: New test. * g++.dg/ext/label2.C: Likewise. From-SVN: r70932
2003-08-29re PR c++/11811 (Weird message with default template arguments)Gabriel Dos Reis4-3/+35
PR c++/11811 * cxx-pretty-print.c (pp_cxx_canonical_template_parameter): New function. * cxx-pretty-print.h: Declare. * error.c (dump_template_parameter): Use it. (dump_type): Likewise. From-SVN: r70905
2003-08-29init.c (decl_constant_value): Deal with COND_EXPR specially.Mark Mitchell3-2/+21
* init.c (decl_constant_value): Deal with COND_EXPR specially. * call.c (build_conditional_expr): Revert previous patch. * g++.dg/expr/cond3.C: New test. From-SVN: r70899
2003-08-28re PR rtl-optimization/5079 (Reference to static const int not eliminated ↵Mark Mitchell2-0/+8
during optimization) PR optimization/5079 * call.c (build_conditional_expr): Use decl_constant_value to simplify the arguments. PR optimization/5079 * g++.dg/opt/static3.C: New test. From-SVN: r70881
2003-08-27parser.c (struct cp_token): Use enum bitfields.Dan Nicolaescu2-20/+28
2003-08-26 Dan Nicolaescu <dann@ics.uci.edu> * parser.c (struct cp_token): Use enum bitfields. (CP_TOKEN_BLOCK_NUM_TOKENS): Make sure cp_token_block fits in a 512B allocation unit. (cp_parser_token_tree_map_node): Use enum bitfields. From-SVN: r70837
2003-08-26re PR c++/11871 (Koenig lookup regression)Nathan Sidwell2-1/+7
cp: PR c++/11871 * decl.c (push_class_level_binding): Correct old_decl value from my 2003-07-29 reorganization. testsuite: PR c++/11871 * c++.dg/lookup/crash1.C: New test. From-SVN: r70803
2003-08-26builtins.c (build_function_call_expr): Don't set TREE_SIDE_EFFECTS here.Nathan Sidwell3-11/+13
* builtins.c (build_function_call_expr): Don't set TREE_SIDE_EFFECTS here. * expr.c (emit_block_move_via_libcall): Likewise. (clear_storage_via_libcall): Likewise. * tree.c (build): Set TREE_SIDE_EFFECTS for non-const, non-pure CALL_EXPRs. cp: * call.c (build_call): Don't set TREE_SIDE_EFFECTS here. (build_new_method_call): Add goto finish. * semantics.c (simplify_aggr_init_exprs_r): Don't set TREE_SIDE_EFFECTS on a call. testsuite: * c++.dg/warn/noeffect3.C: New test. From-SVN: r70802
2003-08-25Fix thinkoGabriel Dos Reis1-1/+0
From-SVN: r70783
2003-08-25* cxx-pretty-print.c (pp_cxx_class_name): Remove unused function.Richard Henderson2-6/+4
From-SVN: r70782
2003-08-25pretty-print.h (pp_maybe_newline_and_indent): New macro.Gabriel Dos Reis3-215/+1260
* pretty-print.h (pp_maybe_newline_and_indent): New macro. * c-pretty-print.h (c_pretty_printer): Now typedef to the structure. Be consistent with pretty-print.h abd cxx-pretty-print.h (struct c_pretty_print_info): Document. Add new fields. (pp_type_specifier_seq): Rename from pp_c_type_specifier. (pp_direct_abstract_declarator): New macro. (pp_ptr_operator): Likewise. (pp_simple_type_specifier): Likewise. (pp_expression): Likewise. (pp_parameter_list): Rename from pp_parameter_declaration. * c-pretty-print.c (pp_c_whitespace): Now a function. (pp_c_left_paren): Likewise. (pp_c_right_paren): Likewise. (pp_c_dot): Likewise. (pp_c_ampersand): Likewise. (pp_c_arrow): Likewise. (pp_c_semicolon): Likewise. (pp_c_type_cast): New function. (pp_c_space_for_pointer_operator): Likewise. (pp_c_call_argument_list): Likewise. (pp_c_cv_qualifier): Adjust prototype. (pp_c_type_qualifier_list): Likewise. (pp_c_pointer): Likewise. Handle REFERENCE_TYPE here. (pp_c_type_specifier): Rename from pp_c_simple_type_specifier. Adjust to follow standard grammar. (pp_c_specifier_qualifier_list): Adjusr prototype. Handle REFERENCE_TYPE. Tidy. (pp_c_parameter_type_list): Adjust prototype. Tidy. (pp_c_parameter_declaration): Remove. (pp_c_abstract_declarator): Adjust prototype. (pp_c_direct_abstract_declarator): Likewise. (pp_c_type_id): Likewise. (pp_c_storage_class_specifier): Likewise. (pp_c_function_specifier): Likewise. (pp_c_declaration_specifiers): Likewise. (pp_c_direct_declarator): Likewise. (pp_c_declarator): Likewise. (pp_c_declarator): Likewise. (pp_c_declaration): Likewise. (pp_c_attributes): Likewise. Tidy. (pp_c_function_definition): Adjust prototype. (pp_c_char): Likewise. (pp_c_string_literal): Likewise. (pp_c_integer_constant): Likewise. (pp_c_character_constant): Likewise. (pp_c_bool_constant): Likewise. (pp_c_enumeration_constant): Likewise. (pp_c_floating_constant): Likewise. (pp_c_constant): Likewise. (pp_c_identifier): Likewise. (pp_c_primary_expression): Likewise. Remove TARGET_EXPR case. Tidy. (pp_c_initializer): Adjust prototype. (pp_c_init_declarator): Likewise. (pp_c_initializer_list): Likewise. (pp_c_id_expression): Likewise. (pp_c_postfix_expression): Likewise. (pp_c_expression_list): Likewise. (pp_c_unary_expression): Likewise. (pp_c_cast_expression): Likewise. (pp_c_multiplicative_expression): Likewise. (pp_c_additive_expression): Likewise. (pp_c_shift_expression): Likewise. (pp_c_relational_expression): Likewise. (pp_c_equality_expression): Likewise. (pp_c_and_expression): Likewise. (pp_c_exclusive_or_expression): Likewise. (pp_c_inclusive_or_expression): Likewise. (pp_c_logical_and_expression): Likewise. (pp_c_logical_or_expression): Likewise. (pp_c_conditional_expression): Likewise. (pp_c_assignment_expression): Likewise. (pp_c_expression): Likewise. Tidy. (pp_c_statement): Likewise. Document. (pp_c_pretty_printer_init): Adjust prototype. Tidy. * c-lang.c (c_initialize_diagnostics): Update. * c-common.h (strip_pointer_operator): Declare. * c-common.c (strip_pointer_operator): Define. cp/ * cxx-pretty-print.h (pp_cxx_flag_default_argument): New flag. (cxx_pretty_printer): Adjust base type. (pp_cxx_function_specifier): Declare. * cxx-pretty-print.c (pp_cxx_whitespace): New macro. (pp_cxx_left_paren): Likewise. (pp_cxx_right_paren): Likewise. (pp_cxx_dot): Likewise. (pp_cxx_arrow): Likewise. (pp_cxx_semicolon): Likewise. (pp_cxx_identifier): Likewise. (pp_cxx_cv_qualifier_seq): Likewise. (pp_cxx_storage_class_specifier): Likewise. (pp_cxx_expression_list): Likewise. (pp_cxx_space_for_pointer_operator): Likewise. (pp_cxx_init_declarator): Likewise. (pp_cxx_call_argument_list): Likewise. (pp_cxx_nonconsecutive_character): Tidy. (pp_cxx_conversion_function_id): New function. (pp_cxx_template_id): Likewise. (pp_cxx_class_name): Likewise. (pp_cxx_template_keyword_if_needed): Likewise. (pp_cxx_nested_name_specifier): Likewise. (pp_cxx_unqualified_id): Tidy (pp_cxx_qualified_id): Handle more nodes. (pp_cxx_primary_expression): Tidy. (pp_cxx_postfix_expression): Likewise. (pp_cxx_new_expression): Tidy. (pp_cxx_delete_expression): Likewise. (pp_cxx_cast_expression): New function. (pp_cxx_pm_expression): Tidy. (pp_cxx_conditional_expression): Likewise. (pp_cxx_assignment_operator): New function. (pp_cxx_assignment_expression): Tidy. (pp_cxx_expression): New function. (pp_cxx_function_specifier): Likewise. (pp_cxx_decl_specifier_seq): Likewise. (pp_cxx_simple_type_specifier): Tidy. (pp_cxx_type_specifier_seq): Likewise. (pp_cxx_ptr_operator): New function. (pp_cxx_implicit_parameter_type): Likewise. (pp_cxx_parameter_declaration): Tidy. (pp_cxx_parameter_declaration_clause): New function. (pp_cxx_exception_specification): Likewise. (pp_cxx_direct_declarator): Tidy. (pp_cxx_declarator): Likewise. (pp_cxx_ctor_initializer): New function. (pp_cxx_function_definition): Likewise. (pp_cxx_abstract_declarator): Tidy. (pp_cxx_direct_abstract_declarator): Likewise. (pp_cxx_type_id): Likewise. (pp_cxx_exception_declaration): New function. (pp_cxx_statement): Likewise. (pp_cxx_simple_declaration): Likewise. (pp_cxx_template_parameter_list): Likewise. (pp_cxx_template_parameter): Likewise. (pp_cxx_template_declaration): Likewise. (pp_cxx_explicit_specialization): Likewise. (pp_cxx_explicit_instantiation): Likewise. (pp_cxx_declaration): Tidy. (pp_cxx_pretty_printer_init): Initialize more fields. From-SVN: r70777
2003-08-25re PR target/8795 ([PPC] Altivec related bugs concerning gcc 3.3 and mainline)Mark Mitchell9-75/+62
PR c++/8795 * tree.h (build_method_type_directly): Declare. * c-common.c (handle_vector_size_attributes): Handle METHOD_TYPEs. (vector_size_helper): Likewise. * tree.c (build_method_type_directly): New function. (build_method_type): Use it. PR c++/8795 * cp-tree.h (build_cplus_method_type): Remove. * call.c (standard_conversion): Use build_method_type_directly instead of build_cplus_method_type. * class.c (build_clone): Likewise. (adjust_clone_args): Likewise. * decl.c (build_ptrmem_type): Likewise. (grokdeclarator): Likewise. (check_function_type): Likewise. * decl2.c (grok_method_quals): Likewise. (maybe_retrofit_in_chrg): Likewise. * pt.c (copy_default_args_to_explicit_spec): Likewise. (tsubst_function_type): Likewise. (tsubst): Likewise. * tree.c (build_cplus_method_type): Remove. * typeck.c (merge_types): Use build_method_type_directly. PR c++/8795 * g++.dg/ext/altivec-1.C: New test. From-SVN: r70773