gcc.git
7 years agoMake more use of GET_MODE_UNIT_SIZE
Richard Sandiford [Fri, 13 Oct 2017 09:41:39 +0000 (09:41 +0000)]
Make more use of GET_MODE_UNIT_SIZE

This patch uses GET_MODE_UNIT_SIZE instead of GET_MODE_SIZE in
cases where, for compound modes, the mode of the scalar elements
is what matters.  E.g. the choice between truncation and extension
is really based on the modes of the consistuent scalars rather
than the mode as a whole.

None of the existing code was wrong.  The patch simply makes
things easier when converting to variable-sized modes.

2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* optabs.c (add_equal_note): Use GET_MODE_UNIT_SIZE.
(widened_mode): Likewise.
(expand_unop): Likewise.
* ree.c (transform_ifelse): Likewise.
(merge_def_and_ext): Likewise.
(combine_reaching_defs): Likewise.
* simplify-rtx.c (simplify_unary_operation_1): Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r253715

7 years agoMake more use of byte_lowpart_offset
Richard Sandiford [Fri, 13 Oct 2017 09:32:29 +0000 (09:32 +0000)]
Make more use of byte_lowpart_offset

This patch uses byte_lowpart_offset in places that open-coded the
calculation.

2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* caller-save.c (replace_reg_with_saved_mem): Use byte_lowpart_offset.
* combine.c (gen_lowpart_for_combine): Likewise.
* dwarf2out.c (rtl_for_decl_location): Likewise.
* final.c (alter_subreg): Likewise.
* rtlhooks.c (gen_lowpart_general): Likewise.
(gen_lowpart_if_possible): Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r253714

7 years agoMake more use of subreg_lowpart_offset
Richard Sandiford [Fri, 13 Oct 2017 09:23:54 +0000 (09:23 +0000)]
Make more use of subreg_lowpart_offset

This patch uses subreg_lowpart_offset in places that open-coded
the calculation.  It also uses it in regcprop.c to test whether,
after a mode change, the first register in a multi-register group
is still the right one.

2017-10-13  Richard Sandiford  <richard.sandiford@linaro.org>
    Alan Hayward  <alan.hayward@arm.com>
    David Sherwood  <david.sherwood@arm.com>

gcc/
* calls.c (expand_call): Use subreg_lowpart_offset.
* cse.c (cse_insn): Likewise.
* regcprop.c (copy_value): Likewise.
(copyprop_hardreg_forward_1): Likewise.

Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
Co-Authored-By: David Sherwood <david.sherwood@arm.com>
From-SVN: r253713

7 years agore PR target/82524 (expensive-optimizations produces wrong results)
Jakub Jelinek [Fri, 13 Oct 2017 07:29:51 +0000 (09:29 +0200)]
re PR target/82524 (expensive-optimizations produces wrong results)

PR target/82524
* config/i386/i386.md (addqi_ext_1, andqi_ext_1,
*andqi_ext_1_cc, *<code>qi_ext_1, *xorqi_ext_1_cc): Change
=Q constraints to +Q and into insn condition add check
that operands[0] and operands[1] are equal.
(*addqi_ext_2, *andqi_ext_2, *<code>qi_ext_2): Change
=Q constraints to +Q and into insn condition add check
that operands[0] is equal to either operands[1] or operands[2].

* gcc.c-torture/execute/pr82524.c: New test.

From-SVN: r253710

7 years agore PR target/82498 (Missed optimization for x86 rotate instruction)
Jakub Jelinek [Fri, 13 Oct 2017 07:28:46 +0000 (09:28 +0200)]
re PR target/82498 (Missed optimization for x86 rotate instruction)

PR target/82498
* fold-const.c (fold_binary_loc) <bit_rotate>: Code cleanups,
instead of handling MINUS_EXPR twice (once for each argument),
canonicalize operand order and handle just once, use rtype where
possible.  Handle (A << B) | (A >> (-B & (Z - 1))).

* gcc.dg/tree-ssa/pr82498.c: New test.

From-SVN: r253709

7 years agore PR target/82498 (Missed optimization for x86 rotate instruction)
Jakub Jelinek [Fri, 13 Oct 2017 07:17:06 +0000 (09:17 +0200)]
re PR target/82498 (Missed optimization for x86 rotate instruction)

PR target/82498
* config/i386/ia32intrin.h (__rold, __rord, __rolq, __rorq): Allow
any values of __C while still being pattern recognizable as a simple
rotate instruction.

* gcc.dg/ubsan/pr82498.c: New test.

From-SVN: r253708

7 years agore PR tree-optimization/82451 ([GRAPHITE] codegen error in get_rename_from_scev)
Richard Biener [Fri, 13 Oct 2017 07:02:55 +0000 (07:02 +0000)]
re PR tree-optimization/82451 ([GRAPHITE] codegen error in get_rename_from_scev)

2017-10-13  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82451
Revert
2017-10-02  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82355
* graphite-isl-ast-to-gimple.c (build_iv_mapping): Also build
a mapping for the enclosing loop but avoid generating one for
the loop tree root.
(copy_bb_and_scalar_dependences): Remove premature codegen
error on PHIs in blocks duplicated into multiple places.
* graphite-scop-detection.c
(scop_detection::stmt_has_simple_data_refs_p): For a loop not
in the region use it as loop and nest to analyze the DR in.
(try_generate_gimple_bb): Likewise.
* graphite-sese-to-poly.c (extract_affine_chrec): Adjust.
(add_loop_constraints): For blocks in a loop not in the region
create a dimension with a single iteration.
* sese.h (gbb_loop_at_index): Remove assert.

* cfgloop.c (loop_preheader_edge): For the loop tree root
return the single successor of the entry block.
* graphite-isl-ast-to-gimple.c (graphite_regenerate_ast_isl):
Reset the SCEV hashtable and niters.
* graphite-scop-detection.c
(scop_detection::graphite_can_represent_scev): Add SCOP parameter,
assert that we only have POLYNOMIAL_CHREC that vary in loops
contained in the region.
(scop_detection::graphite_can_represent_expr): Adjust.
(scop_detection::stmt_has_simple_data_refs_p): For loops
not in the region set loop to NULL.  The nest is now the
entry edge to the region.
(try_generate_gimple_bb): Likewise.
* sese.c (scalar_evolution_in_region): Adjust for
instantiate_scev change.
* tree-data-ref.h (graphite_find_data_references_in_stmt):
Make nest parameter the edge into the region.
(create_data_ref): Likewise.
* tree-data-ref.c (dr_analyze_indices): Make nest parameter an
entry edge into a region and adjust instantiate_scev calls.
(create_data_ref): Likewise.
(graphite_find_data_references_in_stmt): Likewise.
(find_data_references_in_stmt): Pass the loop preheader edge
from the nest argument.
* tree-scalar-evolution.h (instantiate_scev): Make instantiate_below
parameter the edge into the region.
(instantiate_parameters): Use the loop preheader edge as entry.
* tree-scalar-evolution.c (analyze_scalar_evolution): Handle
NULL loop.
(get_instantiated_value_entry): Make instantiate_below parameter
the edge into the region.
(instantiate_scev_name): Likewise.  Adjust dominance checks,
when we cannot use loop-based instantiation instantiate by
walking use-def chains.
(instantiate_scev_poly): Adjust.
(instantiate_scev_binary): Likewise.
(instantiate_scev_convert): Likewise.
(instantiate_scev_not): Likewise.
(instantiate_array_ref): Remove.
(instantiate_scev_3): Likewise.
(instantiate_scev_2): Likewise.
(instantiate_scev_1): Likewise.
(instantiate_scev_r): Do not blindly handle N-operand trees.
Do not instantiate array-refs.  Handle all constants and invariants.
(instantiate_scev): Make instantiate_below parameter
the edge into the region.
(resolve_mixers): Use the loop preheader edge for the region
parameter to instantiate_scev_r.
* tree-ssa-loop-prefetch.c (determine_loop_nest_reuse): Adjust.

* gcc.dg/graphite/pr82451.c: New testcase.
* gfortran.dg/graphite/id-27.f90: Likewise.
* gfortran.dg/graphite/pr82451.f: Likewise.

From-SVN: r253707

