dmalcolm [Thu, 10 Dec 2015 18:21:00 +0000 (18:21 +0000)]
Add -Wmisleading-indentation to -Wall
gcc/c-family/ChangeLog:
* c.opt (Wmisleading-indentation): Add to -Wall for C and C++.
gcc/ChangeLog:
* doc/invoke.texi (-Wall): Add -Wmisleading-indentation to the
list.
(-Wmisleading-indentation): Update documentation to reflect
being enabled by -Wall in C/C++.
vmakarov [Thu, 10 Dec 2015 18:00:47 +0000 (18:00 +0000)]
2015-12-10 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/68691
* lra-spills.c (lra_final_code_change): Check pseudo occurrence
number in non-debug insns and remove debug insns if necessary.
dmalcolm [Thu, 10 Dec 2015 17:12:38 +0000 (17:12 +0000)]
testsuite/lib/multline.exp: show test name and line numbers
gcc/testsuite/ChangeLog:
* lib/multiline.exp (_multiline_expected_outputs): Update comment.
(dg-end-multiline-output): Capture line numbers within
_multiline_expected_outputs.
(handle-multiline-outputs): Access global $testname_with_flags
and add it as a prefix to pass/fail results. Extract line numbers
from $_multiline_expected_outputs and print them within pass/fail
results, replacing the printing of $index. Consolidate the
string prefix shared between pass/fail into a new local ($title).
law [Thu, 10 Dec 2015 16:34:43 +0000 (16:34 +0000)]
2015-12-10 Jeff Law <law@redhat.com>
PR tree-optimization/68619
* tree-ssa-dom.c (dom_opt_dom_walker::before_dom_children): Propgate
return value from optimize_stmt.
(dom_opt_dom_walker): Add new argument to dom_walker constructor.
(pass_dominator:execute): If a block has an unreachable edge,
remove all jump threads through any successor of the affected block.
(record_equivalences_from_phis): Ignore alternative if the edge
does not have EDGE_EXECUTABLE set.
(single_incoming_edge_ignoring_loop_edges): Similarly.
(optimize_stmt): If a gimple_code has a compile-time constant
condition, return the edge taken for that constant value. Also
change the condition to true/false as necessary.
* domwalk.h (dom_walker::dom_walker): Add new argument
skip_unreachable_blocks. Don't provide empty constructor body.
(dom_walker::before_dom_children): Change return type.
(dom_walker::bb_reachable): Declare new private method.
(dom_walker::propagate_unreachable_to_edges): Likewise.
(dom_walker::m_unreachable_dom): Declare new private data member.
(dom_walker::m_skip_unreachable_blocks): Likewise.
* domwalk.c: Include dumpfile.h.
(dom_walker::dom_walker): New constructor. Initialize private data
members. If needed, set EDGE_EXECUTABLE for all edges in the CFG,
extracted from tree-ssa-sccvn.c.
(dom_walker::bb_reachable): New method extracted from tree-ssa-sccvn.c
(dom_walker::propagate_unreachable_to_edges): Likewise.
(dom_walker::walk): Only call before_dom_children on reachable
blocks. If before_dom_children returns an edge, then clear
EDGE_EXECUTABLE for all other outgoing edges from the same block.
For unreachable blocks, call propagate_unreachable_to_edges.
Similarly, only call after_dom_children on reachable blocks. For
unreachable blocks, conditionally clear m_unreachable_dom.
* tree-ssa-sccvn.c (sccvn_dom_walker::unreachable_dom): Remove
private data member.
(sccvn_dom_walker::after_dom_children): Use methods from dom_walker
class.
(run_scc_vn): Likewise.
(sccvn_dom_walker::before_dom_children): Likewise. Return the taken
outgoing edge if a COND, SWITCH, or GOTO are optimized.
* compare-elim.c (find_comparison_dom_walker::before_dom_children):
Change return type to an edge. Always return NULL.
* fwprop.c (single_def_use_dom_walker::before_dom_children): Likewise.
* gimple-ssa-strength-reduction.c
(find_candidates_dom_walker::before_dom_children): Likewise.
* ipa-prop.c (analysis_dom_walker::before_dom_children): Likewise.
(ipcp_modif_dom_walker::before_dom_children): Likewise.
* tree-into-ssa.c (rewrite_dom_walker::before_dom_children): Likewise.
(rewrite_update_dom_walker::before_dom_children): Likewise.
(mark_def_dom_children::before_dom_children): Likewise.
* tree-ssa-dse.c (dse_dom_walker::before_dom_children): Likewise.
* tree-ssa-loop-im.c
(invariantness_dom_walker::before_dom_children): Likewise.
(move_computations_dom_walker::before_dom_walker): Likewise.
* tree-ssa-phiopt.c
(nontrapping_dom_walker::before_dom_children): Likewise.
* tree-ssa-pre.c
(eliminate_dom_walker::before_dom_children): Likewise.
* tree-ssa-propagate.c
(substitute_and_fold_dom_walker::before_dom_children): Likewise.
* tree-ssa-strlen.c
(strlen_dom_walker::before_dom_children): Likewise.
* tree-ssa-uncprop.c
(uncprop_dom_walker::before_dom_children): Likewise.
PR tree-optimization/68619
* gcc.dg/tree-ssa/pr68619-1.c: New test.
* gcc.dg/tree-ssa/pr68619-2.c: New test.
* gcc.dg/tree-ssa/pr68619-3.c: New test.
* gcc.dg/tree-ssa/pr68619-4.c: New test.
* gcc.dg/tree-ssa/pr68619-5.c: New test.
jakub [Thu, 10 Dec 2015 16:11:49 +0000 (16:11 +0000)]
PR rtl-optimization/68376
PR rtl-optimization/68670
* ifcvt.c (noce_try_abs): For one_cmpl allow < 0, >= 0
or > -1 conditions regardless of negate, and disallow
all other conditions.
* gcc.c-torture/execute/pr68376-2.c (f5, f6, f7, f8): New
tests.
(main): Call them.
* gcc.dg/pr68670-1.c: New test.
* gcc.dg/pr68670-2.c: New test.
dmalcolm [Thu, 10 Dec 2015 15:20:53 +0000 (15:20 +0000)]
Fix -Wmisleading-indentation warning in graphite-optimize-isl.c
../../../src/gcc/graphite-optimize-isl.c: In function ‘isl_union_set* scop_get_domains(scop_p)’:
../../../src/gcc/graphite-optimize-isl.c:362:5: error: statement is indented as if it were guarded by... [-Werror=misleading-indentation]
return res;
^~~~~~
In file included from ../../../src/gcc/hash-table.h:236:0,
from ../../../src/gcc/coretypes.h:348,
from ../../../src/gcc/graphite-optimize-isl.c:28:
../../../src/gcc/vec.h:1343:3: note: ...this ‘for’ clause, but it is not
for (I = 0; (V).iterate ((I), &(P)); ++(I))
^
../../../src/gcc/graphite-optimize-isl.c:359:3: note: in expansion of macro ‘FOR_EACH_VEC_ELT’
FOR_EACH_VEC_ELT (scop->pbbs, i, pbb)
^~~~~~~~~~~~~~~~
dmalcolm [Thu, 10 Dec 2015 15:18:26 +0000 (15:18 +0000)]
Fix -Wmisleading-indentation warning in ifcvt.c
../../../src/gcc/ifcvt.c: In function ‘bool noce_try_inverse_constants(noce_if_info*)’:
../../../src/gcc/ifcvt.c:1233:2: error: statement is indented as if it were guarded by... [-Werror=misleading-indentation]
seq = end_ifcvt_sequence (if_info);
^~~
../../../src/gcc/ifcvt.c:1230:7: note: ...this ‘if’ clause, but it is not
if (target != if_info->x)
^~
due to the lack of an outdent after the conditional at lines 1230-1:
dmalcolm [Thu, 10 Dec 2015 15:13:49 +0000 (15:13 +0000)]
Fix -Wmisleading-indentation warning in gcc/regrename.c
../../../src/gcc/regrename.c: In function ‘void scan_rtx_address(rtx_insn*, rtx_def**, reg_class, scan_actions, machine_mode, addr_space_t)’:
../../../src/gcc/regrename.c:1314:7: error: statement is indented as if it were guarded by... [-Werror=misleading-indentation]
break;
^
../../../src/gcc/regrename.c:1311:5: note: ...this ‘if’ clause, but it is not
if (!AUTO_INC_DEC)
^
dmalcolm [Thu, 10 Dec 2015 15:11:37 +0000 (15:11 +0000)]
Fix misleading indentation in gcc/fortran/io.c
Fix this warning:
../../../src/gcc/fortran/io.c: In function ‘match gfc_match_open()’:
../../../src/gcc/fortran/io.c:2003:4: error: statement is indented as if it were guarded by... [-Werror=misleading-indentation]
if (!compare_to_allowed_values ("DELIM", delim, NULL, NULL,
^
../../../src/gcc/fortran/io.c:2000:2: note: ...this ‘if’ clause, but it is not
if (!is_char_type ("DELIM", open->delim))
^
dmalcolm [Thu, 10 Dec 2015 15:06:05 +0000 (15:06 +0000)]
Fix -Wmisleading-indentation warning in function.c
Fix this warning:
../../../src/gcc/function.c: In function ‘void locate_and_pad_parm(machine_mode, tree, int, int, int, tree, args_size*, locate_and_pad_arg_data*)’:
../../../src/gcc/function.c:4123:2: error: statement is indented as if it were guarded by... [-Werror=misleading-indentation]
{
^
../../../src/gcc/function.c:4119:7: note: ...this ‘if’ clause, but it is not
if (initial_offset_ptr->var)
^
redi [Thu, 10 Dec 2015 14:32:16 +0000 (14:32 +0000)]
Fix dejagnu directives in shared_ptr test
PR libstdc++/68825
* include/experimental/bits/shared_ptr.h (__shared_ptr, __weak_ptr,
experimental::shared_ptr, experimental::weak_ptr): Constrain
assignment operators.
* testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc:
Change to a compile-only test and change dg-excess-errors to dg-error.
ebotcazou [Thu, 10 Dec 2015 14:20:50 +0000 (14:20 +0000)]
PR ada/48013
* gcc-interface/trans.c (empty_stmt_list_p): New predicate.
(gigi): Invoke it to compute the No_Elaboration_Code property.
(insert_code_for): Do not insert the code if it's empty.
rguenth [Thu, 10 Dec 2015 09:10:40 +0000 (09:10 +0000)]
2015-12-10 Richard Biener <rguenther@suse.de>
* tree-if-conv.c: Include params.h.
(ifcvt_memrefs_wont_trap): Use PARAM_ALLOW_STORE_DATA_RACES
instead of flag_tree_loop_if_convert_stores to guard cases
we'd introduce store-data-races.
danglin [Thu, 10 Dec 2015 01:08:13 +0000 (01:08 +0000)]
PR 68115/libfortran
* configure.ac: Set libbacktrace_cv_sys_sync to no on hppa*-*-hpux*.
* configure: Regenerate.
* elf.c (backtrace_initialize): Cast __sync_bool_compare_and_swap call
to void.
danglin [Thu, 10 Dec 2015 00:41:17 +0000 (00:41 +0000)]
PR target/68729
* config/pa/pa.c (pa_emit_move_sequence): Don't check that mode is
consistent with modes of the input and output operands when doing
reloads to and from floating point registers. Do reload for all
address forms.
* trans.c (gfc_allocate_using_lib,gfc_deallocate_with_status):
Introducing __asm__ __volatile__ ("":::"memory")
after image control statements.
* trans-stmt.c (gfc_trans_sync, gfc_trans_event_post_wait,
gfc_trans_lock_unlock, gfc_trans_critical): Ditto.
* trans-intrinsic.c (gfc_conv_intrinsic_caf_get,
conv_caf_send): Introducing __asm__ __volatile__ ("":::"memory")
after send, before get and around sendget.
mpolacek [Wed, 9 Dec 2015 14:58:22 +0000 (14:58 +0000)]
PR tree-optimization/66949
* tree-ssa-phiopt.c (tree_ssa_phiopt_worker): Don't call
single_non_singleton_phi_for_edges to get the PHI from
factor_out_conditional_conversion. Use NULL_TREE instead of NULL.
(factor_out_conditional_conversion): Adjust declaration. Make it
return the newly-created PHI.
* gcc.dg/torture/pr66949-1.c: New test.
* gcc.dg/torture/pr66949-2.c: New test.
jakub [Wed, 9 Dec 2015 13:42:06 +0000 (13:42 +0000)]
PR tree-optimization/68786
* tree-if-conv.c: Include builtins.h.
(predicate_mem_writes): Put result of get_object_alignment (ref)
into second argument's value.
* tree-vect-stmts.c (vectorizable_mask_load_store): Put minimum
pointer alignment into second argument's value.
* tree-data-ref.c (get_references_in_stmt): Use value of second
argument for build_aligned_type, and only the type to build
a zero second argument for MEM_REF.
* internal-fn.c (expand_mask_load_optab_fn,
expand_mask_store_optab_fn): Likewise.
rguenth [Wed, 9 Dec 2015 13:30:41 +0000 (13:30 +0000)]
2015-12-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/68583
* tree-if-conv.c (if_convertible_phi_p): Drop
flag_tree_loop_if_convert_stores check in favor of the
existing any_mask_load_store check.
(insert_gimplified_predicates): Likewise.
(combine_blocks): Likewise.
(tree_if_conversion): Likewise.
(ifcvt_memrefs_wont_trap): Properly check
flag_tree_loop_if_convert_stores in all places that can end
up introducing store-data-races.
(if_convertible_gimple_assign_stmt_p): Remove restriction
on flag_tree_loop_if_convert_stores for stores we can if-convert
without introducing store-data-races. Force versioning for
all if-converted stores.
rguenth [Wed, 9 Dec 2015 08:23:37 +0000 (08:23 +0000)]
2015-12-09 Richard Biener <rguenther@suse.de>
* tree-vect-stmts.c (vectorizable_load): Set new vinfo only
if it was not yet set.
* tree-vectorizer.h (set_vinfo_for_stmt): Assert we don't
overwrite an existing entry.
hubicka [Wed, 9 Dec 2015 02:15:05 +0000 (02:15 +0000)]
PR ipa/61886
* lto-streamer.h (lto_symtab_merge_decls, lto_symtab_merge_symbols,
lto_symtab_prevailing_decl): MOve to lto-symtab.h.
* lto-streamer-out.c (DFS::DFS_write_tree_body): Check that
DECL_ABSTRACT_ORIGIN is not error_mark_node.
* lto-symtab.c: Include lto-symtab.h.
(lto_cgraph_replace_node): Do not merge profiles here.
(lto_symtab_merge_p): New function.
(lto_symtab_merge_decls_2): Honor lto_symtab_merge_p.
(lto_symtab_merge_symbols_1): Turn unmerged decls into transparent
aliases.
(lto_symtab_merge_symbols): Do not clear node->aux; we no longer use it.
(lto_symtab_prevailing_decl): Move to lto-symtab.h; rewrite.
* lto.c: Include lto-symtab.h
* lto-symtab.h: New.
hubicka [Tue, 8 Dec 2015 22:02:23 +0000 (22:02 +0000)]
PR ipa/61886
* varpool.c (varpool_node::get_availability): Recurse only on
weakrefs with definition in the target.
(symbol_table::remove_unreferenced_decls): Keep aliases in the boundary.
hubicka [Tue, 8 Dec 2015 22:01:41 +0000 (22:01 +0000)]
PR ipa/61886
* ipa-visibility.c (can_replace_by_local_alias): Look through transparent
aliaes; refuse weakrefs.
(update_visibility_by_resolution_info): Skip transparent aliases in the
analysis part
hubicka [Tue, 8 Dec 2015 22:00:55 +0000 (22:00 +0000)]
PR ipa/61886
* symtab.c (symtab_node::verify_base): Fix thinko in a conditional.
(symtab_node::noninterposable_alias): Do not accept transparent
aliases.
hubicka [Tue, 8 Dec 2015 20:46:42 +0000 (20:46 +0000)]
PR ipa/61886
* lto-partition.c (add_symbol_to_partition_1): Transparent aliases
are not part of the definition.
(contained_in_symbol): Likewise.
(promote_symbol): When promoting a symbol also promote all transparent
aliases.
(rename_statics): Weakref needs unique name, too.
uros [Tue, 8 Dec 2015 18:41:21 +0000 (18:41 +0000)]
PR target/68701
* config/i386/i386.c (ix86_option_override_internal): Enable
-maccumulate-outgoing-args when %ebp is fixed due to stack
realignment requirements.
testsuite/ChangeLog:
PR target/68701
* testsuite/gcc.target/i386/pr68701-1.c: New test.
* testsuite/gcc.target/i386/pr68701-2.c: Ditto.
dmalcolm [Tue, 8 Dec 2015 17:03:26 +0000 (17:03 +0000)]
C: fix uninitialized ranges for __alignof__
gcc/c/ChangeLog:
* c-parser.c (c_parser_alignof_expression): Capture location of
closing parenthesis (if any), or of end of unary expression, and
use it to build a src_range for the expression.
gcc/testsuite/ChangeLog:
* gcc.dg/plugin/diagnostic-test-expressions-1.c (test_alignof):
New test function.
dmalcolm [Tue, 8 Dec 2015 16:57:27 +0000 (16:57 +0000)]
PR c/68757: fix uninitialized src_range for various builtins
gcc/c/ChangeLog:
PR c/68757
* c-parser.c (c_parser_get_builtin_args): Add
"out_close_paren_loc" param, and write back to it.
(c_parser_postfix_expression): Capture the closing
parenthesis location for RID_CHOOSE_EXPR,
RID_BUILTIN_CALL_WITH_STATIC_CHAIN, RID_BUILTIN_COMPLEX,
RID_BUILTIN_SHUFFLE and use it to set the source range
for such expressions; within RID_BUILTIN_COMPLEX set
the underlying location.
gcc/testsuite/ChangeLog:
PR c/68757
* gcc.dg/plugin/diagnostic-test-expressions-1.c
(test_builtin_choose_expr): New test function.
(test_builtin_call_with_static_chain): Likewise.
(test_builtin_complex): Likewise.
(test_builtin_shuffle): Likewise.