2013-09-10 Gary Benson <gbenson@redhat.com>
* cp-demangle.c: Include hashtab.h.
(struct d_print_info): New field saved_scopes.
(d_print_init): Initialize the above.
(d_print_free): New function.
(cplus_demangle_print_callback): Call the above.
(struct d_saved_scope): New structure.
(d_store_scope): New function.
(d_free_scope) Likewise.
(d_restore_scope) Likewise.
(d_hash_saved_scope) Likewise.
(d_equal_saved_scope) Likewise.
(d_print_comp): New variable saved_scope.
[DEMANGLE_COMPONENT_REFERENCE,
DEMANGLE_COMPONENT_RVALUE_REFERENCE]: Capture scope the first
time the component is traversed, and use the captured scope for
subsequent traversals.
From-SVN: r202442
PR tree-optimization/58343
* tree-ssa-threadupdate.c (thread_block): Identify and disable
jump threading requests through loop headers buried in the middle
of a jump threading path.
* tree-ssa-threadedge.c (thread_around_empty_blocks): Fix thinko
in return value/type.
* gcc.c-torture/compile/pr58343.c: New test.
From-SVN: r202441
PR rtl-optimization/58365
* cfgcleanup.c (merge_memattrs): Also clear MEM_READONLY_P
resp. MEM_NOTRAP_P if they differ, or set MEM_VOLATILE_P if
it differs.
* gcc.c-torture/execute/pr58365.c: New test.
From-SVN: r202434
2013-09-10 Richard Biener <rguenther@suse.de>
* tree-data-ref.h (build_rdg): Drop all parameters but loop.
* tree-data-ref.c (create_rdg_vertices): Collect all data
references, signal failure to the caller, use data-ref API.
(build_rdg): Compute data references only once. Maintain
lifetime of data references and data dependences from within
RDG.
(free_rdg): Free dependence relations.
* tree-loop-distribution.c (rdg_flag_uses): Drop weird code
inventing extra dependences.
(distribute_loop): Update for RDG API changes.
From-SVN: r202431
* doc/invoke.texi (fms-extensions): Document changed
behavior for ms-abi targets.
* config/i386/i386.c (ix86_option_override_internal):
Set default value of option -fms-extension for ms-abi targets.
From-SVN: r202429
PR tree-optimization/58364
* tree-ssa-reassoc.c (init_range_entry): For BIT_NOT_EXPR on
BOOLEAN_TYPE, only invert in_p and continue with arg0 if
the current range can't be an unconditional true or false.
* gcc.c-torture/execute/pr58364.c: New test.
From-SVN: r202409
2013-09-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/43452
* doc/invoke.texi (-Wdelete-incomplete): Document it.
/c-family
2013-09-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/43452
* c.opt (Wdelete-incomplete): Add.
/cp
2013-09-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/43452
* init.c (build_vec_delete_1): When the type is incomplete emit a
warning, enabled by default (not an error).
(build_delete): Adjust to use OPT_Wdelete_incomplete.
/testsuite
2013-09-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/43452
* g++.dg/warn/Wdelete-incomplete-1.C: New.
* g++.dg/warn/Wdelete-incomplete-2.C: Likewise.
* g++.dg/init/delete1.C: Adjust.
From-SVN: r202405
2013-09-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/43452
* doc/invoke.texi (-Wdelete-incomplete): Document it.
/c-family
2013-09-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/43452
* c.opt (Wdelete-incomplete): Add.
/cp
2013-09-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/43452
* init.c (build_vec_delete_1): When the type is incomplete emit a
warning, enabled by default (not an error).
(build_delete): Adjust to use OPT_Wdelete_incomplete.
/testsuite
2013-09-09 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/43452
* g++.dg/warn/Wdelete-incomplete-1.C: New.
* g++.dg/warn/Wdelete-incomplete-2.C: Likewise.
* g++.dg/init/delete1.C: Adjust.
From-SVN: r202404
2013-09-09 Richard Biener <rguenther@suse.de>
PR middle-end/58326
* cfgloopmanip.c (fix_bb_placements): When fixing the placement
of a subloop record all its block as affecting loop-closed SSA form.
* gcc.dg/torture/pr58326-1.c: New testcase.
* gcc.dg/torture/pr58326-2.c: Likewise.
From-SVN: r202399
gcc/
* expmed.c (lshift_value): Take an unsigned HOST_WIDE_INT instead
of an rtx/bitpos pair.
(store_fixed_bit_field): Update accordingly.
From-SVN: r202395
* ipa-profile.c: Add toplevel comment.
(ipa_propagate_frequency_1): Be more conservative when profile is read.
(contains_hot_call_p): New function.
(ipa_propagate_frequency): Set frequencies based on counts when
profile is read.
* predict.c (compute_function_frequency): Use PROFILE_READ gueard for
profile; do not tamper with profile after inlining if it is read.
From-SVN: r202382
An auto generated program with a 6.4mio line asm statement gave
with 4.7 and 4.8:
xxx.c:6400017:1: internal compiler error: in account_size_time, at
ipa-inline-analysis.c:601
The problem is that the inliner counts the number of lines in the asm
statement and multiplies that with a weight. With the weight this
overflows 32bit signed int, and triggers an assert for negative time.
Fix this by limiting the number of lines to 1000 for asm cost
estimation. The RTL backend also does similar multiplications for
jump shortening. I haven't tried to address this, but presumably
it's less likely to result in a failure.
gcc/:
2013-09-08 Andi Kleen <ak@linux.intel.com>
* tree-inline.c (estimate_num_insns): Limit asm cost to 1000.
From-SVN: r202374
Fix PR 58300: Re-order events with -fvtable-verify=preinit
flag, so constructor init function is not written to assembly
file until after call to cgraph_process_new_functions.
From-SVN: r202371
gcc/
* ira.c (update_equiv_regs): Only call set_paradoxical_subreg
for non-debug insns.
* lra.c (new_insn_reg): Take the containing insn as a parameter.
Only modify lra_reg_info[].biggest_mode if it's non-debug insn.
(collect_non_operand_hard_regs, add_regs_to_insn_regno_info): Update
accordingly.
gcc/testsuite/
* g++.dg/debug/ra1.C: New test.
From-SVN: r202369
* testsuite/g++.dg/ipa/devirt-11.C: Update template.
* testsuite/g++.dg/ipa/devirt-16.C: New testcase.
* testsuite/g++.dg/ipa/devirt-17.C: New testcase.
* testsuite/g++.dg/ipa/devirt-18.C: New testcase.
* cgraphunit.c (walk_polymorphic_call_targets): Permit 0 possible
targets and devirtualize to BUILT_IN_UNREACHABLE.
* timevar.def (TV_IPA_UNREACHABLE): New timevar.
* ipa.c (walk_polymorphic_call_targets): New function.
(symtab_remove_unreachable_nodes): Use it; do not keep all virtual
functions; use the new timevar.
* ipa-devirt.c (maybe_record_node): Do not insert static nodes that
was removed from the program.
(record_binfo): If BINFO corresponds to an anonymous namespace, we may
not consider it in the walk when its vtable is dead.
(possible_polymorphic_call_targets_1): Pass anonymous flag to
record_binfo.
(devirt_variable_node_removal_hook): New function.
(possible_polymorphic_call_targets): Also register
devirt_variable_node_removal_hook.
(ipa_devirt): Do not do non-speculative devirtualization.
(gate_ipa_devirt): One execute if devirtualizing speculatively.
From-SVN: r202368