Alan Modra [Tue, 15 Nov 2005 00:59:21 +0000 (00:59 +0000)]
re PR rtl-optimization/22002 (internal consistency failure with -funroll-loops)
PR rtl-optimization/22002
* combine.c (distribute_notes): Detect cases where a reg dies
two or more times in a bb, including on the insn we are combining,
and place the death note on the correct range.
Dale Johannesen [Tue, 15 Nov 2005 00:45:55 +0000 (00:45 +0000)]
expmed.c (store_bit_field): Add offset unconditionally for memory targets.
2005-11-14 Dale Johannesen <dalej@apple.com>
* expmed.c (store_bit_field): Add offset unconditionally for
memory targets.
(extract_bit_field): Don't force extzv or extv operand into
a register if field is too big.
* config/arm/arm.c (pic_labelno): New.
(arm_load_pic_register): Use an UNSPEC_PIC_LABEL instead of a
LABEL_REF. Pass only the labelno to PIC insns.
(arm_call_tls_get_addr, legitimize_tls_address): Likewise.
(arm_output_addr_const_extra): Handle UNSPEC_PIC_LABEL.
* arm.md (UNSPEC_PIC_LABEL): New constant.
(pic_add_dot_plus_four, pic_add_dot_plus_eight)
(tls_load_dot_plus_eight): Expect a labelno instead of a LABEL_REF.
Use the correct label prefix.
Mark Mitchell [Mon, 14 Nov 2005 05:45:45 +0000 (05:45 +0000)]
re PR c++/24817 (g++ accepts multiple function template declarations even if exception-specification doesn't match.)
PR c++/24817
* decl.c (check_redeclaration_exception_specification): New
function.
(duplicate_decls): Use it.
* error.c (fndecl_to_string): Print the template parameter list.
PR c++/24817
* g++.dg/eh/spec8.C: New test.
Mark Mitchell [Mon, 14 Nov 2005 01:45:19 +0000 (01:45 +0000)]
re PR c++/20293 (Wrong diagnostic for ambiguous access)
PR c++/20293
* cxx-pretty-print.c (pp_cxx_statement): Print qualifying scopes
for namespaces.
(pp_cxx_original_namespace_definition): Likewise.
* name-lookup.c (ambiguous_decl): Don't issue error messages;
instead return lists of ambiguous candidates.
(select_decl): Handle ambiguous namespace lookups.
* parser.c (cp_token): Add ambiguous_p.
(cp_lexer_get_preprocessor_token): Set it.
(cp_parser_diagnose_invalid_type_name): Avoid duplicate messages
when a qualified name uses an invalid scope.
(cp_parser_primary_expression): Print ambiguous candidates.
(cp_parser_type_parameter): Adjust comment to reflect new
parameter name for cp_parser_lookup_name.
(cp_parser_template_argument): Likewise.
(cp_parser_elaborated_type_specifier): Likewise.
(cp_parser_namespace_name): Likewise.
(cp_parser_class_name): Print ambiguous candidates.
(cp_parser_lookup_name): Rename ambiguous_p parameter to
ambiguous_decls. Use it to return a list of ambiguous candiates
when a lookup is ambiguous.
(cp_parser_lookup_name_simple): Adjust comment to reflect new
parameter name for cp_parser_lookup_name.
Paolo Carlini [Sun, 13 Nov 2005 12:14:51 +0000 (12:14 +0000)]
[multiple changes]
2005-11-13 Jonathan Wakely <redi@gcc.gnu.org>
* include/tr1/boost_shared_ptr.h (get_deleter):
Declare before shared_ptr.
(shared_ptr<>): Declare get_deleter as friend.
(shared_ptr<>:_M_get_deleter): Private.
2005-11-13 Douglas Gregor <doug.gregor@gmail.com>
PR libstdc++/24818
* include/tr1/ref_wrap_iterate.h
(reference_wrapper::operator()()): Don't dereferene the result of
get() before calling it; it's already a reference.
* testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc:
Test nullary calls to reference_wrappers.
Paolo Carlini [Sun, 13 Nov 2005 12:14:15 +0000 (12:14 +0000)]
[multiple changes]
2005-11-13 Jonathan Wakely <redi@gcc.gnu.org>
* include/tr1/boost_shared_ptr.h (get_deleter):
Declare before shared_ptr.
(shared_ptr<>): Declare get_deleter as friend.
(shared_ptr<>:_M_get_deleter): Private.
2005-11-13 Douglas Gregor <doug.gregor@gmail.com>
PR libstdc++/24818
* include/tr1/ref_wrap_iterate.h
(reference_wrapper::operator()()): Don't dereferene the result of
get() before calling it; it's already a reference.
* testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc:
Test nullary calls to reference_wrappers.
* intrinsics/fget.c: New file.
* intrinsics/ftell.c: New file.
* io/unix.c (stream_offset): New function.
* io/io.h: Add prototype for stream_offset.
* Makefile.am: Add intrinsics/fget.c and intrinsics/ftell.c.
* Makefile.in: Regenerate.
* intrinsic.c (add_functions): Add COMPLEX, FTELL, FGETC, FGET,
FPUTC, FPUT, AND, XOR and OR intrinsic functions.
(add_subroutines): Add FGETC, FGET, FPUTC, FPUT and FTELL intrinsic
subroutines.
* gfortran.h: Add GFC_ISYM_AND, GFC_ISYM_COMPLEX, GFC_ISYM_FGET,
GFC_ISYM_FGETC, GFC_ISYM_FPUT, GFC_ISYM_FPUTC, GFC_ISYM_FTELL,
GFC_ISYM_OR, GFC_ISYM_XOR.
* iresolve.c (gfc_resolve_and, gfc_resolve_complex,
gfc_resolve_or, gfc_resolve_fgetc, gfc_resolve_fget,
gfc_resolve_fputc, gfc_resolve_fput, gfc_resolve_ftell,
gfc_resolve_xor, gfc_resolve_fgetc_sub, gfc_resolve_fget_sub,
gfc_resolve_fputc_sub, gfc_resolve_fput_sub, gfc_resolve_ftell_sub):
New functions.
* check.c (gfc_check_complex, gfc_check_fgetputc_sub,
gfc_check_fgetputc, gfc_check_fgetput_sub, gfc_check_fgetput,
gfc_check_ftell, gfc_check_ftell_sub, gfc_check_and): New functions.
* simplify.c (gfc_simplify_and, gfc_simplify_complex, gfc_simplify_or,
gfc_simplify_xor): New functions.
* trans-intrinsic.c (gfc_conv_intrinsic_function): Add cases for
GFC_ISYM_AND, GFC_ISYM_COMPLEX, GFC_ISYM_FGET, GFC_ISYM_FGETC,
GFC_ISYM_FPUT, GFC_ISYM_FPUTC, GFC_ISYM_FTELL, GFC_ISYM_OR and
GFC_ISYM_XOR.
* intrinsic.h: Add prototypes for all functions added to iresolve.c,
simplify.c and check.c.
* gfortran.dg/complex_intrinsic_1.f90: New test.
* gfortran.dg/complex_intrinsic_2.f90: New test.
* gfortran.dg/fgetc_1.f90: New test.
* gfortran.dg/fgetc_2.f90: New test.
* gfortran.dg/fgetc_3.f90: New test.
* gfortran.dg/ftell_1.f90: New test.
* gfortran.dg/ftell_2.f90: New test.
* gfortran.dg/gnu_logical_1.F: New test.
* gfortran.dg/gnu_logical_2.f90: New test.
Jason Merrill [Sun, 13 Nov 2005 07:34:50 +0000 (02:34 -0500)]
re PR c++/22489 (ICE in dwarf2out_finish with using namespace in a local class and compiler built constructors)
PR c++/22489
* dwarf2out.c (gen_subprogram_die): Force a declaration die for
lazily declared methods.
(force_decl_die): Stop if forcing out the context already make a
DIE for the decl.
(force_type_die): Likewise.
Steven Bosscher [Fri, 11 Nov 2005 19:34:39 +0000 (19:34 +0000)]
re PR target/24265 (ICE: in extract_insn, at recog.c:2084 with -O -fgcse -fmove-loop-invariants -mtune=pentiumpro)
PR 24265
* loop-invariant.c (may_assign_reg_p): Make sure a hard register
can be assigned to.
(find_invariant_insn): Do the cheapest check, may_assign_reg_p,
before check_maybe_invariant.
(move_invariant_reg): Use gen_move_insn instead of replacing
SET_DEST with the temporary for the invariant.
(move_loop_invariants): If checking is enabled, do internal
consistency checks after completing the pass.
Jie Zhang [Fri, 11 Nov 2005 17:58:31 +0000 (17:58 +0000)]
bfin.c (bfin_expand_strmov): Correctly move the trailing bytes when align is 2.
* config/bfin/bfin.c (bfin_expand_strmov): Correctly move the trailing
bytes when align is 2.
* config/bfin/bfin.md (rep_movsi, rep_movhi): Make LSETUP be followed
by the first instruction of the loop.
Ulrich Weigand [Fri, 11 Nov 2005 09:38:52 +0000 (09:38 +0000)]
postreload.c (reload_cse_simplify_operands): Fix bug in sorting algorithm so as to choose the best, not the worst, alternative.
* postreload.c (reload_cse_simplify_operands): Fix bug in sorting
algorithm so as to choose the best, not the worst, alternative.
Reset accumulated register class before processing next alternative.
Paul Thomas [Thu, 10 Nov 2005 22:24:28 +0000 (22:24 +0000)]
re PR fortran/24655 (ICE with statement function)
2005-11-10 Paul Thomas <pault@gcc.gnu.org>
PR fortran/24655
PR fortran/24755
* match.c (recursive_stmt_fcn): Add checks that symtree exists
for the expression to weed out inline intrinsic functions and
parameters.
PR fortran/24409
* module.c (mio_symtree_ref): Correct the patch of 0923 so that
a symbol is not substituted for by a the symbol for the module
itself and to prevent the promotion of a formal argument.
2005-11-10 Paul Thomas <pault@gcc.gnu.org>
PR fortran/24655
PR fortran/24755
* gfortran.dg/recursive_statement_functions.f90: Add statement
functions using inline intrinsic functions and parameters to test
that they no longer seg-fault.
PR fortran/24409
gfortran.dg/nested_modules_4.f90: New test.
gfortran.dg/nested_modules_5.f90: New test.
Jeff Law [Thu, 10 Nov 2005 18:31:07 +0000 (11:31 -0700)]
tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Do not perform reassociation if the parent statement will not die as a result...
* tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Do not
perform reassociation if the parent statement will not die as
a result of the optimization.
Daniel Berlin [Thu, 10 Nov 2005 17:23:49 +0000 (17:23 +0000)]
tree-ssa-alias.c (compute_may_aliases): Remove call to delete_old_heap_vars.
2005-11-10 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-alias.c (compute_may_aliases): Remove call to
delete_old_heap_vars.
* tree-dfa.c (referenced_var_remove): Remove function.
* tree-ssa.c (init_tree_ssa): Call init_alias_heapvars.
(delete_tree_ssa): Remove call to delete_old_heapvars.
Add call to delete_alias_heapvars.
* tree-flow.h (referenced_var_remove): Remove prototype
(init_alias_heapvars): New prototype.
(delete_alias_heapvars): Ditto.
* Makefile.in (tree-ssa-structalias.o): Add
gt-tree-ssa-structalias.o
(GTFILES): Add tree-ssa-structalias.h and
tree-ssa-structalias.c.
(s-gtype): Add gt-tree-ssa-structalias.h.
* tree-ssa-structalias.c (heapvars): Remove.
(oldheapvars): Remove.
(heapvar_for_stmt): New variable.
(heapvar_lookup): New function.
(heapvar_insert): Ditto.
(get_constraint_for): See if we have an old heapvar
to reuse.
(init_alias_heapvars): New function.
(delete_alias_heapvars): Ditto.
Add include of gt-tree-ssa-structalias.h.
Eric Botcazou [Wed, 9 Nov 2005 23:13:08 +0000 (23:13 +0000)]
tree.c (build_qualified_type): Chain the new type to the original type's TYPE_NEXT_PTR_TO or TYPE_NEXT_REF_TO...
* tree.c (build_qualified_type): Chain the new type to the original
type's TYPE_NEXT_PTR_TO or TYPE_NEXT_REF_TO linked lists if it is
a POINTER_TYPE or a REFERENCE_TYPE respectively.
(build_pointer_type_for_mode): Only return unqualified types.
(build_reference_type_for_mode): Likewise.
Jakub Jelinek [Wed, 9 Nov 2005 21:36:06 +0000 (22:36 +0100)]
Makefile.in (gnucompare): Do comparison of all files using one of the chosen methods and only afterwards...
* Makefile.in (gnucompare): Do comparison of all files using one of
the chosen methods and only afterwards decide if just warning should
be issued or comparison failure raised.