7 years agore PR tree-optimization/82525 ([GRAPHITE] codegen error for modulo operations we...
Richard Biener [Fri, 13 Oct 2017 06:59:13 +0000 (06:59 +0000)]
re PR tree-optimization/82525 ([GRAPHITE] codegen error for modulo operations we cannot represent)

2017-10-13  Richard Biener  <rguenther@suse.de>

PR tree-optimization/82525
* graphite-isl-ast-to-gimple.c
(translate_isl_ast_to_gimple::widest_int_from_isl_expr_int): Split
out from ...
(translate_isl_ast_to_gimple::gcc_expression_from_isl_expr_int): Here.
Fail code generation when we cannot represent the isl integer.
(binary_op_to_tree): Elide modulo operations that are no-ops
in the type we code generate.  Remove now superfluous code
generation errors.

* gcc.dg/graphite/id-30.c: New testcase.
* gfortran.dg/graphite/id-28.f90: Likewise.

From-SVN: r253706

7 years agographite-scop-detection.c (loop_ivs_can_be_represented): Remove.
Richard Biener [Fri, 13 Oct 2017 06:57:11 +0000 (06:57 +0000)]
graphite-scop-detection.c (loop_ivs_can_be_represented): Remove.

2017-10-13  Richard Biener  <rguenther@suse.de>

* graphite-scop-detection.c (loop_ivs_can_be_represented): Remove.
(scop_detection::harmful_loop_in_region): Remove premature
IV type restriction.
(scop_detection::graphite_can_represent_scev): We can handle
pointer IVs just fine.

From-SVN: r253705

7 years agoDaily bump.
GCC Administrator [Fri, 13 Oct 2017 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253704

7 years agoClobbers and Scratch Registers
Alan Modra [Thu, 12 Oct 2017 22:22:15 +0000 (08:52 +1030)]
Clobbers and Scratch Registers

* doc/extend.texi (Extended Asm <Clobbers>): Rename to
"Clobbers and Scratch Registers".  Add paragraph on
alternative to clobbers for scratch registers and OpenBLAS
example.

From-SVN: r253701

7 years agoAsm memory constraints
Alan Modra [Thu, 12 Oct 2017 22:21:06 +0000 (08:51 +1030)]
Asm memory constraints

* doc/extend.texi (Clobbers): Correct vax example.  Delete old
example of a memory input for a string of known length.  Move
commentary out of table.  Add a number of new examples
covering array memory inputs.
testsuite/
* gcc.target/i386/asm-mem.c: New test.

From-SVN: r253700

7 years agore PR tree-optimization/82493 (UBSAN in gcc/sbitmap.c:368:28: runtime error: shift...
Martin Liska [Thu, 12 Oct 2017 21:53:21 +0000 (23:53 +0200)]
re PR tree-optimization/82493 (UBSAN in gcc/sbitmap.c:368:28: runtime error: shift exponent 64 is too large for 64-bit type 'long unsigned int')

PR tree-optimization/82493
* sbitmap.c (bitmap_bit_in_range_p): Fix the implementation.
(test_range_functions): New function.
(sbitmap_c_tests): Likewise.
* selftest-run-tests.c (selftest::run_tests): Run new tests.
* selftest.h (sbitmap_c_tests): New function.

* tree-ssa-dse.c (live_bytes_read): Fix thinko.

From-SVN: r253699

7 years agoFix spacing issue.
Michael Meissner [Thu, 12 Oct 2017 21:25:10 +0000 (21:25 +0000)]
Fix spacing issue.

From-SVN: r253696

7 years agore PR target/82498 (Missed optimization for x86 rotate instruction)
Jakub Jelinek [Thu, 12 Oct 2017 19:10:34 +0000 (21:10 +0200)]
re PR target/82498 (Missed optimization for x86 rotate instruction)

PR target/82498
* config/i386/i386.md (*ashl<mode>3_mask_1,
*<shift_insn><mode>3_mask_1, *<rotate_insn><mode>3_mask_1,
*<btsc><mode>_mask_1, *btr<mode>_mask_1): New define_insn_and_split
patterns.

* gcc.target/i386/pr82498-1.c: New test.
* gcc.target/i386/pr82498-2.c: New test.

From-SVN: r253695

7 years agocompiler: fix import of indirectly imported type alias
Ian Lance Taylor [Thu, 12 Oct 2017 19:01:50 +0000 (19:01 +0000)]
compiler: fix import of indirectly imported type alias

    We were looking for the " = " before the optional package name that
    appears for an indirect reference, but the exporter was putting it
    after.

    Test is https://golang.org/cl/70290.

    Reviewed-on: https://go-review.googlesource.com/70330

From-SVN: r253694

7 years ago[C++ PATCH] cp_expr tweak and delete unused enumerations
Nathan Sidwell [Thu, 12 Oct 2017 18:56:53 +0000 (18:56 +0000)]
[C++ PATCH] cp_expr tweak and delete unused enumerations

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00784.html
* cp-tree.h (cp_expr): Add const operator * and operator->
accessors.
(cp_tree_node_structure_enum): Delete TS_CP_BINDING,
TS_CP_WRAPPER, LAST_TS_CP_ENUM.

From-SVN: r253693

7 years agoprofile-count.c (safe_scale_64bit): Fix GCC4.x path.
Jan Hubicka [Thu, 12 Oct 2017 18:48:59 +0000 (20:48 +0200)]
profile-count.c (safe_scale_64bit): Fix GCC4.x path.

* profile-count.c (safe_scale_64bit): Fix GCC4.x path.
(profile_probability): Set max_probability
to (uint32_t) 1 << (n_bits - 2) and update accessors to avoid overlfows
in temporaries.
* profile-count.c (profile_probability::differs_from_p): Do not
rely on max_probaiblity == 10000

* gcc.dg/predict-13.c: Update template for probaility change.
* gcc.dg/predict-8.c: Likewise.

From-SVN: r253692

7 years agotree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with negative offsets.
Jeff Law [Thu, 12 Oct 2017 18:09:11 +0000 (12:09 -0600)]
tree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with negative offsets.

* tree-ssa-dse.c (valid_ao_ref_for_dse): Reject ao_refs with
negative offsets.

From-SVN: r253691

7 years agoC/C++: add fix-it hints for various missing symbols
David Malcolm [Thu, 12 Oct 2017 17:49:35 +0000 (17:49 +0000)]
C/C++: add fix-it hints for various missing symbols

The patch improves our C/C++ frontends' handling of missing
symbols, by making c_parser_require and cp_parser_require use
"better" locations for the diagnostic, and insert fix-it hints,
under certain circumstances (see the comments in the patch for
full details).

For example, for this code with a missing semicolon:

  $ cat test.c
  int missing_semicolon (void)
  {
    return 42
  }

  trunk currently emits:

  test.c:4:1: error: expected ';' before '}' token
   }
   ^

This patch adds a fix-it hint for the missing semicolon, and puts
the error at the location of the missing semicolon, printing the
followup token as a secondary location:

  test.c:3:12: error: expected ';' before '}' token
     return 42
              ^
              ;
   }
   ~

More examples can be seen in the test cases.

gcc/c-family/ChangeLog:
* c-common.c (enum missing_token_insertion_kind): New enum.
(get_missing_token_insertion_kind): New function.
(maybe_suggest_missing_token_insertion): New function.
* c-common.h (maybe_suggest_missing_token_insertion): New decl.

gcc/c/ChangeLog:
* c-parser.c (c_parser_require): Add "type_is_unique" param and
use it to guard calls to maybe_suggest_missing_token_insertion.
(c_parser_parms_list_declarator): Override default value of new
"type_is_unique" param to c_parser_require.
(c_parser_asm_statement): Likewise.
* c-parser.h (c_parser_require): Add "type_is_unique" param,
defaulting to true.

gcc/cp/ChangeLog:
* parser.c (get_required_cpp_ttype): New function.
(cp_parser_error_1): Call it, using the result to call
maybe_suggest_missing_token_insertion.

gcc/testsuite/ChangeLog:
* c-c++-common/cilk-plus/AN/parser_errors.c: Update expected
output to reflect changes to reported locations of missing
symbols.
* c-c++-common/cilk-plus/AN/parser_errors2.c: Likewise.
* c-c++-common/cilk-plus/AN/parser_errors3.c: Likewise.
* c-c++-common/cilk-plus/AN/pr61191.c: Likewise.
* c-c++-common/gomp/pr63326.c: Likewise.
* c-c++-common/missing-close-symbol.c: Likewise, also update for
new fix-it hints.
* c-c++-common/missing-symbol.c: Likewise, also add test coverage
for missing colon in ternary operator.
* g++.dg/cpp1y/digit-sep-neg.C: Likewise.
* g++.dg/cpp1y/pr65202.C: Likewise.
* g++.dg/missing-symbol-2.C: New test case.
* g++.dg/other/do1.C: Update expected output to reflect
changes to reported locations of missing symbols.
* g++.dg/parse/error11.C: Likewise.
* g++.dg/template/error11.C: Likewise.
* gcc.dg/missing-symbol-2.c: New test case.
* gcc.dg/missing-symbol-3.c: New test case.
* gcc.dg/noncompile/940112-1.c: Update expected output to reflect
changes to reported locations of missing symbols.
* gcc.dg/noncompile/971104-1.c: Likewise.
* obj-c++.dg/exceptions-6.mm: Likewise.
* obj-c++.dg/pr48187.mm: Likewise.
* objc.dg/exceptions-6.m: Likewise.

From-SVN: r253690

7 years agoPR c/82301 - Updated test case g++.dg/ext/attr-ifunc-1.C (and others) in r253041...
Martin Sebor [Thu, 12 Oct 2017 17:37:56 +0000 (17:37 +0000)]
PR c/82301 - Updated test case g++.dg/ext/attr-ifunc-1.C (and others) in r253041 segfault on powerpc64

PR c/82301 - Updated test case g++.dg/ext/attr-ifunc-1.C (and others) in r253041 segfault on powerpc64
PR c/82435 - new __attribute__((alias)) warning gets in the way

gcc/ChangeLog:

PR other/82301
PR c/82435
* cgraphunit.c (maybe_diag_incompatible_alias): New function.
(handle_alias_pairs): Call it.
* common.opt (-Wattribute-alias): New option.
* doc/extend.texi (ifunc attribute): Discuss C++ specifics.
* doc/invoke.texi (-Wattribute-alias): Document.

gcc/testsuite/ChangeLog:

PR other/82301
PR c/82435
* g++.dg/ext/attr-ifunc-1.C: Update.
* g++.dg/ext/attr-ifunc-2.C: Same.
* g++.dg/ext/attr-ifunc-3.C: Same.
* g++.dg/ext/attr-ifunc-4.C: Same.
* g++.dg/ext/attr-ifunc-5.C: Same.
* g++.dg/ext/attr-ifunc-6.C: New test.
* g++.old-deja/g++.abi/vtable2.C: Update.
* gcc.dg/attr-ifunc-6.c: New test.
* gcc.dg/attr-ifunc-7.c: New test.
* gcc.dg/pr81854.c: Update.
* lib/target-supports.exp: Update.

From-SVN: r253688

7 years agoC++: avoid partial duplicate implementation of cp_parser_error
David Malcolm [Thu, 12 Oct 2017 17:29:15 +0000 (17:29 +0000)]
C++: avoid partial duplicate implementation of cp_parser_error

In r251026 (aka 3fe34694f0990d1d649711ede0326497f8a849dc,
"C/C++: show pertinent open token when missing a close token")
I copied part of cp_parser_error into cp_parser_required_error,
leading to duplication of code.

This patch eliminates this duplication by merging the two copies of the
code into a new cp_parser_error_1 subroutine.

Doing so removes an indentation level, making the patch appear to have
more churn than it really does.

The patch also undoes the change to g++.dg/parse/pragma2.C, as the
old behavior is restored.

From-SVN: r253686

7 years agorevert: re PR sanitizer/82353 (runtime ubsan crash)
Vladimir Makarov [Thu, 12 Oct 2017 17:06:29 +0000 (17:06 +0000)]
revert: re PR sanitizer/82353 (runtime ubsan crash)

2017-10-12  Vladimir Makarov  <vmakarov@redhat.com>

Revert
2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>
PR sanitizer/82353
* lra.c (collect_non_operand_hard_regs): Don't ignore operator
locations.
* lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
(make_hard_regno_born, make_hard_regno_dead): Update
bb_killed_pseudos and bb_gen_pseudos.

From-SVN: r253685

7 years ago* x86-tune-sched.c (ix86_adjust_cost): Fix Zen support.
Jan Hubicka [Thu, 12 Oct 2017 15:36:05 +0000 (17:36 +0200)]
* x86-tune-sched.c (ix86_adjust_cost): Fix Zen support.

From-SVN: r253684

7 years agoalpha.c (alpha_split_conditional_move): Use std::swap instead of manually swapping.
Uros Bizjak [Thu, 12 Oct 2017 14:46:45 +0000 (16:46 +0200)]
alpha.c (alpha_split_conditional_move): Use std::swap instead of manually swapping.

* config/alpha/alpha.c (alpha_split_conditional_move):
Use std::swap instead of manually swapping.
(alpha_stdarg_optimize_hook): Ditto.
(alpha_canonicalize_comparison): Ditto.

From-SVN: r253681

7 years agotree-loop-distribution.c (struct builtin_info): New struct.
Bin Cheng [Thu, 12 Oct 2017 14:33:30 +0000 (14:33 +0000)]
tree-loop-distribution.c (struct builtin_info): New struct.

* tree-loop-distribution.c (struct builtin_info): New struct.
(struct partition): Refactor fields into struct builtin_info.
(partition_free): Free struct builtin_info.
(build_size_arg_loc, build_addr_arg_loc): Delete.
(generate_memset_builtin, generate_memcpy_builtin): Get memory range
information from struct builtin_info.
(find_single_drs): New function refactored from classify_partition.
Also moved builtin validity checks to this function.
(compute_access_range, alloc_builtin): New functions.
(classify_builtin_st, classify_builtin_ldst): New functions.
(classify_partition): Refactor code into functions find_single_drs,
classify_builtin_st and classify_builtin_ldst.
(distribute_loop): Don't do runtime alias check when distributing
loop nest.
(find_seed_stmts_for_distribution): New function.
(pass_loop_distribution::execute): Refactor code finding seed
stmts into above function.  Support distribution for the innermost
two-level loop nest.  Adjust dump information.

gcc/testsuite
* gcc.dg/tree-ssa/ldist-28.c: New test.
* gcc.dg/tree-ssa/ldist-29.c: New test.
* gcc.dg/tree-ssa/ldist-30.c: New test.
* gcc.dg/tree-ssa/ldist-31.c: New test.

From-SVN: r253680

7 years agotree-loop-distribution.c: Adjust the general comment.
Bin Cheng [Thu, 12 Oct 2017 14:29:45 +0000 (14:29 +0000)]
tree-loop-distribution.c: Adjust the general comment.

* tree-loop-distribution.c: Adjust the general comment.
(NUM_PARTITION_THRESHOLD): New macro.
(ssa_name_has_uses_outside_loop_p): Support loop nest distribution.
(classify_partition): Skip builtin pattern of loop nest's inner loop.
(merge_dep_scc_partitions): New parameter ignore_alias_p and use it
in call to build_partition_graph.
(finalize_partitions): New parameter.  Make loop distribution more
conservative by fusing more partitions.
(distribute_loop): Don't do runtime alias check in case of loop nest
distribution.
(find_seed_stmts_for_distribution): New function.
(prepare_perfect_loop_nest): New function.
(pass_loop_distribution::execute): Refactor code finding seed stmts
and loop nest into above functions.  Support loop nest distribution.
Adjust dump information accordingly.

gcc/testsuite
* gcc.dg/tree-ssa/ldist-7.c: Adjust test string.
* gcc.dg/tree-ssa/ldist-16.c: Ditto.
* gcc.dg/tree-ssa/ldist-25.c: Ditto.
* gcc.dg/tree-ssa/ldist-33.c: New test.

From-SVN: r253679

7 years agotree-loop-distribution.c (break_alias_scc_partitions): Add comment and set PTYPE_SEQU...
Bin Cheng [Thu, 12 Oct 2017 14:25:36 +0000 (14:25 +0000)]
tree-loop-distribution.c (break_alias_scc_partitions): Add comment and set PTYPE_SEQUENTIAL for merged partition.

* tree-loop-distribution.c (break_alias_scc_partitions): Add comment
and set PTYPE_SEQUENTIAL for merged partition.

From-SVN: r253678

7 years agore PR tree-optimization/69728 (internal compiler error: in outer_projection_mupa...
Richard Biener [Thu, 12 Oct 2017 14:09:21 +0000 (14:09 +0000)]
re PR tree-optimization/69728 (internal compiler error: in outer_projection_mupa, at graphite-sese-to-poly.c:1175)

2017-10-12  Richard Biener  <rguenther@suse.de>

PR tree-optimization/69728
Revert
2017-09-19  Richard Biener  <rguenther@suse.de>

PR tree-optimization/69728
* graphite-sese-to-poly.c (schedule_error): New global.
(add_loop_schedule): Handle empty domain by failing the
schedule.
(build_original_schedule): Handle schedule_error.

* graphite-sese-to-poly.c (add_loop_schedule): Handle empty
domain by returning an unchanged schedule.

* gcc.dg/graphite/pr69728.c: Adjust to reflect we can handle
the loop now.  Remove unrelated undefined behavior.

From-SVN: r253677

7 years agogenrecog.c (validate_pattern): For VEC_SELECT verify that CONST_INT selectors are...
Jakub Jelinek [Thu, 12 Oct 2017 12:11:11 +0000 (14:11 +0200)]
genrecog.c (validate_pattern): For VEC_SELECT verify that CONST_INT selectors are 0 to GET_MODE_NUNITS (imode) - 1.

* genrecog.c (validate_pattern): For VEC_SELECT verify that
CONST_INT selectors are 0 to GET_MODE_NUNITS (imode) - 1.

From-SVN: r253676

7 years agoMakefile.in (TAGS): Merge all the *.def files into one pattern.
Aldy Hernandez [Thu, 12 Oct 2017 08:21:44 +0000 (08:21 +0000)]
Makefile.in (TAGS): Merge all the *.def files into one pattern.

* Makefile.in (TAGS): Merge all the *.def files into one pattern.
Handle params.def.

From-SVN: r253674

7 years agore PR c++/82159 (ICE: in assign_temp, at function.c:961)
Jakub Jelinek [Thu, 12 Oct 2017 07:23:24 +0000 (09:23 +0200)]
re PR c++/82159 (ICE: in assign_temp, at function.c:961)

PR c++/82159
* expr.c (store_field): Don't optimize away bitsize == 0 store
from CALL_EXPR with addressable return type.

* g++.dg/opt/pr82159-2.C: New test.

From-SVN: r253673

7 years agore PR sanitizer/82353 (runtime ubsan crash)
Jakub Jelinek [Thu, 12 Oct 2017 07:22:12 +0000 (09:22 +0200)]
re PR sanitizer/82353 (runtime ubsan crash)

PR target/82353
* gcc.target/i386/i386.exp (tests): Revert the '.C' extension change.
* gcc.target/i386/pr82353.C: Moved to ...
* g++.dg/ubsan/pr82353.C: ... here.  Restrict to i?86/x86_64 && lp64.

From-SVN: r253672

7 years agors6000: Remove TARGET_ISEL64
Segher Boessenkool [Thu, 12 Oct 2017 00:18:15 +0000 (02:18 +0200)]
rs6000: Remove TARGET_ISEL64

TARGET_ISEL64 just means TARGET_ISEL && TARGET_POWERPC64.  Since
everywhere it is used uses :GPR already, we can just as well use
TARGET_ISEL always.

* config/rs6000/rs6000.h (TARGET_ISEL64): Delete.
* config/rs6000/rs6000.md (sel): Delete mode attribute.
(mov<mode>cc, isel_signed_<mode>, isel_unsigned_<mode>,
*isel_reversed_signed_<mode>, *isel_reversed_unsigned_<mode>): Use
TARGET_ISEL instead of TARGET_ISEL<sel>.

From-SVN: r253671

7 years agoDaily bump.
GCC Administrator [Thu, 12 Oct 2017 00:16:13 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253670

7 years ago* config/rs6000/rs6000.c (rs6000_xcoff_asm_output_aligned_decl_common): Test for...
David Edelsohn [Thu, 12 Oct 2017 00:02:45 +0000 (00:02 +0000)]
* config/rs6000/rs6000.c (rs6000_xcoff_asm_output_aligned_decl_common): Test for NULL decl.

From-SVN: r253667

7 years agogo-system.h (__STDC_FORMAT_MACROS): Define before including any system header files...
Tony Reix [Wed, 11 Oct 2017 22:54:32 +0000 (22:54 +0000)]
go-system.h (__STDC_FORMAT_MACROS): Define before including any system header files, as is done in ../system.h.

* go-system.h (__STDC_FORMAT_MACROS): Define before including any
system header files, as is done in ../system.h.

From-SVN: r253666

7 years agors6000: Improve isel
Segher Boessenkool [Wed, 11 Oct 2017 22:40:52 +0000 (00:40 +0200)]
rs6000: Improve isel

This removes output_isel.  Instead, the define_insn's now output the
isel instructions directly.

It adds a reg_or_zero operand predicate, too, because the reg_or_cint
predicate is too lax here.  Also use it in the "reversed" variants of
the instructions.

* config/rs6000/predicates.md (zero_constant, all_ones_constant):
Move up in file.
(reg_or_cint_operand): Fix comment.
(reg_or_zero_operand): New predicate.
* config/rs6000/rs6000-protos.h (output_isel): Delete.
* config/rs6000/rs6000.c (output_isel): Delete.
* config/rs6000/rs6000.md (isel_signed_<mode>): Use reg_or_zero_operand
instead of reg_or_cint_operand.  Output instruction directly (not via
output_isel).
(isel_unsigned_<mode>): Ditto.
(*isel_reversed_signed_<mode>): Use reg_or_zero_operand instead of
gpc_reg_operand.  Add an instruction alternative for this.  Output
instruction directly.
(*isel_reversed_unsigned_<mode>): Ditto.

From-SVN: r253665

7 years agoruntime: fix issues on AIX about uintptr(_t)
Ian Lance Taylor [Wed, 11 Oct 2017 21:16:49 +0000 (21:16 +0000)]
runtime: fix issues on AIX about uintptr(_t)

    Reviewed-on: https://go-review.googlesource.com/69891

From-SVN: r253664

7 years agoi386.c (ix86_canonicalize_comparison): New function.
Uros Bizjak [Wed, 11 Oct 2017 21:15:59 +0000 (23:15 +0200)]
i386.c (ix86_canonicalize_comparison): New function.

* config/i386/i386.c (ix86_canonicalize_comparison): New function.
(TARGET_CANONICALIZE_COMPARISON): Define.

testsuite/ChangeLog:

* gcc.target/i386/387-ficom-2.c: New test.

From-SVN: r253663

7 years agore PR middle-end/80421 (Case dispatch is scrambled in switch-statement)
Jakub Jelinek [Wed, 11 Oct 2017 20:51:08 +0000 (22:51 +0200)]
re PR middle-end/80421 (Case dispatch is scrambled in switch-statement)

PR middle-end/80421
* gcc.c-torture/execute/pr80421.c: New test.

From-SVN: r253662

7 years agore PR tree-optimization/78558 (Incorrect loop optimization leads to crash)
Jakub Jelinek [Wed, 11 Oct 2017 20:50:46 +0000 (22:50 +0200)]
re PR tree-optimization/78558 (Incorrect loop optimization leads to crash)

PR tree-optimization/78558
* gcc.dg/vect/pr78558.c: New test.

From-SVN: r253661

7 years agore PR c++/82414 (Issue with ODR/LTO in G++)
Jakub Jelinek [Wed, 11 Oct 2017 20:50:27 +0000 (22:50 +0200)]
re PR c++/82414 (Issue with ODR/LTO in G++)

PR c++/82414
* g++.dg/lto/pr82414_0.C: New test.

From-SVN: r253660

7 years agore PR c++/78523 (ICE on valid lambda code with implicit capture)
Jakub Jelinek [Wed, 11 Oct 2017 20:50:07 +0000 (22:50 +0200)]
re PR c++/78523 (ICE on valid lambda code with implicit capture)

PR c++/78523
* g++.dg/cpp1y/pr78523.C: New test.

From-SVN: r253659

7 years agore PR c++/80194 (ICE with local constant referenced by a lambda expression)
Jakub Jelinek [Wed, 11 Oct 2017 20:49:46 +0000 (22:49 +0200)]
re PR c++/80194 (ICE with local constant referenced by a lambda expression)

PR c++/80194
* g++.dg/cpp1y/pr80194.C: New test.

From-SVN: r253658

7 years agore PR target/81422 ([aarch64] internal compiler error: in update_equiv_regs, at ira...
Qing Zhao [Wed, 11 Oct 2017 19:43:54 +0000 (19:43 +0000)]
re PR target/81422 ([aarch64] internal compiler error: in update_equiv_regs, at ira.c:3425)

/gcc
2017-10-11  Qing Zhao  <qing.zhao@oracle.com>

PR target/81422
* config/aarch64/aarch64.c (aarch64_load_symref_appropriately):
Check whether the dest is REG before adding REG_EQUIV note.

/gcc/testsuite
2017-10-11  Qing Zhao  <qing.zhao@oracle.com>

PR target/81422
       * gcc.target/aarch64/pr81422.C: New test.

From-SVN: r253657

7 years agore PR sanitizer/82353 (runtime ubsan crash)
Vladimir Makarov [Wed, 11 Oct 2017 19:35:48 +0000 (19:35 +0000)]
re PR sanitizer/82353 (runtime ubsan crash)

2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>

PR sanitizer/82353
* lra.c (collect_non_operand_hard_regs): Don't ignore operator
locations.
* lra-lives.c (bb_killed_pseudos, bb_gen_pseudos): Move up.
(make_hard_regno_born, make_hard_regno_dead): Update
bb_killed_pseudos and bb_gen_pseudos.

2017-10-11  Vladimir Makarov  <vmakarov@redhat.com>

PR sanitizer/82353
* gcc.target/i386/i386.exp (tests): Permit '.C' extension.
* gcc.target/i386/pr82353.C: New.

From-SVN: r253656

7 years ago[PATCH] Include path enumeration
Nathan Sidwell [Wed, 11 Oct 2017 18:09:59 +0000 (18:09 +0000)]
[PATCH] Include path enumeration

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00693.html
gcc/
* incpath.h (enum incpath_kind): Name enum, prefix values.
(add_path, add_cpp_dir_path, get_added_cpp_dirs): Use incpath_kind.
* incpath.c (heads, tails): Use INC_MAX.
(add_env_var_paths, add_standard_paths): Use incpath_kind.
(merge_include_chains, split_quote_chain,
register_include_chains): Update incpath_kind names.
(add_cpp_dir_path, add_path, get_added_cpp_dirs): Use incpath_kind.
* config/darwin-c.c (add_system_framework_path): Update incpath_kind
names.
(add_framework_path, darwin_register_objc_includes): Likewise.
* config/vms/vms-c.c (vms_c_register_includes): Likewise.
gcc/c-family/
* c-opts.c (add_prefixed_path): Change chain to incpath_kind.
(c_common_handle_option): Update incpath_kind names.
gcc/fortran/
* cpp.c (gfc_cpp_add_include_path): Update incpath_e names.
(gfc_cpp_add_include_path_after): Likewise.

From-SVN: r253654

7 years agoi386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387): Do not use float_operator operator...
Uros Bizjak [Wed, 11 Oct 2017 18:00:55 +0000 (20:00 +0200)]
i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387): Do not use float_operator operator predicate.

* config/i386/i386.md (*cmp<X87MODEF:mode>_<SWI24:mode>_i387):
Do not use float_operator operator predicate.
(*cmp<X87MODEF:mode>_<SWI24:mode>_cc_i387): Ditto.
* config/i386/predicates.md (float_operator): Remove predicate.

* config/i386/i386.md (*jcc<mode>_0_i387): Remove insn pattern.
(*jccxf_i387): Ditto.
(*jcc<mode>_i387): Ditto.
(*jccu<mode>_i387): Ditto.
(*jcc<X87MODEF:mode>_<SWI24:mode>_i387): Ditto.
(*jcc_*_i387 splitters): Remove.
* config/i386/i386-protos.h (ix86_split_fp_branch): Remove prototype.
* config/i386/i386.c (ix86_split_fp_branch): Remove.
* config/i386/predicates.md (ix86_swapped_fp_comparison_operator):
Remove predicate.

testsuite/ChangeLog:

* gcc.target/i386/387-ficom-1.c: New test.

From-SVN: r253653

7 years agoprofile-count.h (slow_safe_scale_64bit): New function.
Jan Hubicka [Wed, 11 Oct 2017 17:37:18 +0000 (19:37 +0200)]
profile-count.h (slow_safe_scale_64bit): New function.

* profile-count.h (slow_safe_scale_64bit): New function.
(safe_scale_64bit): New inline.
(profile_count::max_safe_multiplier): Remove; use safe_scale_64bit.
* profile-count.c: Include wide-int.h
(slow_safe_scale_64bit): New.

From-SVN: r253652

7 years agostruct-layout-1_generate.c (generate_fields): Fix typo in address computation of...
Jeff Law [Wed, 11 Oct 2017 17:21:53 +0000 (11:21 -0600)]
struct-layout-1_generate.c (generate_fields): Fix typo in address computation of end of complex_attrib_array_types.

* gcc.dg/struct-layout-1_generate.c (generate_fields): Fix typo in
address computation of end of complex_attrib_array_types.

From-SVN: r253650

7 years ago[PATCH] DECL_ASSEMBLER_NAME and friends
Nathan Sidwell [Wed, 11 Oct 2017 16:35:18 +0000 (16:35 +0000)]
[PATCH] DECL_ASSEMBLER_NAME and friends

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00582.html
* tree.h (DECL_ASSEMBLER_NAME_SET_P): Don't check
HAS_DECL_ASSEMBLER_NAME_P.
* gimple-expr.c (gimple_decl_printable_name: Check
HAS_DECL_ASSEMBLER_NAME_P too.
* ipa-utils.h (type_in_anonymous_namespace_p): Check
DECL_ASSEMBLER_NAME_SET_P of TYPE_NAME.
(odr_type_p): No need to assert TYPE_NAME is a TYPE_DECL.
* passes.c (rest_of_decl_compilation): Check
HAS_DECL_ASSEMBLER_NAME_P too.
* recog.c (verify_changes): Likewise.
* tree-pretty-print.c (dump_decl_name): Likewise.
* tree-ssa-structalias.c (alias_get_name): Likewise.  Reimplement.

c/
* c-decl.c (grokdeclarator): Check HAS_DECL_ASSEMBLER_NAME_P too.

From-SVN: r253649

7 years ago[PATCH] DECL_ASSEMBLER_NAME and friends
Nathan Sidwell [Wed, 11 Oct 2017 15:33:51 +0000 (15:33 +0000)]
[PATCH] DECL_ASSEMBLER_NAME and friends

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00582.html
* tree.h (DECL_ASSEMBLER_NAME_RAW): New.
(SET_DECL_ASSEMBLER_NAME): Use it.
(DECL_ASSEMBLER_NAME_SET_P): Likewise.
(COPY_DECL_ASSEMBLER_NAME): Likewise.
* tree.c (decl_assembler_name): Use DECL_ASSEMBLER_NAME_RAW.

lto/
* lto.c (mentions_vars_p_decl_with_vis): Use
DECL_ASSEMBLER_NAME_RAW.
(lto_fixup_prevailing_decls): Likewise.

cp
* decl2.c (struct mangled_decl_hash): Use DECL_ASSEMBLER_NAME_RAW.
(record_mangling): Likewise.

From-SVN: r253647

7 years agoconfig.gcc (i386, x86_64): Add extra objects.
Jan Hubicka [Wed, 11 Oct 2017 15:17:23 +0000 (17:17 +0200)]
config.gcc (i386, x86_64): Add extra objects.

* config.gcc (i386, x86_64): Add extra objects.
* i386/i386-protos.h (ix86_rip_relative_addr_p): Declare.
(ix86_min_insn_size): Declare.
(ix86_issue_rate): Declare.
(ix86_adjust_cost): Declare.
(ia32_multipass_dfa_lookahead): Declare.
(ix86_macro_fusion_p): Declare.
(ix86_macro_fusion_pair_p): Declare.
(ix86_bd_has_dispatch): Declare.
(ix86_bd_do_dispatch): Declare.
(ix86_core2i7_init_hooks): Declare.
(ix86_atom_sched_reorder): Declare.
* i386/i386.c Move all CPU cost tables to x86-tune-costs.h.
(COSTS_N_BYTES): Move to x86-tune-costs.h.
(DUMMY_STRINGOP_ALGS):x86-tune-costs.h.
(rip_relative_addr_p): Rename to ...
(ix86_rip_relative_addr_p): ... this one; export.
(memory_address_length): Update.
(ix86_issue_rate): Move to x86-tune-sched.c.
(ix86_flags_dependent): Move to x86-tune-sched.c.
(ix86_agi_dependent): Move to x86-tune-sched.c.
(exact_dependency_1): Move to x86-tune-sched.c.
(exact_store_load_dependency): Move to x86-tune-sched.c.
(ix86_adjust_cost): Move to x86-tune-sched.c.
(ia32_multipass_dfa_lookahead): Move to x86-tune-sched.c.
(ix86_macro_fusion_p): Move to x86-tune-sched.c.
(ix86_macro_fusion_pair_p): Move to x86-tune-sched.c.
(do_reorder_for_imul): Move to x86-tune-sched-atom.c.
(swap_top_of_ready_list): Move to x86-tune-sched-atom.c.
(ix86_sched_reorder): Move to x86-tune-sched-atom.c.
(core2i7_first_cycle_multipass_init): Move to x86-tune-sched-core.c.
(core2i7_dfa_post_advance_cycle): Move to x86-tune-sched-core.c.
(min_insn_size): Rename to ...
(ix86_min_insn_size): ... this one; export.
(core2i7_first_cycle_multipass_begin): Move to x86-tune-sched-core.c.
(core2i7_first_cycle_multipass_issue): Move to x86-tune-sched-core.c.
(core2i7_first_cycle_multipass_backtrack): Move to x86-tune-sched-core.c.
(core2i7_first_cycle_multipass_end): Move to x86-tune-sched-core.c.
(core2i7_first_cycle_multipass_fini): Move to x86-tune-sched-core.c.
(ix86_sched_init_global): Break up logic to ix86_core2i7_init_hooks.
(ix86_avoid_jump_mispredicts): Update.
(TARGET_SCHED_DISPATCH): Move to ix86-tune-sched-bd.c.
(TARGET_SCHED_DISPATCH_DO): Move to ix86-tune-sched-bd.c.
(TARGET_SCHED_REORDER): Move to ix86-tune-sched-bd.c.
(DISPATCH_WINDOW_SIZE): Move to ix86-tune-sched-bd.c.
(MAX_DISPATCH_WINDOWS): Move to ix86-tune-sched-bd.c.
(MAX_INSN): Move to ix86-tune-sched-bd.c.
(MAX_IMM): Move to ix86-tune-sched-bd.c.
(MAX_IMM_SIZE): Move to ix86-tune-sched-bd.c.
(MAX_IMM_32): Move to ix86-tune-sched-bd.c.
(MAX_IMM_64): Move to ix86-tune-sched-bd.c.
(MAX_LOAD): Move to ix86-tune-sched-bd.c.
(MAX_STORE): Move to ix86-tune-sched-bd.c.
(BIG): Move to ix86-tune-sched-bd.c.
(enum dispatch_group): Move to ix86-tune-sched-bd.c.
(enum insn_path): Move to ix86-tune-sched-bd.c.
(get_mem_group): Move to ix86-tune-sched-bd.c.
(is_cmp): Move to ix86-tune-sched-bd.c.
(dispatch_violation): Move to ix86-tune-sched-bd.c.
(is_branch): Move to ix86-tune-sched-bd.c.
(is_prefetch): Move to ix86-tune-sched-bd.c.
(init_window): Move to ix86-tune-sched-bd.c.
(allocate_window): Move to ix86-tune-sched-bd.c.
(init_dispatch_sched): Move to ix86-tune-sched-bd.c.
(is_end_basic_block): Move to ix86-tune-sched-bd.c.
(process_end_window): Move to ix86-tune-sched-bd.c.
(allocate_next_window): Move to ix86-tune-sched-bd.c.
(find_constant): Move to ix86-tune-sched-bd.c.
(get_num_immediates): Move to ix86-tune-sched-bd.c.
(has_immediate): Move to ix86-tune-sched-bd.c.
(get_insn_path): Move to ix86-tune-sched-bd.c.
(get_insn_group): Move to ix86-tune-sched-bd.c.
(count_num_restricted): Move to ix86-tune-sched-bd.c.
(fits_dispatch_window): Move to ix86-tune-sched-bd.c.
(add_insn_window): Move to ix86-tune-sched-bd.c.
(add_to_dispatch_window): Move to ix86-tune-sched-bd.c.
(debug_dispatch_window_file): Move to ix86-tune-sched-bd.c.
(debug_dispatch_window): Move to ix86-tune-sched-bd.c.
(debug_insn_dispatch_info_file): Move to ix86-tune-sched-bd.c.
(debug_ready_dispatch): Move to ix86-tune-sched-bd.c.
(do_dispatch): Move to ix86-tune-sched-bd.c.
(has_dispatch): Move to ix86-tune-sched-bd.c.
* i386/t-i386: Add new object files.
* i386/x86-tune-costs.h: New file.
* i386/x86-tune-sched-atom.c: New file.
* i386/x86-tune-sched-bd.c: New file.
* i386/x86-tune-sched-core.c: New file.
* i386/x86-tune-sched.c: New file.

From-SVN: r253646

7 years agopretty-print.c [_WIN32] (colorize_init): Remove.
Liu Hao [Wed, 11 Oct 2017 13:34:44 +0000 (13:34 +0000)]
pretty-print.c [_WIN32] (colorize_init): Remove.

2017-10-11  Liu Hao  <lh_mouse@126.com>

* pretty-print.c [_WIN32] (colorize_init): Remove.  Use
the generic version below instead.
(should_colorize): Recognize Windows consoles as terminals
for MinGW targets.
* pretty-print.c [__MINGW32__] (write_all): New function.
[__MINGW32__] (find_esc_head): Likewise.
[__MINGW32__] (find_esc_terminator): Likewise.
[__MINGW32__] (eat_esc_sequence): Likewise.
[__MINGW32__] (mingw_ansi_fputs): New function that handles
ANSI escape codes.
(pp_write_text_to_stream): Use mingw_ansi_fputs instead of fputs
for MinGW targets.

From-SVN: r253645

7 years agotree-ssa-loop-niter.c (infer_loop_bounds_from_pointer_arith): Properly call analyze_s...
Richard Biener [Wed, 11 Oct 2017 13:20:59 +0000 (13:20 +0000)]
tree-ssa-loop-niter.c (infer_loop_bounds_from_pointer_arith): Properly call analyze_scalar_evolution with the loop of the stmt.

2017-10-11  Richard Biener  <rguenther@suse.de>

* tree-ssa-loop-niter.c (infer_loop_bounds_from_pointer_arith):
Properly call analyze_scalar_evolution with the loop of the stmt.

From-SVN: r253644

7 years agotree.def (POLYNOMIAL_CHREC): Remove CHREC_VARIABLE tree operand.
Richard Biener [Wed, 11 Oct 2017 13:18:46 +0000 (13:18 +0000)]
tree.def (POLYNOMIAL_CHREC): Remove CHREC_VARIABLE tree operand.

2017-10-11  Richard Biener  <rguenther@suse.de>

* tree.def (POLYNOMIAL_CHREC): Remove CHREC_VARIABLE tree operand.
* tree-core.h (tree_base): Add chrec_var union member.
* tree.h (CHREC_VAR): Remove.
(CHREC_LEFT, CHREC_RIGHT, CHREC_VARIABLE): Adjust.
* tree-chrec.h (build_polynomial_chrec): Adjust.
* tree-chrec.c (reset_evolution_in_loop): Use build_polynomial_chrec.
* tree-pretty-print.c (dump_generic_node): Use CHREC_VARIABLE.

From-SVN: r253643

7 years agoX+Y < X iff Y<0 moved to match.pd
Marc Glisse [Wed, 11 Oct 2017 13:18:06 +0000 (15:18 +0200)]
X+Y < X iff Y<0 moved to match.pd

2017-10-11  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* fold-const.c (fold_binary_loc) [X +- Y CMP X]: Move ...
* match.pd: ... here.
((T) X == (T) Y): Relax condition.

gcc/testsuite/
* gcc.dg/Wstrict-overflow-7.c: Xfail.
* gcc.dg/pragma-diag-3.c: Likewise.

From-SVN: r253642

7 years agore PR tree-optimization/82472 (ICE in generate_code_for_partition, at tree-loop-distr...
Bin Cheng [Wed, 11 Oct 2017 13:04:05 +0000 (13:04 +0000)]
re PR tree-optimization/82472 (ICE in generate_code_for_partition, at tree-loop-distribution.c:1145)

PR tree-optimization/82472
* tree-loop-distribution.c (sort_partitions_by_post_order): Refine
comment.
(break_alias_scc_partitions): Update postorder number.

gcc/testsuite
* gcc.dg/tree-ssa/pr82472.c: New test.

From-SVN: r253641

7 years agoDo not error for no_sanitize attributes (PR sanitizer/82490).
Martin Liska [Wed, 11 Oct 2017 12:31:59 +0000 (14:31 +0200)]
Do not error for no_sanitize attributes (PR sanitizer/82490).

2017-10-11  Martin Liska  <mliska@suse.cz>

PR sanitizer/82490
* opts.c (parse_no_sanitize_attribute): Do not use error_value
variable.
* opts.h (parse_no_sanitize_attribute): Remove last argument.
2017-10-11  Martin Liska  <mliska@suse.cz>

PR sanitizer/82490
* c-attribs.c (handle_no_sanitize_attribute): Report directly
Wattributes warning.
2017-10-11  Martin Liska  <mliska@suse.cz>

PR sanitizer/82490
* c-c++-common/ubsan/attrib-5.c: New test.

From-SVN: r253640

7 years agoFix use-after-scope error.
Martin Liska [Wed, 11 Oct 2017 12:30:03 +0000 (14:30 +0200)]
Fix use-after-scope error.

2017-10-11  Martin Liska  <mliska@suse.cz>

* print-rtl.c (print_insn): Move declaration of idbuf
to same scope as name.

From-SVN: r253639

7 years agoRevert last commit.
Martin Liska [Wed, 11 Oct 2017 12:29:13 +0000 (14:29 +0200)]
Revert last commit.

From-SVN: r253638

7 years agoDo not handled volatile arguments (PR sanitizer/82484).
Martin Liska [Wed, 11 Oct 2017 12:24:44 +0000 (14:24 +0200)]
Do not handled volatile arguments (PR sanitizer/82484).

2017-10-11  Martin Liska  <mliska@suse.cz>

PR sanitizer/82484
* sanopt.c (sanitize_rewrite_addressable_params): Do not handle
volatile arguments.
2017-10-11  Martin Liska  <mliska@suse.cz>

PR sanitizer/82484
* gcc.dg/asan/pr82484.c: New test.

From-SVN: r253637

7 years agoFix a test-case for Darwin.
Martin Liska [Wed, 11 Oct 2017 12:22:48 +0000 (14:22 +0200)]
Fix a test-case for Darwin.

2017-10-11  Martin Liska  <mliska@suse.cz>

* c-c++-common/ubsan/ptr-overflow-sanitization-1.c: Scan
optimized dump rather than assembly.

From-SVN: r253636

7 years agoEnable ifunc attribute by default for ARM GNU/Linux
Adhemerval Zanella [Wed, 11 Oct 2017 12:14:07 +0000 (12:14 +0000)]
Enable ifunc attribute by default for ARM GNU/Linux

Similar to other architectures with IFUNC binutils/glibc support, this
patch enables the ifunc attribute for ARM GNU/Linux.  Although not
required for build master GLIBC, the intention is to allow refactor
its assembly implementation to C.

Tested compilation of glibc (in conjunction with a glibc patch to
support using the attribute on ARM) with build-many-glibcs.py (with
a patch to add a armv7 variant which enables multiarch).  I have
not run the GCC tests for ARM.

* config.gcc (default_gnu_indirect_function): Default to yes for
arm*-*-linux* with glibc.

From-SVN: r253635

7 years ago* g++.dg/cpp/string-3.C: Fix dg-final.
Nathan Sidwell [Wed, 11 Oct 2017 11:58:05 +0000 (11:58 +0000)]
* g++.dg/cpp/string-3.C: Fix dg-final.

From-SVN: r253634

7 years agore PR c++/80412 ([c++17] crash with class template deduction guide and inheritance)
Paolo Carlini [Wed, 11 Oct 2017 10:01:23 +0000 (10:01 +0000)]
re PR c++/80412 ([c++17] crash with class template deduction guide and inheritance)

2017-10-11  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/80412
* g++.dg/cpp1z/class-deduction44.C: New.

From-SVN: r253632

7 years agore PR c++/82230 (ICE: in tsubst, at cp/pt.c:13686 when binding lambda to variable...
Paolo Carlini [Wed, 11 Oct 2017 09:04:29 +0000 (09:04 +0000)]
re PR c++/82230 (ICE: in tsubst, at cp/pt.c:13686 when binding lambda to variable inside a generic lambda inside a template member function inside a template class)

2017-10-11  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/82230
* g++.dg/cpp1y/lambda-generic-ice8.C: New.

From-SVN: r253631

7 years agore PR c++/81299 (Spurious "set but not used" warning with constexpr variable)
Paolo Carlini [Wed, 11 Oct 2017 08:50:15 +0000 (08:50 +0000)]
re PR c++/81299 (Spurious "set but not used" warning with constexpr variable)

2017-10-11  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/81299
* g++.dg/cpp1y/lambda-generic-ice7.C: New.

From-SVN: r253630

7 years agotree-scalar-evolution.c (get_scalar_evolution): Handle default-defs and types we...
Richard Biener [Wed, 11 Oct 2017 07:21:05 +0000 (07:21 +0000)]
tree-scalar-evolution.c (get_scalar_evolution): Handle default-defs and types we do not want to analyze.

2017-10-11  Richard Biener  <rguenther@suse.de>

* tree-scalar-evolution.c (get_scalar_evolution): Handle
default-defs and types we do not want to analyze.
(interpret_loop_phi): Replace unreachable code with an assert.
(compute_scalar_evolution_in_loop): Remove and inline ...
(analyze_scalar_evolution_1): ... here, replacing condition with
what makes the intent clearer.  Remove handling of cases
get_scalar_evolution now handles.

From-SVN: r253629

7 years agoAllow 2 insns from sched group to issue in same cycle, if no stalls needed.
James E Wilson [Wed, 11 Oct 2017 03:23:41 +0000 (20:23 -0700)]
Allow 2 insns from sched group to issue in same cycle, if no stalls needed.

gcc/
PR rtl-optimization/81434
* haifa-sched.c (prune_ready_list): Init min_cost_group to 0.  Update
comment for main loop.  In sched_group_found if, also add checks for
pass and min_cost_group.

From-SVN: r253628

7 years agoDaily bump.
GCC Administrator [Wed, 11 Oct 2017 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253627

7 years agors6000: insn_cost
Segher Boessenkool [Wed, 11 Oct 2017 00:11:23 +0000 (02:11 +0200)]
rs6000: insn_cost

This adds an implementation of the insn_cost hook to rs6000.

This implementations is very minimal (so far).  It is mostly based on
how many machine instructions are generated by an RTL insn, and it also
looks at the instruction type.  Floating point insns are costed as if
all machine instructions it generates are floating point; the other
insns are treated as if all but one are integer insns (and one is the
specified type).  Load instructions are treated as costing twice as
much, and load locked and sync insns as three times as much (just like
the original costs), and integer div and mul are handled as well.

Each define_insn (etc.) can set a "cost" attribute to override this
general cost.  With optimization for size, the cost is set equal to the
value of the "length" attribute.

With this, the majority of cost differences between old and new are
where the old was wrong.  Also, benchmarks show a slight win (if
anything).  Some refinements are obviously needed.

* config/rs6000/rs6000.c (TARGET_INSN_COST): New.
(rs6000_insn_cost): New function.
* config/rs6000/rs6000.md (cost): New attribute.

From-SVN: r253624

7 years ago[C++ PATCH] hash-table for extern-c fns.
Nathan Sidwell [Tue, 10 Oct 2017 20:50:26 +0000 (20:50 +0000)]
[C++ PATCH] hash-table for extern-c fns.

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00614.html
* name-lookup.c (extern_c_fns): Rename to ...
(extern_c_decls): ... here.
(check_extern_c_conflict, extern_c_linkage_bindings): Update.
(do_pushdecl): Check extern-c fns and vars.

* g++.dg/lookup/extern-c-redecl6.C: New.
* g++.dg/lookup/extern-c-hidden.C: Adjust diagnostics.
* g++.dg/lookup/extern-c-redecl.C: Likewise.
* g++.old-deja/g++.other/using9.C: Likewise.

From-SVN: r253622

7 years agore PR c++/78006 (Segmentation fault with 'using' and generic lambda trailing return...
Paolo Carlini [Tue, 10 Oct 2017 20:46:26 +0000 (20:46 +0000)]
re PR c++/78006 (Segmentation fault with 'using' and generic lambda trailing return types)

2017-10-10  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/78006
* g++.dg/cpp1y/auto-fn40.C: New.

From-SVN: r253621

7 years ago[C++ PATCH] Kill unneeded hash specialization
Nathan Sidwell [Tue, 10 Oct 2017 20:42:45 +0000 (20:42 +0000)]
[C++ PATCH] Kill unneeded hash specialization

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00621.html
* cp-tree.h (default_hash_traits <lang_identifier *>): Delete
specialization.

From-SVN: r253620

7 years agore PR c++/81032 (ICE with lambda and broken constexpr)
Paolo Carlini [Tue, 10 Oct 2017 20:16:40 +0000 (20:16 +0000)]
re PR c++/81032 (ICE with lambda and broken constexpr)

2017-10-10  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/81032
* g++.dg/cpp1y/lambda-generic-ice6.C: New.

From-SVN: r253619

7 years agore PR rtl-optimization/68205 (ICE compiling gcc.c-torture/execute/20040709-2.c with...
Jakub Jelinek [Tue, 10 Oct 2017 20:12:08 +0000 (22:12 +0200)]
re PR rtl-optimization/68205 (ICE compiling gcc.c-torture/execute/20040709-2.c with -fno-common on arm-none-eabi)

PR rtl-optimization/68205
* gcc.c-torture/execute/20040709-3.c: New test.

From-SVN: r253618

7 years agore PR c++/67625 (some constexpr expressions rejected as enumerator value)
Jakub Jelinek [Tue, 10 Oct 2017 20:11:47 +0000 (22:11 +0200)]
re PR c++/67625 (some constexpr expressions rejected as enumerator value)

2017-10-10  Jakub Jelinek  <jakub@redhat.com>

PR c++/67625
* g++.dg/cpp0x/pr67625.C: New test.

From-SVN: r253617

7 years agore PR middle-end/70887 (internal compiler error in trunc_int_for_mode, at explow...
Jakub Jelinek [Tue, 10 Oct 2017 20:11:21 +0000 (22:11 +0200)]
re PR middle-end/70887 (internal compiler error in trunc_int_for_mode, at explow.c:78)

2017-10-10  Jakub Jelinek  <jakub@redhat.com>

PR middle-end/70887
* g++.dg/cpp0x/pr70887.C: New test.

From-SVN: r253616

7 years agore PR c++/70338 (ICE combining debug symbols, range-for in lambda in function templat...
Jakub Jelinek [Tue, 10 Oct 2017 20:10:56 +0000 (22:10 +0200)]
re PR c++/70338 (ICE combining debug symbols, range-for in lambda in function template accessing captured variable-size array)

PR c++/70338
* g++.dg/cpp0x/pr70338.C: New test.

From-SVN: r253615

7 years agore PR c++/77786 (ICE in tsubst_copy, at cp/pt.c:13040)
Jakub Jelinek [Tue, 10 Oct 2017 20:10:25 +0000 (22:10 +0200)]
re PR c++/77786 (ICE in tsubst_copy, at cp/pt.c:13040)

PR c++/77786
* g++.dg/cpp1y/pr77786.C: New test.

From-SVN: r253614

7 years agore PR c++/71875 (template specialization compile error)
Jakub Jelinek [Tue, 10 Oct 2017 20:10:00 +0000 (22:10 +0200)]
re PR c++/71875 (template specialization compile error)

PR c++/71875
* g++.dg/cpp1y/pr71875.C: New test.

From-SVN: r253613

7 years agore PR c++/77578 (ICE in cp_parser_omp_for_loop (cp/parser.c:29404))
Jakub Jelinek [Tue, 10 Oct 2017 20:09:29 +0000 (22:09 +0200)]
re PR c++/77578 (ICE in cp_parser_omp_for_loop (cp/parser.c:29404))

PR c++/77578
* g++.dg/gomp/pr77578.C: New test.

From-SVN: r253612

7 years agore PR middle-end/70100 (ICE: in execute, at cfgexpand.c:6066)
Jakub Jelinek [Tue, 10 Oct 2017 20:09:01 +0000 (22:09 +0200)]
re PR middle-end/70100 (ICE: in execute, at cfgexpand.c:6066)

PR middle-end/70100
* g++.dg/opt/pr70100.C: New test.

From-SVN: r253611

7 years agore PR c++/68252 (left operand of shift expression, while we shift > 0 integer)
Jakub Jelinek [Tue, 10 Oct 2017 20:08:36 +0000 (22:08 +0200)]
re PR c++/68252 (left operand of shift expression, while we shift > 0 integer)

2017-10-10  Jakub Jelinek  <jakub@redhat.com>

PR c++/68252
* g++.dg/other/pr68252.C: New test.

From-SVN: r253610

7 years agore PR target/79565 (ICE in copy_to_mode_reg, at explow.c:612)
Jakub Jelinek [Tue, 10 Oct 2017 20:06:33 +0000 (22:06 +0200)]
re PR target/79565 (ICE in copy_to_mode_reg, at explow.c:612)

PR target/79565
PR target/82483
* config/i386/i386.c (ix86_init_mmx_sse_builtins): Add
OPTION_MASK_ISA_MMX for __builtin_ia32_maskmovq,
__builtin_ia32_vec_ext_v4hi and __builtin_ia32_vec_set_v4hi.
(ix86_expand_builtin): Treat OPTION_MASK_ISA_MMX similarly
to OPTION_MASK_ISA_AVX512VL - builtins that have both
OPTION_MASK_ISA_MMX and some other bit set require both
mmx and the ISAs without the mmx bit.
* config/i386/i386-builtin.def (__builtin_ia32_cvtps2pi,
__builtin_ia32_cvttps2pi, __builtin_ia32_cvtpi2ps,
__builtin_ia32_pavgb, __builtin_ia32_pavgw, __builtin_ia32_pmulhuw,
__builtin_ia32_pmaxub, __builtin_ia32_pmaxsw, __builtin_ia32_pminub,
__builtin_ia32_pminsw, __builtin_ia32_psadbw, __builtin_ia32_pmovmskb,
__builtin_ia32_pshufw, __builtin_ia32_cvtpd2pi,
__builtin_ia32_cvttpd2pi, __builtin_ia32_cvtpi2pd,
__builtin_ia32_pmuludq, __builtin_ia32_pabsb, __builtin_ia32_pabsw,
__builtin_ia32_pabsd, __builtin_ia32_phaddw, __builtin_ia32_phaddd,
__builtin_ia32_phaddsw, __builtin_ia32_phsubw, __builtin_ia32_phsubd,
__builtin_ia32_phsubsw, __builtin_ia32_pmaddubsw,
__builtin_ia32_pmulhrsw, __builtin_ia32_pshufb, __builtin_ia32_psignb,
__builtin_ia32_psignw, __builtin_ia32_psignd, __builtin_ia32_movntq,
__builtin_ia32_paddq, __builtin_ia32_psubq, __builtin_ia32_palignr):
Add OPTION_MASK_ISA_MMX.

* gcc.target/i386/pr82483-1.c: New test.
* gcc.target/i386/pr82483-2.c: New test.

Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>
From-SVN: r253609

7 years ago[C++ PATCH] Hash mangling alias
Nathan Sidwell [Tue, 10 Oct 2017 19:59:12 +0000 (19:59 +0000)]
[C++ PATCH] Hash mangling alias

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00618.html
* decl2.c (struct mangled_decl_hash): New hash traits.
(mangled_decls): Make hash_table<mangled_decl_hash>.
(generate_mangling_alias, record_mangling): Adjust.

From-SVN: r253608

7 years agofold-vec-mult-int128-p8.c: Update options
Will Schmidt [Tue, 10 Oct 2017 19:06:13 +0000 (19:06 +0000)]
fold-vec-mult-int128-p8.c: Update options

2017-10-10  Will Schmidt <will_schmidt@vnet.ibm.com>

* gcc.target/powerpc/fold-vec-mult-int128-p8.c: Update options
* gcc.target/powerpc/fold-vec-mult-int128-p9.c: Update expected
instruction list.

From-SVN: r253606

7 years ago[PATCH] preprocessor stringizing raw strings
Nathan Sidwell [Tue, 10 Oct 2017 18:56:31 +0000 (18:56 +0000)]
[PATCH] preprocessor stringizing raw strings

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00611.html
libcpp/
PR preprocessor/82506
* macro.c (cpp_quote_string): Escape raw LFs.

gcc/testsuite/
PR preprocessor/82506
* g++.dg/cpp/string-3.C: New.

From-SVN: r253605

7 years agoconfig.gcc (armv7*-*-freebsd*): New target.
Andreas Tobler [Tue, 10 Oct 2017 18:33:48 +0000 (20:33 +0200)]
config.gcc (armv7*-*-freebsd*): New target.

2017-10-10  Andreas Tobler  <andreast@gcc.gnu.org>

    * config.gcc (armv7*-*-freebsd*): New target.
    (armv6*-*-freebsd*): Remove obsolete TARGET_FREEBSD_ARMv6 define.

From-SVN: r253602

7 years agoMore delayed lambda capture fixes.
Jason Merrill [Tue, 10 Oct 2017 18:04:02 +0000 (14:04 -0400)]
More delayed lambda capture fixes.

* call.c (add_function_candidate): Use build_address.
(build_op_call_1): Call mark_lvalue_use early.
(build_over_call): Handle error from build_this.
* constexpr.c (cxx_bind_parameters_in_call): Use build_address.
(cxx_eval_increment_expression): Don't use rvalue().
* cvt.c (convert_to_void): Use mark_discarded_use.
* expr.c (mark_use): Handle PARM_DECL, NON_DEPENDENT_EXPR.  Fix
reference handling.  Don't copy the expression.
(mark_discarded_use): New.
* lambda.c (insert_capture_proxy): Add some sanity checking.
(maybe_add_lambda_conv_op): Set cp_unevaluated_operand.
* pt.c (register_local_specialization): Add sanity check.
* semantics.c (process_outer_var_ref): Fix check for existing proxy.
* typeck.c (cp_build_addr_expr_1): Handle error from
mark_lvalue_use.
(cp_build_modify_expr): Call mark_lvalue_use_nonread, handle error
from rvalue.

Handle generic lambda capture in dependent expressions.
* lambda.c (need_generic_capture, dependent_capture_r)
(do_dependent_capture): New.
* pt.c (processing_nonlambda_template): Use need_generic_capture.
* semantics.c (maybe_cleanup_point_expr)
(maybe_cleanup_point_expr_void, finish_goto_stmt)
(maybe_convert_cond): Call do_dependent_capture.
* typeck.c (build_static_cast): Remove dependent capture handling.

From-SVN: r253601

7 years agoVarious small C++ fixes.
Jason Merrill [Tue, 10 Oct 2017 18:03:56 +0000 (14:03 -0400)]
Various small C++ fixes.

* typeck.c (condition_conversion): Assert !processing_template_decl.
* semantics.c (finish_omp_clauses): Don't
fold_build_cleanup_point_expr if processing_template_decl.
(outer_var_p): A temporary can't be from an outer scope.
* pt.c (type_dependent_expression_p): Fix dependency checking of
functions without DECL_TEMPLATE_INFO.
(instantiate_decl): Use lss_copy.
* constexpr.c (is_valid_constexpr_fn): Fix lambdas before C++17.

From-SVN: r253600

7 years agoCheck non-dependent conversion in return from template fn.
Jason Merrill [Tue, 10 Oct 2017 18:03:22 +0000 (14:03 -0400)]
Check non-dependent conversion in return from template fn.

* typeck.c (check_return_expr): Check non-dependent conversion in
templates.
* constraint.cc (check_function_concept): Don't complain about an
empty concept if seen_error.

From-SVN: r253599

7 years agox86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI, [...]): Move to right spot in the...
Jan Hubicka [Tue, 10 Oct 2017 17:47:35 +0000 (19:47 +0200)]
x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI, [...]): Move to right spot in the file.

* x86-tune.def (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI, X86_TUNE_ADJUST_UNROLL,
X86_TUNE_ONE_IF_CONV_INSN): Move to right spot in the file.

From-SVN: r253598

7 years agofold-vec-cmp-char.c: New.
Will Schmidt [Tue, 10 Oct 2017 17:41:02 +0000 (17:41 +0000)]
fold-vec-cmp-char.c: New.

[testsuite]

2017-10-10  Will Schmidt <will_schmidt@vnet.ibm.com>
* gcc.target/powerpc/fold-vec-cmp-char.c: New.
* gcc.target/powerpc/fold-vec-cmp-double.c: New.
* gcc.target/powerpc/fold-vec-cmp-float.c: New.
* gcc.target/powerpc/fold-vec-cmp-int.c: New.
* gcc.target/powerpc/fold-vec-cmp-longlong.c: New.
* gcc.target/powerpc/fold-vec-cmp-short.c: New.

From-SVN: r253597

7 years agoRequire wi::to_wide for trees
Richard Sandiford [Tue, 10 Oct 2017 16:55:34 +0000 (16:55 +0000)]
Require wi::to_wide for trees

The wide_int routines allow things like:

   wi::add (t, 1)

to add 1 to an INTEGER_CST T in its native precision.  But we also have:

   wi::to_offset (t)      // Treat T as an offset_int
   wi::to_widest (t)      // Treat T as a widest_int

Recently we also gained:

   wi::to_wide (t, prec)  // Treat T as a wide_int in preccision PREC

This patch therefore requires:

   wi::to_wide (t)

when operating on INTEGER_CSTs in their native precision.  This is
just as efficient, and makes it clearer that a deliberate choice is
being made to treat the tree as a wide_int in its native precision.
This also removes the inconsistency that

a) INTEGER_CSTs in their native precision can be used without an accessor
   but must use wi:: functions instead of C++ operators

b) the other forms need an explicit accessor but the result can be used
   with C++ operators.

It also helps with SVE, where there's the additional possibility
that the tree could be a runtime value.

2017-10-10  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* wide-int.h (wide_int_ref_storage): Make host_dependent_precision
a template parameter.
(WIDE_INT_REF_FOR): Update accordingly.
* tree.h (wi::int_traits <const_tree>): Delete.
(wi::tree_to_widest_ref, wi::tree_to_offset_ref): New typedefs.
(wi::to_widest, wi::to_offset): Use them.  Expand commentary.
(wi::tree_to_wide_ref): New typedef.
(wi::to_wide): New function.
* calls.c (get_size_range): Use wi::to_wide when operating on
trees as wide_ints.
* cgraph.c (cgraph_node::create_thunk): Likewise.
* config/i386/i386.c (ix86_data_alignment): Likewise.
(ix86_local_alignment): Likewise.
* dbxout.c (stabstr_O): Likewise.
* dwarf2out.c (add_scalar_info, gen_enumeration_type_die): Likewise.
* expr.c (const_vector_from_tree): Likewise.
* fold-const-call.c (host_size_t_cst_p, fold_const_call_1): Likewise.
* fold-const.c (may_negate_without_overflow_p, negate_expr_p)
(fold_negate_expr_1, int_const_binop_1, const_binop)
(fold_convert_const_int_from_real, optimize_bit_field_compare)
(all_ones_mask_p, sign_bit_p, unextend, extract_muldiv_1)
(fold_div_compare, fold_single_bit_test, fold_plusminus_mult_expr)
(pointer_may_wrap_p, expr_not_equal_to, fold_binary_loc)
(fold_ternary_loc, multiple_of_p, fold_negate_const, fold_abs_const)
(fold_not_const, round_up_loc): Likewise.
* gimple-fold.c (gimple_fold_indirect_ref): Likewise.
* gimple-ssa-warn-alloca.c (alloca_call_type_by_arg): Likewise.
(alloca_call_type): Likewise.
* gimple.c (preprocess_case_label_vec_for_gimple): Likewise.
* godump.c (go_output_typedef): Likewise.
* graphite-sese-to-poly.c (tree_int_to_gmp): Likewise.
* internal-fn.c (get_min_precision): Likewise.
* ipa-cp.c (ipcp_store_vr_results): Likewise.
* ipa-polymorphic-call.c
(ipa_polymorphic_call_context::ipa_polymorphic_call_context): Likewise.
* ipa-prop.c (ipa_print_node_jump_functions_for_edge): Likewise.
(ipa_modify_call_arguments): Likewise.
* match.pd: Likewise.
* omp-low.c (scan_omp_1_op, lower_omp_ordered_clauses): Likewise.
* print-tree.c (print_node_brief, print_node): Likewise.
* stmt.c (expand_case): Likewise.
* stor-layout.c (layout_type): Likewise.
* tree-affine.c (tree_to_aff_combination): Likewise.
* tree-cfg.c (group_case_labels_stmt): Likewise.
* tree-data-ref.c (dr_analyze_indices): Likewise.
(prune_runtime_alias_test_list): Likewise.
* tree-dump.c (dequeue_and_dump): Likewise.
* tree-inline.c (remap_gimple_op_r, copy_tree_body_r): Likewise.
* tree-predcom.c (is_inv_store_elimination_chain): Likewise.
* tree-pretty-print.c (dump_generic_node): Likewise.
* tree-scalar-evolution.c (iv_can_overflow_p): Likewise.
(simple_iv_with_niters): Likewise.
* tree-ssa-address.c (addr_for_mem_ref): Likewise.
* tree-ssa-ccp.c (ccp_finalize, evaluate_stmt): Likewise.
* tree-ssa-loop-ivopts.c (constant_multiple_of): Likewise.
* tree-ssa-loop-niter.c (split_to_var_and_offset)
(refine_value_range_using_guard, number_of_iterations_ne_max)
(number_of_iterations_lt_to_ne, number_of_iterations_lt)
(get_cst_init_from_scev, record_nonwrapping_iv)
(scev_var_range_cant_overflow): Likewise.
* tree-ssa-phiopt.c (minmax_replacement): Likewise.
* tree-ssa-pre.c (compute_avail): Likewise.
* tree-ssa-sccvn.c (vn_reference_fold_indirect): Likewise.
(vn_reference_maybe_forwprop_address, valueized_wider_op): Likewise.
* tree-ssa-structalias.c (get_constraint_for_ptr_offset): Likewise.
* tree-ssa-uninit.c (is_pred_expr_subset_of): Likewise.
* tree-ssanames.c (set_nonzero_bits, get_nonzero_bits): Likewise.
* tree-switch-conversion.c (collect_switch_conv_info, array_value_type)
(dump_case_nodes, try_switch_expansion): Likewise.
* tree-vect-loop-manip.c (vect_gen_vector_loop_niters): Likewise.
(vect_do_peeling): Likewise.
* tree-vect-patterns.c (vect_recog_bool_pattern): Likewise.
* tree-vect-stmts.c (vectorizable_load): Likewise.
* tree-vrp.c (compare_values_warnv, vrp_int_const_binop): Likewise.
(zero_nonzero_bits_from_vr, ranges_from_anti_range): Likewise.
(extract_range_from_binary_expr_1, adjust_range_with_scev): Likewise.
(overflow_comparison_p_1, register_edge_assert_for_2): Likewise.
(is_masked_range_test, find_switch_asserts, maybe_set_nonzero_bits)
(vrp_evaluate_conditional_warnv_with_ops, intersect_ranges): Likewise.
(range_fits_type_p, two_valued_val_range_p, vrp_finalize): Likewise.
(evrp_dom_walker::before_dom_children): Likewise.
* tree.c (cache_integer_cst, real_value_from_int_cst, integer_zerop)
(integer_all_onesp, integer_pow2p, integer_nonzerop, tree_log2)
(tree_floor_log2, tree_ctz, mem_ref_offset, tree_int_cst_sign_bit)
(tree_int_cst_sgn, get_unwidened, int_fits_type_p): Likewise.
(get_type_static_bounds, num_ending_zeros, drop_tree_overflow)
(get_range_pos_neg): Likewise.
* ubsan.c (ubsan_expand_ptr_ifn): Likewise.
* config/darwin.c (darwin_mergeable_constant_section): Likewise.
* config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise.
* config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise.
* config/avr/avr.c (avr_fold_builtin): Likewise.
* config/bfin/bfin.c (bfin_local_alignment): Likewise.
* config/msp430/msp430.c (msp430_attr): Likewise.
* config/nds32/nds32.c (nds32_insert_attributes): Likewise.
* config/powerpcspe/powerpcspe-c.c
(altivec_resolve_overloaded_builtin): Likewise.
* config/powerpcspe/powerpcspe.c (rs6000_aggregate_candidate)
(rs6000_expand_ternop_builtin): Likewise.
* config/rs6000/rs6000-c.c
(altivec_resolve_overloaded_builtin): Likewise.
* config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise.
(rs6000_expand_ternop_builtin): Likewise.
* config/s390/s390.c (s390_handle_hotpatch_attribute): Likewise.

gcc/ada/
* gcc-interface/decl.c (annotate_value): Use wi::to_wide when
operating on trees as wide_ints.

gcc/c/
* c-parser.c (c_parser_cilk_clause_vectorlength): Use wi::to_wide when
operating on trees as wide_ints.
* c-typeck.c (build_c_cast, c_finish_omp_clauses): Likewise.
(c_tree_equal): Likewise.

gcc/c-family/
* c-ada-spec.c (dump_generic_ada_node): Use wi::to_wide when
operating on trees as wide_ints.
* c-common.c (pointer_int_sum): Likewise.
* c-pretty-print.c (pp_c_integer_constant): Likewise.
* c-warn.c (match_case_to_enum_1): Likewise.
(c_do_switch_warnings): Likewise.
(maybe_warn_shift_overflow): Likewise.

gcc/cp/
* cvt.c (ignore_overflows): Use wi::to_wide when
operating on trees as wide_ints.
* decl.c (check_array_designated_initializer): Likewise.
* mangle.c (write_integer_cst): Likewise.
* semantics.c (cp_finish_omp_clause_depend_sink): Likewise.

gcc/fortran/
* target-memory.c (gfc_interpret_logical): Use wi::to_wide when
operating on trees as wide_ints.
* trans-const.c (gfc_conv_tree_to_mpz): Likewise.
* trans-expr.c (gfc_conv_cst_int_power): Likewise.
* trans-intrinsic.c (trans_this_image): Likewise.
(gfc_conv_intrinsic_bound): Likewise.
(conv_intrinsic_cobound): Likewise.

gcc/lto/
* lto.c (compare_tree_sccs_1): Use wi::to_wide when
operating on trees as wide_ints.

gcc/objc/
* objc-act.c (objc_decl_method_attributes): Use wi::to_wide when
operating on trees as wide_ints.

From-SVN: r253595

7 years agore PR libfortran/82233 (execute_command_line causes program to stop when command...
Thomas Koenig [Tue, 10 Oct 2017 16:49:32 +0000 (16:49 +0000)]
re PR libfortran/82233 (execute_command_line causes program to stop when command fails (or does not exist))

2017-10-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR libfortran/82233
* intrinsics/execute_command_line.c (execute_command_line):
No call to runtime_error if cmdstat is present.

2017-10-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR libfortran/82233
* gfortran.dg/execute_command_line_3.f90: New test.

From-SVN: r253593

7 years ago|-------* gcc.target/powerpc/fold-vec-splat-16.c: New |-------* gcc.target/powerpc...
Will Schmidt [Tue, 10 Oct 2017 16:32:54 +0000 (16:32 +0000)]
|-------* gcc.target/powerpc/fold-vec-splat-16.c: New |-------* gcc.target/powerpc/fold-vec-splat-32.c: New.

2017-10-10  Will Schmidt  <will_schmidt@vnet.ibm.com>

[testsuite]
|-------* gcc.target/powerpc/fold-vec-splat-16.c: New
|-------* gcc.target/powerpc/fold-vec-splat-32.c: New.
|-------* gcc.target/powerpc/fold-vec-splat-8.c: New.

From-SVN: r253591

7 years agofold-vec-splats-char.c: New.
Will Schmidt [Tue, 10 Oct 2017 16:26:03 +0000 (16:26 +0000)]
fold-vec-splats-char.c: New.

[testsuite]

2017-10-10  Will Schmidt <will_schmidt@vnet.ibm.com>

* gcc.target/powerpc/fold-vec-splats-char.c: New.
* gcc.target/powerpc/fold-vec-splats-floatdouble.c: New.
* gcc.target/powerpc/fold-vec-splats-int.c: New.
* gcc.target/powerpc/fold-vec-splats-longlong.c: New.
* gcc.target/powerpc/fold-vec-splats-short.c: New.

From-SVN: r253590