François Dumont [Thu, 1 Aug 2013 19:54:46 +0000 (19:54 +0000)]
re PR libstdc++/57779 (vector insert fails to diagnose iterators pointing into *this in debug mode)
2013-08-01 François Dumont <fdumont@gcc.gnu.org>
PR libstdc++/57779
* include/debug/formatter.h (_Debug_msg_id): Add
__msg_insert_itself_range entry.
* include/debug/functions.h (_Insert_range_from_self_is_safe<>):
New, indicate container types supporting self range insertion in
GNU implementation.
(__foreign_iterator): New, check if an iterator points to a given
sequence.
* include/debug/macros.h (__glibcxx_check_insert_range): Add check
using __foreign_iterator.
(__gibcxx_check_insert_range_after): Likewise.
* include/debug/string (_Insert_range_from_self_is_safe<>):
Partially specialized to mark __gnu_debug::basic_string<> as
supporting self range insert.
* include/debug/list (_Insert_range_from_self_is_safe<>):
Partially specialized to mark std::list as supporting self range
insert if _GLIBCXX_DEBUG_PEDANTIC is not defined.
* include/debug/forward_list (_Insert_range_from_self_is_safe<>):
Likewise.
* src/c++11/debug.cc (_S_debug_messages): Add
__msg_insert_itself_range_entry message.
(_Error_formatter::_Parameter::_M_print_description): Display
iterator sequence address rather than sequence address when the
parameter type is an iterator.
(_Error_formatter::_M_print_word): Enhance behavior when
displaying a word with an appended '\n'.
* testsuite/util/debug/checks.h (check_insert4<>): New.
* testsuite/23_containers/deque/debug/insert5_neg.cc: New.
* testsuite/23_containers/vector/debug/insert5_neg.cc: Likewise.
* testsuite/23_containers/vector/debug/insert6_neg.cc: Likewise.
* testsuite/23_containers/vector/debug/57779_neg.cc: Likewise.
* testsuite/23_containers/list/debug/insert5_neg.cc: Likewise.
* testsuite/23_containers/forward_list/debug/insert_after4_neg.cc:
Likewise.
Uros Bizjak [Thu, 1 Aug 2013 19:48:46 +0000 (21:48 +0200)]
i386.h (MAYBE_NON_Q_CLASS_P): New.
* config/i386/i386.h (MAYBE_NON_Q_CLASS_P): New.
* config/i386/i386.c (ix86_secondary_reload): Use INTEGER_CLASS_P and
MAYBE_NON_Q_CLASS_P where appropriate.
Fabien Chêne [Thu, 1 Aug 2013 19:24:37 +0000 (21:24 +0200)]
re PR c++/54537 (undiagnosed using-declaration conflicting with used function)
gcc/cp/
PR c++/54537
* cp-tree.h: Check OVL_USED with OVERLOAD_CHECK.
* name-lookup.c (do_nonmember_using_decl): Make sure we have an
OVERLOAD before calling OVL_USED. Call diagnose_name_conflict
instead of issuing an error without mentioning the conflicting
declaration.
libstdc++-v3/
PR c++/54537
* include/tr1/cmath: Remove pow(double,double) overload, remove a
duplicated comment about DR 550. Add a comment to explain the
issue.
* testsuite/tr1/8_c_compatibility/cmath/pow_cmath.cc: New.
* config/arm/arm.md (peepholes for eq (reg1) (reg2/imm)):
Generate canonical plus rtx with negated immediate instead of minus
where appropriate.
* config/arm/arm.c (thumb2_reorg): Handle ADCS <Rd>, <Rn> case.
Jan Hubicka [Thu, 1 Aug 2013 13:24:49 +0000 (15:24 +0200)]
cgraph.c (cgraph_release_function_body): Use used_as_abstract_origin.
* cgraph.c (cgraph_release_function_body): Use used_as_abstract_origin.
(cgraph_release_function_body): Likewise.
(cgraph_can_remove_if_no_direct_calls_p): Likewise.
* cgraph.h (cgrpah_node): Rename abstract_and_needed
to used_as_abstract_origin.
* tree-inline-transfrom.c (can_remove_node_now_p_1): Do not remove
symbols used as abstract origins.
* cgraphunit.c (analyze_functions): Update.
* ipa.c (symtab_remove_unreachable_nodes): Recompute used_as_abstract_origin.
* tree-inline.c (tree_function_versioning): Update
used_as_abstract_origin; be ready for DECL_RESULT and DECL_ARGUMENTS to be
NULL.
* lto-symtab.c (lto_symtab_merge_symbols): Merge duplicated nodes for abstract functions.
* cgraph.h (symtab_real_symbol_p): Abstract declarations are not real symbols.
Sofiane Naci [Thu, 1 Aug 2013 09:48:48 +0000 (09:48 +0000)]
aarch64.md (define_attr "type"): Delete.
* config/aarch64/aarch64.md (define_attr "type"): Delete.
Include "../arm/types.md". Define "type" attribute for all patterns.
* config/aarch64/aarch64-simd.md (move_lo_quad_<mode>): Update for
attribute changes.
Tim Shen [Wed, 31 Jul 2013 22:36:11 +0000 (22:36 +0000)]
Thompson matcher refactored.
2013-07-31 Tim Shen <timshen91@gmail.com>
Thompson matcher refactored. Fix grouping problem.
* include/bits/regex.h: Use a dispatcher _M_get_matcher().
* include/bits/regex_compiler.h: Tweak for auto switching.
* include/bits/regex_grep_matcher.h: Class structure.
* include/bits/regex_grep_matcher.tcc: _BFSMatcher(Thompson
matcher) refactoring.
* include/bits/regex_nfa.h: Change _Results's interfaces.
* include/std/regex: Includes <map> and <queue>.
* testsuite/28_regex/algorithms/regex_match/extended/53622.cc:
For both matchers.
* testsuite/28_regex/algorithms/regex_match/extended/57173.cc:
For both matchers.
* testsuite/28_regex/algorithms/regex_match/extended/
string_dispatch_01.cc: New.
Michael Meissner [Wed, 31 Jul 2013 20:04:07 +0000 (20:04 +0000)]
predicates.md (fusion_gpr_addis): New predicates to support power8 load fusion.
[gcc]
2013-07-31 Michael Meissner <meissner@linux.vnet.ibm.com>
* config/rs6000/predicates.md (fusion_gpr_addis): New predicates
to support power8 load fusion.
(fusion_gpr_mem_load): Likewise.
* config/rs6000/rs6000-modes.def (PTImode): Update a comment.
* config/rs6000/rs6000-protos.h (fusion_gpr_load_p): New
declarations for power8 load fusion.
(emit_fusion_gpr_load): Likewise.
* config/rs6000/rs6000.c (rs6000_option_override_internal): If
tuning for power8, turn on fusion mode by default. Turn on sign
extending fusion mode if normal fusion mode is on, and we are at
-O2 or -O3.
(fusion_gpr_load_p): New function, return true if we can fuse an
addis instruction with a dependent load to a GPR.
(emit_fusion_gpr_load): Emit the instructions for power8 load
fusion to GPRs.
* config/rs6000/vsx.md (VSX_M2): New iterator for fusion
peepholes.
(VSX load fusion peepholes): New peepholes to fuse together an
addi instruction with a VSX load instruction.
* config/rs6000/rs6000.md (GPR load fusion peepholes): New
peepholes to fuse an addis instruction with a load to a GPR base
register. If we are supporting sign extending fusions, convert
sign extending loads to zero extending loads and add an explicit
sign extension.
[gcc/testsuite]
2013-07-31 Michael Meissner <meissner@linux.vnet.ibm.com>
* gcc.target/powerpc/fusion.c: New file, test power8 fusion
support.
mips.exp (mips-dg-options): Test for mabicalls rather than addressing!=absolute when...
gcc/testsuite/
* gcc.target/mips/mips.exp (mips-dg-options): Test for mabicalls
rather than addressing!=absolute when deciding how to handle MIPS16
when the test forces an ABI.
Paolo Carlini [Wed, 31 Jul 2013 14:36:13 +0000 (14:36 +0000)]
re PR libstdc++/56627 (class hash instead of struct hash)
2013-07-31 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/56627
* include/bits/stl_bvector.h: Use friend struct hash intead of
friend class hash to work around useless warnings produced by
some compilers.
* include/std/bitset: Likewise.
* config/arm/arm.md: Include new file "types.md".
(define_attr "type"): Move from here to ...
(define_attr "mul32"): Likewise.
(define_attr "mul64"): Likewise.
* config/arm/types.md: ... here. New file.
David Malcolm [Wed, 31 Jul 2013 00:48:03 +0000 (00:48 +0000)]
Introduce gen-pass-instances.awk and pass-instances.def
Introduce a new gen-pass-instances.awk script, and use it at build time
to make a pass-instances.def from passes.def.
gcc/
* Makefile.in (pass-instances.def): New.
(passes.o): Replace dependency on passes.def with one on
pass-instances.def
* gen-pass-instances.awk: New.
* passes.c (pass_manager::pass_manager): Use pass-instances.def
rather than passes.def, updating local definition of NEXT_PASS
macro to add an extra NUM parameter (currently unused).
Tim Shen [Wed, 31 Jul 2013 00:20:06 +0000 (00:20 +0000)]
Thompson matcher refactored.
2013-07-31 Tim Shen <timshen91@gmail.com>
Thompson matcher refactored. Fix grouping problem.
* include/bits/regex.h: Use a dispatcher _M_get_matcher().
* include/bits/regex_compiler.h: Tweak for auto switching.
* include/bits/regex_grep_matcher.h: Class structure.
* include/bits/regex_grep_matcher.tcc: _BFSMatcher(Thompson
matcher) refactoring.
* include/bits/regex_nfa.h: Change _Results's interfaces.
* include/std/regex: Includes <map> and <queue>.
* testsuite/28_regex/algorithms/regex_match/extended/53622.cc:
For both matchers.
* testsuite/28_regex/algorithms/regex_match/extended/57173.cc:
For both matchers.
* testsuite/28_regex/algorithms/regex_match/extended/
string_dispatch_01.cc: New.
David Malcolm [Tue, 30 Jul 2013 18:52:03 +0000 (18:52 +0000)]
Introduce beginnings of a pass_manager class.
This patch introduces a gcc::pass_manager class and moves various non-GTY
globals relating to pass management into it. The gcc::context gains its
first field: a pointer to the gcc::pass_manager instance.
gcc/
* Makefile.in (PASS_MANAGER_H): New.
(lto-cgraph.o): Depend on CONTEXT_H and PASS_MANAGER_H.
(passes.o): Likewise.
(statistics.o): Likewise.
(cgraphunit.o): Likewise.
(context.o): Depend on PASS_MANAGER_H.
* pass_manager.h: New.
* cgraphunit.c (cgraph_add_new_function): Update for moves
of globals to fields of pass_manager.
(analyze_function): Likewise.
(expand_function): Likewise.
(ipa_passes): Likewise.
(compile): Likewise.
* lto-cgraph.c (input_node): Update for moves of globals to
fields of pass_manager.
* passes.c (all_passes): Remove, in favor of a field of the
same name within the new class pass_manager.
(all_small_ipa_passes): Likewise.
(all_lowering_passes): Likewise.
(all_regular_ipa_passes): Likewise.
(all_late_ipa_passes): Likewise.
(all_lto_gen_passes): Likewise.
(passes_by_id): Likewise.
(passes_by_id_size): Likewise.
(gcc_pass_lists): Remove, in favor of "pass_lists" field within
the new class pass_manager.
(set_pass_for_id): Convert to...
(pass_manager::set_pass_for_id): ...method.
(get_pass_for_id): Convert to...
(pass_manager::get_pass_for_id): ...method.
(register_one_dump_file): Move body of implementation into...
(pass_manager::register_one_dump_file): ...here.
(register_dump_files_1): Convert to...
(pass_manager::register_dump_files_1): ...method.
(register_dump_files): Convert to...
(pass_manager::register_dump_files): ...method.
(create_pass_tab): Update for moves of globals to fields of
pass_manager.
(dump_passes): Move body of implementation into...
(pass_manager::dump_passes): ...here.
(register_pass): Move body of implementation into...
(pass_manager::register_pass): ...here.
(init_optimization_passes): Convert into...
(pass_manager::pass_manager): ...constructor for new
pass_manager class, and initialize the pass_lists array.
(check_profile_consistency): Update for moves of globals to
fields of pass_manager.
(dump_profile_report): Move body of implementation into...
(pass_manager::dump_profile_report): ...here.
(ipa_write_summaries_1): Update for moves of pass lists from
being globals to fields of pass_manager.
(ipa_write_optimization_summaries): Likewise.
(ipa_read_summaries): Likewise.
(ipa_read_optimization_summaries): Likewise.
(execute_all_ipa_stmt_fixups): Likewise.
* statistics.c (statistics_fini): Update for moves of globals to
fields of pass_manager.
* toplev.c (general_init): Replace call to
init_optimization_passes with construction of the pass_manager
instance.
* tree-pass.h (all_passes): Remove, in favor of a field of the
same name within the new class pass_manager.
(all_small_ipa_passes): Likewise.
(all_lowering_passes): Likewise.
(all_regular_ipa_passes): Likewise.
(all_lto_gen_passes): Likewise.
(all_late_ipa_passes): Likewise.
(passes_by_id): Likewise.
(passes_by_id_size): Likewise.
(gcc_pass_lists): Remove, in favor of "pass_lists" field within
the new class pass_manager.
(get_pass_for_id): Remove.
gcc/lto/
* Make-lang.in (lto/lto.o:): Depend on CONTEXT_H and
PASS_MANAGER_H.
* lto.c (do_whole_program_analysis): Update for move of
all_regular_ipa_passes from a global to a field of class
pass_manager.
Tim Shen [Tue, 30 Jul 2013 12:02:55 +0000 (12:02 +0000)]
Thompson matcher refactored.
2013-07-30 Tim Shen <timshen91@gmail.com>
Thompson matcher refactored. Fix grouping problem.
* include/bits/regex.h: Use a dispatcher _M_get_matcher().
* include/bits/regex_compiler.h: Tweak for auto switching.
* include/bits/regex_grep_matcher.h: Class structure.
* include/bits/regex_grep_matcher.tcc: _BFSMatcher(Thompson
matcher) refactoring.
* include/bits/regex_nfa.h: Change _Results's interfaces.
* include/std/regex: Includes <map> and <queue>.
* testsuite/28_regex/algorithms/regex_match/extended/53622.cc:
For both matchers.
* testsuite/28_regex/algorithms/regex_match/extended/57173.cc:
For both matchers.
* testsuite/28_regex/algorithms/regex_match/extended/string_dispatch_01.cc:
New.
re PR fortran/57530 ([OOP] Wrongly rejects type_pointer => class_target (which have identical declared type))
2013-07-30 Tobias Burnus <burnus@net-b.de>
PR fortran/57530
* symbol.c (gfc_type_compatible): A type is type compatible with
a class if both have the same declared type.
* interface.c (compare_type): Reject CLASS/TYPE even if they
are type compatible.
re PR fortran/57530 ([OOP] Wrongly rejects type_pointer => class_target (which have identical declared type))
2013-07-30 Tobias Burnus <burnus@net-b.de>
PR fortran/57530
* trans-expr.c (gfc_trans_class_assign): Handle CLASS array
functions.
(gfc_trans_pointer_assign): Ditto and support pointer assignment
of a polymorphic var to a nonpolymorphic var.
PR rtl-optimization/57637
* function.c (move_insn_for_shrink_wrap): Also check the
GEN set of the LIVE problem for the liveness analysis
if it exists, otherwise give up.
Bill Schmidt [Tue, 30 Jul 2013 01:01:35 +0000 (01:01 +0000)]
re PR tree-optimization/57993 (ICE: verify_ssa failed (definition in block n does not dominate use in block m))
gcc:
2013-07-29 Bill Schmidt <wschmidt@vnet.linux.ibm.com>
PR tree-optimization/57993
* gimple-ssa-strength-reduction.c (replace_mult_candidate): Record
replaced statement in the candidate table.
(phi_add_costs): Return infinite cost when the hidden basis does
not dominate all phis on which the candidate is dependent.
(replace_one_candidate): Record replaced statement in the
candidate table.
gcc/testsuite:
2013-07-29 Bill Schmidt <wschmidt@vnet.linux.ibm.com>
PR tree-optimization/57993
* gcc.dg/torture/pr57993.c: New test.
* config/epiphany/epiphany.md (*isub_i+2): New peephole.
(ashlv2si3): New expander.
(*ashlv2si3_i): New define_insn_and_split.
* predicates.md (float_operation): Allow patterns with three
basic sub-patterns.
gcc/
* config/mips/linux.h (GLIBC_DYNAMIC_LINKER): Handle `-mnan=2008'.
(UCLIBC_DYNAMIC_LINKER): New macro.
* config/mips/linux64.h (GLIBC_DYNAMIC_LINKER32): Handle
`-mnan=2008'.
(GLIBC_DYNAMIC_LINKER64, GLIBC_DYNAMIC_LINKERN32): Likewise.
(UCLIBC_DYNAMIC_LINKER32): Undefine macro first. Handle
`-mnan=2008'.
(UCLIBC_DYNAMIC_LINKER64): Redefine macro.
(UCLIBC_DYNAMIC_LINKERN32): Likewise.
* config/mips/mips-modes.def: Remove RESET_FLOAT_FORMAT calls
for SF and DF modes. Use ieee_quad_format for TF mode.
* config/mips/mips-opts.h (mips_ieee_754_setting): New enum.
* config/mips/mips.c (mips_file_start): Output a `.nan' directive.
(mips_option_override): Handle `-mnan=legacy'.
* config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Handle
`-mabs=2008' and `-mnan=2008'.
(OPTION_DEFAULT_SPECS): Add "nan" default.
(ASM_SPEC): Handle `-mnan='.
[!HAVE_AS_NAN] (HAVE_AS_NAN): New macro.
* config/mips/mips.md (abs<mode>2): Handle `-mabs=2008', update
comment accordingly.
(neg<mode>2): Likewise.
* config/mips/mips.opt (mabs, mnan): New options.
* doc/install.texi (Configuration): Document `--with-nan=' option.
* doc/invoke.texi (Option Summary): List MIPS `-mabs=' and
`-mnan=' options.
(MIPS Options): Document them.
* config.gcc <mips*-*-*>: Handle `--with-nan='.
* configure.ac <mips*-*-*>: Check for GAS `-mnan=2008' support.
* configure: Regenerate.
* config.in: Regenerate.
gcc/testsuite/
* gcc.target/mips/fabs-2008.c: New test case.
* gcc.target/mips/fabs-legacy.c: New test case.
* gcc.target/mips/fabsf-2008.c: New test case.
* gcc.target/mips/fabsf-legacy.c: New test case.
* gcc.target/mips/fneg-2008.c: New test case.
* gcc.target/mips/fneg-legacy.c: New test case.
* gcc.target/mips/fneg-2008.c: New test case.
* gcc.target/mips/fneg-legacy.c: New test case.
* gcc.target/mips/nan-2008.c: New test case.
* gcc.target/mips/nan-legacy.c: New test case.
* gcc.target/mips/nanf-2008.c: New test case.
* gcc.target/mips/nanf-legacy.c: New test case.
* gcc.target/mips/nans-2008.c: New test case.
* gcc.target/mips/nans-legacy.c: New test case.
* gcc.target/mips/nansf-2008.c: New test case.
* gcc.target/mips/nansf-legacy.c: New test case.
* gcc.target/mips/mips.exp: Handle `-mabs=' and `-mnan='.
target-supports.exp (check_effective_target_non_bionic): New effective-target test.
* lib/target-supports.exp (check_effective_target_non_bionic): New
effective-target test.
* g++.dg/tls/thread_local4.C: Disable test for Bionic.
* g++.dg/tls/thread_local4g.C: Ditto.
Eric Botcazou [Sat, 27 Jul 2013 06:38:12 +0000 (06:38 +0000)]
pr57705.c: Adjust for a !vect_pack_trunc target.
* gcc.dg/vect/pr57705.c: Adjust for a !vect_pack_trunc target.
* gcc.dg/vect/pr57741-2.c: Require a vect_float target.
* gcc.dg/vect/pr57741-3.c: Likewise.
* gcc.dg/vect/bb-slp-32.c: XFAIL for a vect_no_align target.
dwarf2out.c (die_checksum_ordered): Don't include template instantiations in signature.
gcc/
* dwarf2out.c (die_checksum_ordered): Don't include template
instantiations in signature.
(is_template_parameter): New function.
(is_template_instantiation): New function.
(generate_skeleton_bottom_up): Don't include template instantiations
in type unit DIE.
(generate_skeleton): Likewise.
(break_out_comdat_types): Move recursive call to break out nested
types earlier.
(prune_unused_types_mark_generic_parms_dies): Call
is_template_parameter.
Skip tests that make assumptions about struct layout that don't hold on epiphany.
Skip tests that make assumptions about struct layout that don't hold
on epiphany. These tests could be fixed by adding padded attributes,
See:
http://gcc.gnu.org/ml/gcc-patches/2011-08/msg00006.html
http://gcc.gnu.org/ml/gcc-patches/2011-09/msg01513.html
http://gcc.gnu.org/ml/gcc-patches/2011-09/msg01504.html
Janus Weil [Thu, 25 Jul 2013 21:41:22 +0000 (23:41 +0200)]
re PR fortran/57966 ([OOP] Using a TBP to specify the shape of a dummy argument)
2013-07-25 Janus Weil <janus@gcc.gnu.org>
PR fortran/57966
* resolve.c (resolve_typebound_function): Make sure the declared type,
including its type-bound procedures, is resolved before resolving the
actual type-bound call.
Jan Hubicka [Thu, 25 Jul 2013 17:10:21 +0000 (19:10 +0200)]
cgraph.c (release_function_body): Break out from ...
* cgraph.c (release_function_body): Break out from ...
(cgraph_release_function_body): ... this one; also release DECL_RESULT
and DECL_ARGUMENTS.
* ipa-cp.c (get_replacement_map): Add parm_num argument; do not set
old_tree in the map.
(create_specialized_node): Update.
* lto-cgraph.c (output_node_opt_summary): Do not translate old_tree
into index.
* cgraphclones.c (cgraph_create_virtual_clone): Do not copy DECL_ARGUMENTS,
DECL_INITIAL and DECL_RESULT.
* ipa-prop.c (ipa_populate_param_decls): Look for origin of clones.
* tree-inline.c (initialize_cfun): Initialize DECL_ARGUMENTS and
DECL_RESULT.
Jan Hubicka [Thu, 25 Jul 2013 13:24:58 +0000 (15:24 +0200)]
lto-symtab.c (lto_cgraph_replace_node): Release function body.
* lto-symtab.c (lto_cgraph_replace_node): Release function body.
* cgraph.c (cgraph_remove_node): Do not release function body
when in cgraph streaming.
* ipa.c (process_references, symtab_remove_unreachable_nodes): Objects
in other partitions are not considered reachable; fix handling of clones.
PR target/19599
PR target/57731
PR target/57837
* config/arm/arm.md ("*sibcall_value_insn): Replace use of
Ss with US. Adjust output for v5 and v4t.
(*sibcall_value_insn): Likewise and loosen predicate on
operand0.
* config/arm/constraints.md ("Ss"): Rename to US.