2002-01-02 Phil Edwards <pme@gcc.gnu.org>
* include/bits/stl_algo.h (upper_bound, equal_range, binary_search):
Change concept checks, as with lower_bound and PR 2054.
* testsuite/ext/concept_checks.cc: Expand test to include those.
From-SVN: r48492
* c-decl.c (c_expand_body): Call outlining_inline_function when
emitting an inline function out of line.
* semantics.c (expand_body): Call outlining_inline_function when
emitting an inline function out of line.
From-SVN: r48479
* dwarf2out.c (limbo_die_node): Add created_for member.
(new_die): New argument created_for. Update all callers.
(mark_limbo_die_list): New.
(dwarf2out_init): Register limbo_die_list as a root.
(dwarf2out_finish): Force insert limbo dies into their function
context.
From-SVN: r48478
cp:
PR c++/5116, c++/764 reversion
* call.c (build_new_op): Revert the instantiations. They are
incorrect.
testsuite:
* g++.dg/template/friend2.C: Remove as patch is reverted.
From-SVN: r48474
cp:
PR c++/3716
* pt.c (tsubst_aggr_type): Move pmf handling into tsubst.
(tsubst, case POINTER_TYPE): Handle pmfs here.
(tsubst, case OFFSET_TYPE): Check it is not an offset to
reference. If it is offset to FUNCTION_TYPE, create a METHOD_TYPE.
testsuite:
* g++.dg/template/ptrmem1.C: New test.
* g++.dg/template/ptrmem2.C: New test.
From-SVN: r48471
cp:
PR c++/35
* cp-tree.h (DECL_LANG_FLAG_0): Used for PARM_DECL too.
(DECL_TEMPLATE_PARM_P): A PARM_DECL might be one too.
* pt.c (process_template_parm): SET_DECL_TEMPLATE_PARM_P on the
PARM_DECL.
(tsubst_template_parms): Break up loop statements.
(tsubst_decl, case PARM_DECL): Copy DECL_TEMPLATE_PARM_P. Template
parm PARM_DECLs don't get promoted.
testsuite:
* g++.dg/template/ntp.C: New test.
From-SVN: r48470
cp:
PR c++/5123
* typeck.c (build_component_ref): Cope with a TEMPLATE_ID_EXPR.
(build_x_function_call): Cope with a COMPONENT_REF containing a
TEMPLATE_ID_EXPR.
testsuite:
* g++.dg/other/component1.C: New test.
From-SVN: r48469
cp:
PR c++/5213
* pt.c (convert_template_argument): Be more careful determining
when RECORD_TYPE templates are or are not templates.
testsuite:
* g++.dg/template/ttp3.C: New test.
From-SVN: r48468
cp:
PR c++/775
* cp-tree.h (handle_class_head): Adjust prototype.
* decl2.c (handle_class_head): Add DEFN_P and NEW_TYPE_P
parameters. Use for all class heads.
* parse.y (named_class_head_sans_basetype, named_class_head,
named_complex_class_head_sans_basetype,
named_class_head_sans_basetype_defn,
unnamed_class_head): Remove.
(class_head, class_head_apparent_template): Recognize class heads
(class_head_decl, class_head_defn): New reductions. Process class
heads.
(structsp): Adjust class definition and class declaration
reductions.
(maybe_base_class_list): Give diagnostic on empty list.
testsuite:
* g++.dg/template/friend2.C: New test.
* g++.old-deja/g++/brendan/crash8.C: Adjust location of error.
From-SVN: r48466
cp:
PR c++/4379
* typeck.c (build_x_unary_op): Don't destroy the OFFSET_REF on a
single non-static member.
(unary_complex_lvalue): If it cannot be a pointer to member, don't
make it so. Check it is not pointer to reference.
testsuite:
* g++.dg/other/ptrmem1.C: New test.
* g++.dg/other/ptrmem2.C: New test.
From-SVN: r48465
cp:
PR c++/5132
* decl2.c (reparse_absdcl_as_casts): Don't digest_init if we
are processing a template decl.
testsuite:
* g++.dg/template/ctor1.C: New test.
From-SVN: r48464
* c-common.h (genrtl_expr_stmt_value): Declare.
* c-semantics.c (genrtl_goto_stmt): Redirect to...
(genrtl_goto_stmt_value): ... this new function. Pass new
argument down to expand_expr_stmt_value, taking
TREE_ADDRESSABLE into account.
* c-common.c (c_expand_expr): Mark the last EXPR_STMT of a
STMT_EXPR as addressable, i.e., one whose result we want.
* expr.c (expand_expr): Don't save expression statement value
of labeled_blocks or loop_exprs.
* stmt.c (expand_expr_stmt): Redirect to...
(expand_expr_stmt_value): ... this new function. Use new
argument to tell whether to save expression value.
(expand_end_stmt_expr): Reset last_expr_type and
last_expr_value if we don't have either.
* tree-inline.c (declare_return_variable): Mark its use
statement as addressable.
* tree.h: Document new use of TREE_ADDRESSABLE.
(expand_expr_stmt_value): Declare.
From-SVN: r48456
* configure.in: Prepend ${srcdir}/config/${cpu_type}/ instead of
${srcdir}/ginclude/ to every entry in extra_headers.
* configure: Regenerate.
* ginclude/math-3300.h: Rename to config/m68k/math-3300.h.
* ginclude/math-68881.h: Rename to config/m68k/math-68881.h.
* ginclude/ppc-asm.h: Rename to config/rs6000/ppc-asm.h.
* ginclude/proto.h: Rename to config/convex/proto.h.
From-SVN: r48454
* attribs.c (handle_vector_size_attribute): Use host_integerp
and tree_int_cst; remove warnings.
* caller-save.c (insert_restore): Add cast to get rid of warning.
(insert_save): Likewise.
* emit-rtl.c (adjust_address_1, offset_address): Likewise.
* regmove.c (find_matches): Add temporary var to kill a warning.
From-SVN: r48452
* config/mmix/mmix.md: Update FIXME to not mention
define_constants.
(MMIX_rJ_REGNUM): New define_constants constant.
("movqi", "movsi", "movdi", "*movdicc_real_foldable",
"*movdicc_real"): Adjust contraints formatting.
("*bCC_foldable"): Add %+ for P in output format and delete FIXME
for branch prediction.
("*bCC", "*bCC_inverted_foldable", "*bCC_inverted"): Add %+ in
output template.
("*call_real", "*call_value_real", "nonlocal_goto_receiver",
"*nonlocal_goto_receiver_expanded"): Use MMIX_rJ_REGNUM instead of
number. Delete related FIXMEs.
* config/mmix/mmix.h (MMIX_INCOMING_RETURN_ADDRESS_REGNUM): Change
from number to MMIX_rJ_REGNUM.
(TARGET_MASK_BRANCH_PREDICT): New.
(TARGET_DEFAULT): Change to TARGET_MASK_BRANCH_PREDICT.
(TARGET_SWITCHES): Update comment. Correct -mno-toplevel-symbols
value. Add -mbranch-predict and -mno-branch-predict.
(TARGET_VERSION): Drop date.
(ADDITIONAL_REGISTER_NAMES): Use MMIX_rJ_REGNUM, not number.
* config/mmix/mmix.c (mmix_encode_section_info): Correct condition
for finding out global symbols.
(mmix_asm_output_labelref): Revert condition for global symbol.
(mmix_print_operand): <case '+'>: Emit P for a likely branch.
(mmix_print_operand_punct_valid_p): A '+' is valid.
From-SVN: r48448
2002-01-01 Roger Sayle <roger@eyesopen.com>
* libmath/stubs.c (sinf,cosf): Implement stubs to enable the
equivalent ___builtin__ versions.
* include/c_shadow/bits/std_cmath.h: All __builtin math functions
are available in libstdc++ as the necessary stub implementations
are provided by libmath/stubs.c.
From-SVN: r48445