gcc.git
6 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

6 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

6 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

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

From-SVN: r253638

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

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

From-SVN: r253627

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 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

6 years agore PR c/82437 (false-positive -Wtautological-compare warning with -std=gnu89)
Jakub Jelinek [Tue, 10 Oct 2017 16:17:47 +0000 (18:17 +0200)]
re PR c/82437 (false-positive -Wtautological-compare warning with -std=gnu89)

PR c/82437
* c-warn.c (warn_tautological_bitwise_comparison): Use wi::to_wide
instead of wide_int::from.

* c-c++-common/Wtautological-compare-7.c: New test.

From-SVN: r253589

6 years ago[C++ PATCH] set_global_binding tweak
Nathan Sidwell [Tue, 10 Oct 2017 14:48:34 +0000 (14:48 +0000)]
[C++ PATCH] set_global_binding tweak

https://gcc.gnu.org/ml/gcc-patches/2017-10/msg00592.html
* name-lookup.c (set_global_binding): Don't deal with STAT_HACK.

From-SVN: r253587

6 years agotree-vect-loop-manip.c (rename_variables_in_bb): Rename PHI nodes when copying loop...
Bin Cheng [Tue, 10 Oct 2017 13:58:30 +0000 (13:58 +0000)]
tree-vect-loop-manip.c (rename_variables_in_bb): Rename PHI nodes when copying loop nest with only one inner loop.

* tree-vect-loop-manip.c (rename_variables_in_bb): Rename PHI nodes
when copying loop nest with only one inner loop.

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

From-SVN: r253586

6 years agotree-cfgcleanup.c (cleanup_tree_cfg_noloop): Avoid compacting blocks if SCEV is active.
Richard Biener [Tue, 10 Oct 2017 13:26:15 +0000 (13:26 +0000)]
tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Avoid compacting blocks if SCEV is active.

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

* tree-cfgcleanup.c (cleanup_tree_cfg_noloop): Avoid compacting
blocks if SCEV is active.
* tree-scalar-evolution.c (analyze_scalar_evolution_1): Remove
dead code.
(analyze_scalar_evolution): Handle cached evolutions the obvious way.
(scev_initialize): Assert we are not yet initialized.

From-SVN: r253585

6 years agoclass_wide4.adb: Fix a typo.
Ed Schonberg [Tue, 10 Oct 2017 13:23:33 +0000 (13:23 +0000)]
class_wide4.adb: Fix a typo.

gcc/testsuite/

* gnat.dg/class_wide4.adb: Fix a typo.

Also add ChangeLog entries missing from previous commits.

From-SVN: r253584

6 years agoupdate_version_svn: Ignore the GCC 5 branch.
Jakub Jelinek [Tue, 10 Oct 2017 13:10:28 +0000 (15:10 +0200)]
update_version_svn: Ignore the GCC 5 branch.

* update_version_svn: Ignore the GCC 5 branch.
* crontab: Remove entry for the GCC 5 branch.

From-SVN: r253583

6 years agoUpdate comment referring to status of LWG issue 111
Jonathan Wakely [Tue, 10 Oct 2017 11:26:10 +0000 (12:26 +0100)]
Update comment referring to status of LWG issue 111

* include/bits/streambuf_iterator.h (istreambuf_iterator::equal):
Update comment about NAD issue.

From-SVN: r253582

6 years agoPR libstdc++/82417 do not include C99 <complex.h> in strict modes
Jonathan Wakely [Tue, 10 Oct 2017 11:25:45 +0000 (12:25 +0100)]
PR libstdc++/82417 do not include C99 <complex.h> in strict modes

As an extension the C++ version of <complex.h> includes the C version,
but that defines macros with non-reserved names that should not be
defined in ISO C++. Only include the C header for non-strict modes, or
for pre-C++11 (because C++98 doesn't mention <complex.h> at all).

PR libstdc++/59087
PR libstdc++/82417
* include/c_compatibility/complex.h [!C++98 && __STRICT_ANSI__]: Do
not include C library's <complex.h>.
* testsuite/26_numerics/complex/c99.cc: Depend on __STRICT_ANSI__.
* testsuite/26_numerics/headers/complex.h/std_c++11.h: New test.
* testsuite/26_numerics/headers/complex.h/std_gnu++11.h: New test.
* testsuite/26_numerics/headers/complex.h/std_c++98.h: New test.

From-SVN: r253581

6 years agotree-loop-distribution.c (generate_loops_for_partition): Remove inner loop's exit...
Bin Cheng [Tue, 10 Oct 2017 09:02:13 +0000 (09:02 +0000)]
tree-loop-distribution.c (generate_loops_for_partition): Remove inner loop's exit stmt by making it always exit the loop...

* tree-loop-distribution.c (generate_loops_for_partition): Remove
inner loop's exit stmt by making it always exit the loop, otherwise
we would generate an infinite empty loop.

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

From-SVN: r253580

6 years agotree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Skip renaming variab...
Bin Cheng [Tue, 10 Oct 2017 08:59:23 +0000 (08:59 +0000)]
tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Skip renaming variables in new preheader if it's deleted.

* tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Skip
renaming variables in new preheader if it's deleted.

From-SVN: r253579

6 years agotree-loop-distribution.c (struct partition): Remove unused field loops of the structure.
Bin Cheng [Tue, 10 Oct 2017 08:57:21 +0000 (08:57 +0000)]
tree-loop-distribution.c (struct partition): Remove unused field loops of the structure.

* tree-loop-distribution.c (struct partition): Remove unused field
loops of the structure.
(partition_alloc, partition_free): Ditto.
(build_rdg_partition_for_vertex): Ditto.

From-SVN: r253578

6 years agotarghooks.c (default_stack_clash_protection_final_dynamic_probe): Fix return type...
Jeff Law [Tue, 10 Oct 2017 06:42:08 +0000 (00:42 -0600)]
targhooks.c (default_stack_clash_protection_final_dynamic_probe): Fix return type to match prototype and documentation.

* targhooks.c (default_stack_clash_protection_final_dynamic_probe): Fix
return type to match prototype and documentation.

From-SVN: r253575

6 years agoDaily bump.
GCC Administrator [Tue, 10 Oct 2017 00:16:23 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253574

6 years agors6000: Move processor_costs to header
Segher Boessenkool [Mon, 9 Oct 2017 23:05:37 +0000 (01:05 +0200)]
rs6000: Move processor_costs to header

This moves the processor_costs structure declaration to the rs6000.h
header file, so that things in other files can use it (not just things
in rs6000.c).

* config/rs6000/rs6000.c (processor_costs): Move to ...
* config/rs6000/rs6000.h: ... here.
(rs6000_cost): Declare.

From-SVN: r253570

6 years agoexcept.c (setjmp_fn): New global variable.
Eric Botcazou [Mon, 9 Oct 2017 22:32:01 +0000 (22:32 +0000)]
except.c (setjmp_fn): New global variable.

* except.c (setjmp_fn): New global variable.
(init_eh): Initialize it if DONT_USE_BUILTIN_SETJMP is defined.
(sjlj_emit_function_enter): Call it instead of BUILTIN_SETJMP if
DONT_USE_BUILTIN_SETJMP is defined.

From-SVN: r253569

6 years ago[multiple changes]
Pierre-Marie de Rodat [Mon, 9 Oct 2017 20:47:26 +0000 (20:47 +0000)]
[multiple changes]

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_unit.adb (Find_Enclosing_Scope): Do not treat a block statement
as a scoping construct when it is byproduct of exception handling.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

* sinfo.ads: Update table Is_Syntactic_Field to reflect the nature of
semantic field Target of node N_Call_Marker.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

* sem_res.adb (Resolve_Allocator): Reject properly an allocator that
attempts to copy a limited value, when the allocator is the expression
in an expression function.

2017-10-09  Joel Brobecker  <brobecker@adacore.com>

* doc/share/conf.py: Tell the style checker that this is a Python
fragment, and therefore that pyflakes should not be run to validate
this file.

2017-10-09  Eric Botcazou  <ebotcazou@adacore.com>

* einfo.ads (Is_Boolean_Type): Add pragma Inline.
(Is_Entity_Name): Likewise.
(Is_String_Type): Likewise.
* sem_type.adb (Full_View_Covers): Do not test Is_Private_Type here
and remove useless comparisons on the base types.
(Covers): Use simple tests for Standard_Void_Type.  Move up cheap tests
on T2.  Always test Is_Private_Type before Full_View_Covers.

2017-10-09  Bob Duff  <duff@adacore.com>

* exp_ch4.adb: Minor refactoring.

From-SVN: r253568

6 years ago[multiple changes]
Pierre-Marie de Rodat [Mon, 9 Oct 2017 20:36:41 +0000 (20:36 +0000)]
[multiple changes]

2017-10-09  Javier Miranda  <miranda@adacore.com>

* sem_ch3.adb (Replace_Components): Browse the list of discriminants,
not components.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_elab.adb (Static_Elaboration_Checks): Elaboration requirements
are verified only in the static model.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

* sem_ch5.adb (Analyze_Iterator_Specification,
Check_Reverse_Iteration): Check that the domain of iteration supports
reverse iteration when it is a formal container.  This requires the
presence of a Previous primitive in the Iterable aspect.
* sem_ch13.adb (Resolve_Iterable_Operation): Verify legality of
primitives Last and Previous to support reverse iteration over formal
containers.
(Validate_Iterable_Aspect): Add check for reverse iteration operations.
* exp_ch5.adb (Build_Formal_Container_Iteration): Add proper expansion
for reverse iteration using primitives Last and Previous in generated
loop.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

* sem_util.adb (Subprogram_Name): If this is a child unit, use the name
of the Defining_Program_Unit_Name, which is an identifier, in order to
construct the string for the fully qualified name.

From-SVN: r253567

6 years ago[multiple changes]
Pierre-Marie de Rodat [Mon, 9 Oct 2017 20:28:22 +0000 (20:28 +0000)]
[multiple changes]

2017-10-09  Justin Squirek  <squirek@adacore.com>

* sem_ch3.adb: Rename Uses_Unseen_Priv into
Contains_Lib_Incomplete_Type.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_aggr.adb, sem_spark.adb, adabkend.adb, exp_ch5.adb, frontend.adb,
sem_ch12.adb, fmap.adb, exp_ch6.adb, exp_spark.adb, lib-load.adb,
exp_ch9.adb, osint.adb, exp_disp.adb, sem_ch8.adb, sem_ch8.ads,
prepcomp.adb, gnat1drv.adb, atree.adb, sinput-l.adb, targparm.adb,
sem_ch10.adb, par-ch8.adb: Minor reformatting.

From-SVN: r253566

6 years ago[multiple changes]
Pierre-Marie de Rodat [Mon, 9 Oct 2017 20:19:13 +0000 (20:19 +0000)]
[multiple changes]

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_elab.adb (Is_Suitable_Access): This scenario is now only relevant
in the static model.
(Is_Suitable_Variable_Assignment): This scenario is now only relevant
in the static model.
(Is_Suitable_Variable_Reference): This scenario is now only relevant in
the static model.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

* sem_ch3.adb (Analyze_Declarations): In ASIS mode, resolve aspect
expressions when the enclosing scope is a subprogram body and the next
declaration is a body that freezes entities previously declared in the
scope.

2017-10-09  Justin Squirek  <squirek@adacore.com>

* sem_ch8.adb (Analyze_Use_Package): Remove checking of mixture between
ghost packages and living packages in use clauses.
(Use_One_Type, Note_Redundant_Use): Correct warning messages

2017-10-09  Justin Squirek  <squirek@adacore.com>

* osint.ads: Document new parameter FD for Read_Source_File.

From-SVN: r253564

6 years ago[multiple changes]
Pierre-Marie de Rodat [Mon, 9 Oct 2017 19:59:11 +0000 (19:59 +0000)]
[multiple changes]

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

* exp_util.adb (Make_Predicate_Call): If the type of the expression to
which the predicate check applies is tagged, convert the expression to
that type. This is in most cases a no-op, but is relevant if the
expression is clas-swide, because the predicate function being invoked
is not a primitive of the type and cannot take a class-wide actual.

2017-10-09  Gary Dismukes  <dismukes@adacore.com>

* exp_disp.adb: Minor reformatting.

2017-10-09  Arnaud Charlet  <charlet@adacore.com>

* sem_warn.adb (Warn_On_Unreferenced_Entity): Fix typo.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

* sem_elab.adb (Install_ABE_Check): Do not generate an ABE check for
GNATprove.
(Install_ABE_Failure): Do not generate an ABE failure for GNATprove.

2017-10-09  Bob Duff  <duff@adacore.com>

* exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Return
immediately if the call has already been processed (by a previous call
to Make_Build_In_Place_Call_In_Anonymous_Context).
* sem_elab.adb: Minor typo fixes.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

* sem_ch13.adb (Replace_Type_Ref): In the expression for a dynamic
predicate, do not replace an identifier that matches the type if the
identifier is a selector in a selected component, because this
indicates a reference to some homograph of the type itself, and  not to
the current occurence in the predicate.

2017-10-09  Eric Botcazou  <ebotcazou@adacore.com>

* repinfo.adb (List_Record_Layout): Tweak formatting.
(Write_Val): Remove superfluous spaces in back-end layout mode.

2017-10-09  Piotr Trojanek  <trojanek@adacore.com>

* sem_res.adb (Property_Error): Remove.
(Resolve_Actuals): check for SPARK RM 7.1.3(10) rewritten to match the
current wording of the rule.

2017-10-09  Justin Squirek  <squirek@adacore.com>

* sem_ch3.adb (Analyze_Declarations): Add check for ghost packages
before analyzing a given scope due to an expression function.
(Uses_Unseen_Lib_Unit_Priv): Rename to Uses_Unseen_Priv.

From-SVN: r253563

6 years agoAdd targetm.insn_cost hook
Segher Boessenkool [Mon, 9 Oct 2017 19:47:08 +0000 (21:47 +0200)]
Add targetm.insn_cost hook

This adds a new hook that the insn_cost function uses if a target has
implemented it (it uses the old pattern_cost nee insn_rtx_cost if not).

* target.def (insn_cost): New hook.
* doc/tm.texi.in (TARGET_INSN_COST): New hook.
* doc/tm.texi: Regenerate.
* rtlanal.c (insn_cost): Use the new hook.

From-SVN: r253562

6 years agocombine: Use insn_cost instead of pattern_cost everywhere
Segher Boessenkool [Mon, 9 Oct 2017 19:45:50 +0000 (21:45 +0200)]
combine: Use insn_cost instead of pattern_cost everywhere

* combine.c (combine_validate_cost): Compute the new insn_cost,
not just pattern_cost.
(try_combine): Adjust comment.

From-SVN: r253561

6 years agoReplace insn_rtx_cost with insn_cost and pattern_cost
Segher Boessenkool [Mon, 9 Oct 2017 19:44:13 +0000 (21:44 +0200)]
Replace insn_rtx_cost with insn_cost and pattern_cost

This replaces insn_rtx_cost with insn_cost if an insn is readily
available, and with pattern_cost otherwise.

* cfgrtl.c (rtl_account_profile_record): Replace insn_rtx_cost with
insn_cost.
* combine.c (uid_insn_cost): Adjust comment.
(combine_validate_cost): Adjust comment.  Use pattern_cost instead
of insn_rtx_cost
(combine_instructions): Use insn_cost instead of insn_rtx_cost.
* dse.c (find_shift_sequence): Ditto.
* ifcvt.c (cheap_bb_rtx_cost_p): Ditto.
(bb_valid_for_noce_process_p): Use pattern_cost.
* rtl.h (insn_rtx_cost): Delete.
(pattern_cost): New prototype.
(insn_cost): New prototype.
* rtlanal.c (insn_rtx_cost): Rename to...
(pattern_cost): ... this.
(insn_cost): New.

From-SVN: r253560

6 years ago[multiple changes]
Pierre-Marie de Rodat [Mon, 9 Oct 2017 19:43:32 +0000 (19:43 +0000)]
[multiple changes]

2017-10-09  Bob Duff  <duff@adacore.com>

* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Use
Defining_Identifier (Obj_Decl) in two places, because it might have
changed.
* exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Deal with cases
involving 'Input on (not visibly) derived types.

2017-10-09  Hristian Kirtchev  <kirtchev@adacore.com>

* atree.adb: Add new soft link Rewriting_Proc.
(Rewrite): Invoke the subprogram attached to the rewriting soft link.
(Set_Rewriting_Proc): New routine.
* attree.ads: Add new access-to-subprogram type Rewrite_Proc.
(Set_Rewriting_Proc): New routine.
* checks.adb (Install_Primitive_Elaboration_Check): Use 'E' character
for *E*laboration flag to maintain consistency with other elaboration
flag generating subprograms.
* debug.adb: Document the new usage of flag -gnatdL.
* einfo.adb: Node19 is now used as Receiving_Entry.  Node39 is now used
as Protected_Subprogram.  Flag148 is now used as
Is_Elaboration_Checks_OK_Id.  Flag302 is now used as
Is_Initial_Condition_Procedure.
(Is_Elaboration_Checks_OK_Id): New routine.
(Is_Initial_Condition_Procedure): New routine.
(Protected_Subprogram): New routine.
(Receiving_Entry): New routine.
(SPARK_Pragma): Update assertion.
(SPARK_Pragma_Inherited): Update assertion.
(Suppress_Elaboration_Warnings): Removed.
(Set_Is_Elaboration_Checks_OK_Id): New routine.
(Set_Is_Initial_Condition_Procedure): New routine.
(Set_Protected_Subprogram): New routine.
(Set_Receiving_Entry): New routine.
(Set_SPARK_Pragma): Update assertion.
(Set_SPARK_Pragma_Inherited): Update assertion.
(Write_Entity_Flags): Update the output for Flag148 and Flag302.
(Write_Field19_Name): Add output for Receiving_Entry.
(Write_Field39_Name): Add output for Protected_Subprogram.
(Write_Field40_Name): Update the output for SPARK_Pragma.
* einfo.ads: New attributes Is_Elaboration_Checks_OK_Id,
Is_Initial_Condition_Procedure, Protected_Subprogram, Receiving_Entry.
Remove attribute Suppress_Elaboration_Warnings.  Update the stricture
of various entities.
(Is_Elaboration_Checks_OK_Id): New routine along with pragma Inline.
(Is_Initial_Condition_Procedure): New routine along with pragma Inline.
(Protected_Subprogram): New routine along with pragma Inline.
(Receiving_Entry): New routine along with pragma Inline.
(Suppress_Elaboration_Warnings): Removed.
(Set_Is_Elaboration_Checks_OK_Id): New routine along with pragma
Inline.
(Set_Is_Initial_Condition_Procedure): New routine along with pragma
Inline.
(Set_Protected_Subprogram): New routine along with pragma Inline.
(Set_Receiving_Entry): New routine along with pragma Inline.
(Set_Suppress_Elaboration_Warnings): Removed.
* exp_ch3.adb (Build_Init_Procedure): Use name _Finalizer to maintain
consistency with other finalizer generating subprograms.
(Default_Initialize_Object): Mark the block which wraps the call to
finalize as being part of initialization.
* exp_ch7.adb (Expand_N_Package_Declaration): Directly expand pragma
Initial_Condition.
(Expand_N_Package_Body): Directly expand pragma Initial_Condition.
(Next_Suitable_Statement): Update the comment on usage. Skip over call
markers generated by the ABE mechanism.
* exp_ch9.adb (Activation_Call_Loc): New routine.
(Add_Accept): Link the accept procedure to the original entry.
(Build_Protected_Sub_Specification): Link the protected or unprotected
version to the original subprogram.
(Build_Task_Activation_Call): Code cleanup. Use a source location which
is very close to the "begin" or "end" keywords when generating the
activation call.
* exp_prag.adb (Expand_Pragma_Initial_Condition): Reimplemented.
* exp_spark.adb (Expand_SPARK): Use Expand_SPARK_N_Loop_Statement to
process loops.
(Expand_SPARK_N_Loop_Statement): New routine.
(Expand_SPARK_N_Object_Declaration): Code cleanup. Partially insert the
call to the Default_Initial_Condition procedure.
(Expand_SPARK_Op_Ne): Renamed to Expand_SPARK_N_Op_Ne.
* exp_util.adb (Build_DIC_Procedure_Body): Capture the SPARK_Mode in
effect.
(Build_DIC_Procedure_Declaration): Capture the SPARK_Mode in effect.
(Insert_Actions): Add processing for N_Call_Marker.
(Kill_Dead_Code): Explicitly kill an elaboration scenario.
* exp_util.ads (Make_Invariant_Call): Update the comment on usage.
* frontend.adb: Initialize Sem_Elab. Process all saved top level
elaboration scenarios for ABE issues.
* gcc-interface/trans.c (gnat_to_gnu): Add processing for N_Call_Marker
nodes.
* lib.adb (Earlier_In_Extended_Unit): New variant.
* sem.adb (Analyze): Ignore N_Call_Marker nodes.
(Preanalysis_Active): New routine.
* sem.ads (Preanalysis_Active): New routine.
* sem_attr.adb (Analyze_Access_Attribute): Save certain
elaboration-related attributes. Save the scenario for ABE processing.
* sem_ch3.adb (Analyze_Object_Declaration): Save the SPARK mode in
effect. Save certain elaboration-related attributes.
* sem_ch5.adb (Analyze_Assignment): Save certain elaboration-related
attributes. Save the scenario for ABE processing.
* sem_ch6.adb (Analyze_Abstract_Subprogram_Declaration): Save the SPARK
mode in effect. Save certain elaboration-related attributes.
(Analyze_Subprogram_Body_Helper): Skip N_Call_Marker nodes when
locating the first real statement.
(Analyze_Subprogram_Declaration): Save the SPARK mode in effect. Save
certain elaboration-related attributes.
* sem_ch7.adb (Analyze_Package_Declaration): Do not suppress
elaboration warnings.
* sem_ch8.adb (Attribute_Renaming): Mark a subprogram body which was
generated for purposes of wrapping an attribute used as a generic
actual.
(Find_Direct_Name): Save certain elaboration-related attributes. Save
the scenario for ABE processing.
(Find_Expanded_Name): Save certain elaboration-related attributes. Save
the scenario for ABE processing.
* sem_ch9.adb (Analyze_Entry_Declaration): Save certain
elaboration-related attributes.
(Analyze_Requeue): Save certain elaboration-related attributes. Save
the scenario for ABE processing.
(Analyze_Single_Task_Declaration): Save certain elaboration-related
attributes.
(Analyze_Task_Type_Declaration): Save certain elaboration-related
attributes.
* sem_ch12.adb (Analyze_Generic_Package_Declaration): Save certain
elaboration-related attributes.
(Analyze_Generic_Subprogram_Declaration): Save the SPARK mode in
effect. Save certain elaboration-related attributes.
(Analyze_Package_Instantiation): Save certain elaboration-related
attributes.  Save the scenario for ABE processing. Create completing
bodies in case the instantiation results in a guaranteed ABE.
(Analyze_Subprogram_Instantiation): Save certain elaboration-related
attributes Save the scenario for ABE processing. Create a completing
body in case the instantiation results in a guaranteed ABE.
(Provide_Completing_Bodies): New routine.
* sem_elab.ads: Brand new implementation.
* sem_prag.adb (Analyze_Pragma, cases Elaborate, Elaborate_All,
Elaborate_Body): Do not suppress elaboration warnings.
* sem_res.adb (Make_Call_Into_Operator): Set the parent field of the
operator.
(Resolve_Call): Save certain elaboration-related attributes. Save the
scenario for ABE processing.
(Resolve_Entity_Name): Do not perform any ABE processing here.
(Resolve_Entry_Call): Inherit certain attributes from the original call.
* sem_util.adb (Begin_Keyword_Location): New routine.
(Defining_Entity): Update the parameter profile. Add processing for
concurrent subunits that are rewritten as null statements.
(End_Keyword_Location): New routine.
(Find_Enclosing_Scope): New routine.
(In_Instance_Visible_Part): Code cleanup.
(In_Subtree): Update the parameter profile. Add new version.
(Is_Preelaborable_Aggregate): New routine.
(Is_Preelaborable_Construct): New routine.
(Mark_Elaboration_Attributes): New routine.
(Scope_Within): Update the parameter profile.
(Scope_Within_Or_Same): Update the parameter profile.
* sem_util.ads (Begin_Keyword_Location): New routine.
(Defining_Entity): Update the parameter profile and the comment on
usage.
(End_Keyword_Location): New routine.
(Find_Enclosing_Scope): New routine.
(In_Instance_Visible_Part): Update the parameter profile.
(In_Subtree): Update the parameter profile. Add new version.
(Is_Preelaborable_Aggregate): New routine.
(Is_Preelaborable_Construct): New routine.
(Mark_Elaboration_Attributes): New routine.
(Scope_Within): Update the parameter profile and the comment on usage.
(Scope_Within_Or_Same): Update the parameter profile and the comment on
usage.
* sem_warn.adb (Check_Infinite_Loop_Warning): Use Has_Condition_Actions
to determine whether a loop has meaningful condition actions.
(Has_Condition_Actions): New routine.
* sinfo.adb (ABE_Is_Certain): Removed.
(Is_Declaration_Level_Node): New routine.
(Is_Dispatching_Call): New routine.
(Is_Elaboration_Checks_OK_Node): New routine.
(Is_Initialization_Block): New routine.
(Is_Known_Guaranteed_ABE): New routine.
(Is_Recorded_Scenario): New routine.
(Is_Source_Call): New routine.
(Is_SPARK_Mode_On_Node): New routine.
(No_Elaboration_Check): Removed.
(Target): New routine.
(Was_Attribute_Reference): New routine.
(Set_ABE_Is_Certain): Removed.
(Set_Is_Declaration_Level_Node): New routine.
(Set_Is_Dispatching_Call): New routine.
(Set_Is_Elaboration_Checks_OK_Node): New routine.
(Set_Is_Initialization_Block): New routine.
(Set_Is_Known_Guaranteed_ABE): New routine.
(Set_Is_Recorded_Scenario): New routine.
(Set_Is_Source_Call): New routine.
(Set_Is_SPARK_Mode_On_Node): New routine.
(Set_No_Elaboration_Check): Removed.
(Set_Target): New routine.
(Set_Was_Attribute_Reference): New routine.
* sinfo.ads: Remove attribute ABE_Is_Certain.  Attribute
Do_Discriminant_Check now utilizes Flag3.  Attribute
No_Side_Effect_Removal now utilizes Flag17.  Add new node
N_Call_Marker.  Update the structure of various nodes.
(ABE_Is_Certain): Removed along with pragma Inline.
(Is_Declaration_Level_Node): New routine along with pragma Inline.
(Is_Dispatching_Call): New routine along with pragma Inline.
(Is_Elaboration_Checks_OK_Node): New routine along with pragma Inline.
(Is_Initialization_Block): New routine along with pragma Inline.
(Is_Known_Guaranteed_ABE): New routine along with pragma Inline.
(Is_Recorded_Scenario): New routine along with pragma Inline.
(Is_Source_Call): New routine along with pragma Inline.
(Is_SPARK_Mode_On_Node): New routine along with pragma Inline.
(No_Elaboration_Check): Removed along with pragma Inline.
(Target): New routine along with pragma Inline.
(Was_Attribute_Reference): New routine along with pragma Inline.
(Set_ABE_Is_Certain): Removed along with pragma Inline.
(Set_Is_Declaration_Level_Node): New routine along with pragma Inline.
(Set_Is_Dispatching_Call): New routine along with pragma Inline.
(Set_Is_Elaboration_Checks_OK_Node): New routine along with pragma
Inline.
(Set_Is_Initialization_Block): New routine along with pragma Inline.
(Set_Is_Known_Guaranteed_ABE): New routine along with pragma Inline.
(Set_Is_Recorded_Scenario): New routine along with pragma Inline.
(Set_Is_Source_Call): New routine along with pragma Inline.
(Set_Is_SPARK_Mode_On_Node): New routine along with pragma Inline.
(Set_No_Elaboration_Check): Removed along with pragma Inline.
(Set_Target): New routine along with pragma Inline.
(Set_Was_Attribute_Reference): New routine along with pragma Inline.
* sprint.adb (Sprint_Node_Actual): Add an entry for N_Call_Marker.

From-SVN: r253559

6 years agoi386.md (*jcc_2): Remove insn pattern.
Uros Bizjak [Mon, 9 Oct 2017 19:12:53 +0000 (21:12 +0200)]
i386.md (*jcc_2): Remove insn pattern.

* config/i386/i386.md (*jcc_2): Remove insn pattern.
(*jcc<mode>_0_r_i387): Ditto.
(*jccxf_r_i387): Ditto.
(*jcc<mode>_r_i387): Ditto.
(*jccu<mode>_r_i387): Ditto.
(*jcc<X87MODEF:mode>_<SWI24:mode>_r_i387): Ditto.
(*jcc): Rename from *jcc_1.

From-SVN: r253558

6 years agoexp_ch7.adb (Create_Finalizer): Suppress checks within the finalizer.
Bob Duff [Mon, 9 Oct 2017 18:46:19 +0000 (18:46 +0000)]
exp_ch7.adb (Create_Finalizer): Suppress checks within the finalizer.

2017-10-09  Bob Duff  <duff@adacore.com>

* exp_ch7.adb (Create_Finalizer): Suppress checks within the finalizer.

2017-10-09  Bob Duff  <duff@adacore.com>

* freeze.ads: Minor comment fixed.

From-SVN: r253557

6 years ago<forgot to do svn add on the amo.h file>
Michael Meissner [Mon, 9 Oct 2017 18:44:41 +0000 (18:44 +0000)]
<forgot to do svn add on the amo.h file>

[gcc]
2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/amo.h: New include file to provide ISA 3.0 atomic
memory operation instruction support.
* config.gcc (powerpc*-*-*): Include amo.h as an extra header.
(rs6000-ibm-aix[789]*): Likewise.
* doc/extend.texi (PowerPC Atomic Memory Operation Functions):
Document new functions.

[gcc/testsuite]
2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>

* gcc.target/powerpc/amo1.c: New test.
* gcc.target/powerpc/amo2.c: Likewise.

From-SVN: r253556

6 years agors6000-p8swap.c (rs6000_analyze_swaps): Process deferred rescans after the lvx/stvx...
Bill Schmidt [Mon, 9 Oct 2017 18:38:42 +0000 (18:38 +0000)]
rs6000-p8swap.c (rs6000_analyze_swaps): Process deferred rescans after the lvx/stvx recombination pre-pass.

2017-10-09  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

* config/rs6000/rs6000-p8swap.c (rs6000_analyze_swaps): Process
deferred rescans after the lvx/stvx recombination pre-pass.

From-SVN: r253555

6 years agoexp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Take care of unchecked...
Pierre-Marie de Rodat [Mon, 9 Oct 2017 18:23:07 +0000 (18:23 +0000)]
exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Take care of unchecked...

gcc/ada/

2017-10-09  Bob Duff  <duff@adacore.com>

* exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Take
care of unchecked conversions in addition to regular conversions. This
takes care of a case where a type is derived from a private untagged
type that is completed by a tagged controlled type.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

* exp_disp.adb (Build_Class_Wide_Check, Replace_Formals): When
rewriting a class-wide condition, handle properly the case where the
controlling argument of the operation to which the condition applies is
an access to a tagged type, and the condition includes a dispatching
call with an implicit dereference.

gcc/testsuite/

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

* gnat.dg/class_wide4.adb, gnat.dg/class_wide4_pkg.ads,
gnat.dg/class_wide4_pkg2.ads: New testcase.

From-SVN: r253554

6 years agoamo.h: New include file to provide ISA 3.0 atomic memory operation instruction support.
Michael Meissner [Mon, 9 Oct 2017 18:20:01 +0000 (18:20 +0000)]
amo.h: New include file to provide ISA 3.0 atomic memory operation instruction support.

[gcc]
2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>

* config/rs6000/amo.h: New include file to provide ISA 3.0 atomic
memory operation instruction support.
* config.gcc (powerpc*-*-*): Include amo.h as an extra header.
(rs6000-ibm-aix[789]*): Likewise.
* doc/extend.texi (PowerPC Atomic Memory Operation Functions):
Document new functions.

[gcc/testsuite]
2017-10-09  Michael Meissner  <meissner@linux.vnet.ibm.com>

* gcc.target/powerpc/amo1.c: New test.
* gcc.target/powerpc/amo2.c: Likewise.

From-SVN: r253552

6 years agoexp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Remove the code at...
Pierre-Marie de Rodat [Mon, 9 Oct 2017 15:49:59 +0000 (15:49 +0000)]
exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Remove the code at the end of...

gcc/ada/

2017-10-09  Bob Duff  <duff@adacore.com>

* exp_ch6.adb: (Make_Build_In_Place_Call_In_Object_Declaration): Remove
the code at the end of this procedure that was setting the type of a
class-wide object to the specific type returned by a function call.
Treat this case as indefinite instead.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

* sem_ch4.adb (Try_Class_Wide_Operation, Traverse_Homonyms):
Suppress spurious ambiguity error when two traversals of the homonym
chain (first directly, and then through an examination of relevant
interfaces) retrieve the same operation, when other irrelevant homonyms
of the operatioh are also present.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

* sem_util.adb (Object_Access_Level): If the object is the return
statement of an expression function, return the level of the function.
This is relevant when the object involves an implicit conversion
between access types and the expression function is a completion, which
forces the analysis of the expression before rewriting it as a body, so
that freeze nodes can appear in the proper scope.

2017-10-09  Bob Duff  <duff@adacore.com>

* atree.adb: Make nnd apply to everything "interesting", including
Rewrite.  Remove rrd.

2017-10-09  Javier Miranda  <miranda@adacore.com>

* exp_ch3.adb (Expand_N_Object_Declaration): Avoid never-ending loop
processing the declaration of the dummy object internally created by
Make_DT to compute the offset to the top of components referencing
secondary dispatch tables.
(Initialize_Tag): Do not initialize the offset-to-top field if it has
been initialized initialized.
* exp_disp.ads (Building_Static_Secondary_DT): New subprogram.
* exp_disp.adb (Building_Static_Secondary_DT): New subprogram.
(Make_DT): Create a dummy constant object if we can statically build
secondary dispatch tables.
(Make_Secondary_DT): For statically allocated secondary dispatch tables
use the dummy object to compute the offset-to-top field value by means
of the attribute 'Position.

gcc/testsuite/

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

* gnat.dg/class_wide3.adb, gnat.dg/class_wide3_pkg.ads: New testcase.

From-SVN: r253550

6 years agoexp_ch6.adb (Expand_N_Extended_Return_Statement): Add self-checking code so if BIPAll...
Pierre-Marie de Rodat [Mon, 9 Oct 2017 15:17:16 +0000 (15:17 +0000)]
exp_ch6.adb (Expand_N_Extended_Return_Statement): Add self-checking code so if BIPAlloc is not passed in...

gcc/ada/

2017-10-09  Bob Duff  <duff@adacore.com>

* exp_ch6.adb (Expand_N_Extended_Return_Statement): Add self-checking
code so if BIPAlloc is not passed in, it will likely raise
Program_Error instead of cause miscellaneous chaos.
(Is_Build_In_Place_Result_Type): Return False if not Expander_Active,
as for the other Is_B-I-P... functions.
* sem_aggr.adb (Resolve_Extension_Aggregate): For an extension
aggregate whose ancestor part is a build-in-place call returning a
nonlimited type, transform the assignment to the ancestor part to use a
temp.
* sem_ch3.adb (Build_Itype_Reference): Handle the case where we're
creating an Itype for a library unit entity.
(Check_Initialization): Avoid spurious error message on
internally-generated call.
* sem_ch5.adb (Analyze_Assignment): Handle the case where the
right-hand side is a build-in-place call. This didn't happen when b-i-p
was only for limited types.
* sem_ch6.adb (Create_Extra_Formals): Remove assumption that b-i-p
implies >= Ada 2005.
* sem_ch7.adb (Scan_Subprogram_Refs): Avoid traversing the same nodes
repeatedly.
* sem_util.adb (Next_Actual): Handle case of build-in-place call.

2017-10-09  Arnaud Charlet  <charlet@adacore.com>

* doc/gnat_ugn/gnat_and_program_execution.rst: Minor edit.

2017-10-09  Piotr Trojanek  <trojanek@adacore.com>

* libgnarl/s-taprob.adb: Minor whitespace fix.

2017-10-09  Bob Duff  <duff@adacore.com>

* namet.ads: Minor comment fix.

2017-10-09  Piotr Trojanek  <trojanek@adacore.com>

* sem_aux.adb (Unit_Declaration_Node): Detect protected declarations,
just like other program units listed in Ada RM 10.1(1).

2017-10-09  Justin Squirek  <squirek@adacore.com>

* sem_ch8.adb (Update_Chain_In_Scope): Modify warning messages.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

* sem_ch12.adb (Analyze_Associations, Check_Generic_Parent): If an
actual for a formal package is an instantiation of a child unit, create
a freeze node for the instance of the parent if it appears in the same
scope and is not frozen yet.

2017-10-09  Pierre-Marie de Rodat  <derodat@adacore.com>

* exp_atag.ads, libgnat/a-tags.adb, libgnat/a-tags.ads: Enhance
in-source documentation for tagged types's Offset_To_Top.

2017-10-09  Bob Duff  <duff@adacore.com>

* exp_ch3.adb (Build_Assignment): Parameter name N was somewhat
confusing.  Same for N_Loc.  Remove assumption that b-i-p implies
limited.  This is for the case of a function call that occurs as the
default for a record component.
(Expand_N_Object_Declaration): Deal with the case where expansion has
created an object declaration initialized with something like
F(...)'Reference.
* exp_ch3.adb: Minor reformatting.

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

* exp_attr.adb (Expand_Attribute_Reference, case 'Valid): The prefix of
the attribute is an object, but it may appear within a conversion. The
object itself must be retrieved when generating the range test that
implements the validity check on a scalar type.

gcc/testsuite/

2017-10-09  Ed Schonberg  <schonberg@adacore.com>

* gnat.dg/validity_check2.adb, gnat.dg/validity_check2_pkg.ads:
New testcase.

From-SVN: r253548

6 years agore PR tree-optimization/82397 (qsort comparator non-negative on sorted output: 1...
Richard Biener [Mon, 9 Oct 2017 14:13:43 +0000 (14:13 +0000)]
re PR tree-optimization/82397 (qsort comparator non-negative on sorted output: 1 in vect_analyze_data_ref_accesses)

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

PR tree-optimization/82397
* tree-data-ref.c (data_ref_compare_tree): Make sure to return
equality only for semantically equal trees.

From-SVN: r253547

6 years agore PR tree-optimization/82449 (code-gen error in get_rename_from_scev)
Richard Biener [Mon, 9 Oct 2017 13:50:10 +0000 (13:50 +0000)]
re PR tree-optimization/82449 (code-gen error in get_rename_from_scev)

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

PR tree-optimization/82449
* sese.c (scev_analyzable_p): Check whether the SCEV is linear.
* tree-chrec.h (evolution_function_is_constant_p): Adjust to
allow constant addresses.
* tree-chrec.c (scev_is_linear_expression): Constant evolutions
are linear.

* gfortran.dg/graphite/pr82449.f: New testcase.

From-SVN: r253546

6 years ago[BRIGFE] Support BRIG_KIND_NONE directives.
Pekka Jääskeläinen [Mon, 9 Oct 2017 13:06:01 +0000 (13:06 +0000)]
[BRIGFE] Support BRIG_KIND_NONE directives.

These directives are legal everywhere.  They can be used to
patch away BRIG entries at the binary level.

Also add extra error detection for zeroed regions: make sure
the byteCount field is never zero.

The call code still failed a few PRM test cases. Now all PRM
branch cases pass again.

From-SVN: r253545

6 years agoS/390: Fix vec_nabs and vec_vfi builtin flags
Andreas Krebbel [Mon, 9 Oct 2017 12:08:46 +0000 (12:08 +0000)]
S/390: Fix vec_nabs and vec_vfi builtin flags

gcc/ChangeLog:

2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

* config/s390/s390-builtins.def (vec_nabs, vec_vfi): Fix builtin
flags.

From-SVN: r253544

6 years agoS/390: PR82463: Fix vec_madd header file definition
Andreas Krebbel [Mon, 9 Oct 2017 12:07:54 +0000 (12:07 +0000)]
S/390: PR82463: Fix vec_madd header file definition

The builtin was not correctly defined in the vecintrin.h header file.

gcc/testsuite/ChangeLog:

2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

PR target/82463
* gcc.target/s390/zvector/pr82463.c: New test.

gcc/ChangeLog:

2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

PR target/82463
* config/s390/vecintrin.h (vec_madd, vec_msub): Fix macro
definitions.

From-SVN: r253543

6 years agoS/390: PR82465: Fix vec_sqrt builtin flags
Andreas Krebbel [Mon, 9 Oct 2017 12:06:11 +0000 (12:06 +0000)]
S/390: PR82465: Fix vec_sqrt builtin flags

The vector double variant is available with z13.  A wrong flag in the
s390-builtins.def file triggered an error when compiling for z13.

gcc/testsuite/ChangeLog:

2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

PR target/82465
* gcc.target/s390/zvector/pr82465.c: New test.

gcc/ChangeLog:

2017-10-09  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

PR target/82465
* config/s390/s390-builtins.def (vec_sqrt): Fix builtin flags.

From-SVN: r253542

6 years agore PR target/82464 (s390x z14: vector float: invalid parameter combination for intrin...
Jakub Jelinek [Mon, 9 Oct 2017 11:40:23 +0000 (13:40 +0200)]
re PR target/82464 (s390x z14: vector float: invalid parameter combination for intrinsic '__builtin_s390_vec_xor')

PR target/82464
* config/s390/s390-builtins.def (s390_vec_xor_flt_a,
s390_vec_xor_flt_b, s390_vec_xor_flt_c): New.

From-SVN: r253541

6 years agoFix ssa-dse-26.c
Wilco Dijkstra [Mon, 9 Oct 2017 11:00:17 +0000 (11:00 +0000)]
Fix ssa-dse-26.c

Add missing -fno-short-enums to ensure this test passes on arm-none-eabi
which uses short enums.

    gcc/testsuite/
* gcc.dg/tree-ssa/ssa-dse-26.c (dg-options): Add -fno-short-enums.

From-SVN: r253540

6 years agoAllow non-wi <op> wi
Richard Sandiford [Mon, 9 Oct 2017 10:51:45 +0000 (10:51 +0000)]
Allow non-wi <op> wi

This patch uses global rather than member operators for wide-int.h,
so that the first operand can be a non-wide-int type.

The patch also removes the and_not and or_not member functions.
It was already inconsistent to have member functions for these
two operations (one of which was never used) and not other wi::
ones like udiv.  After the operator change, we'd have the additional
inconsistency that "non-wi & wi" would work but "non-wi.and_not (wi)"
wouldn't.

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

gcc/
* wide-int.h (WI_BINARY_OPERATOR_RESULT): New macro.
(WI_BINARY_PREDICATE_RESULT): Likewise.
(wi::binary_traits::operator_result): New type.
(wi::binary_traits::predicate_result): Likewise.
(generic_wide_int::operator~, unary generic_wide_int::operator-)
(generic_wide_int::operator==, generic_wide_int::operator!=)
(generic_wide_int::operator&, generic_wide_int::and_not)
(generic_wide_int::operator|, generic_wide_int::or_not)
(generic_wide_int::operator^, generic_wide_int::operator+
(binary generic_wide_int::operator-, generic_wide_int::operator*):
Delete.
(operator~, unary operator-, operator==, operator!=, operator&)
(operator|, operator^, operator+, binary operator-, operator*): New
functions.
* expr.c (get_inner_reference): Use wi::bit_and_not.
* fold-const.c (fold_binary_loc): Likewise.
* ipa-prop.c (ipa_compute_jump_functions_for_edge): Likewise.
* tree-ssa-ccp.c (get_value_from_alignment): Likewise.
(bit_value_binop): Likewise.
* tree-ssa-math-opts.c (find_bswap_or_nop_load): Likewise.
* tree-vrp.c (zero_nonzero_bits_from_vr): Likewise.
(extract_range_from_binary_expr_1): Likewise.
(masked_increment): Likewise.
(simplify_bit_ops_using_ranges): Likewise.

From-SVN: r253539

6 years ago[PR 82416] Do not extend operands to at least 32 bits
Martin Jambor [Mon, 9 Oct 2017 09:41:44 +0000 (11:41 +0200)]
[PR 82416] Do not extend operands to at least 32 bits

2017-10-09  Martin Jambor  <mjambor@suse.cz>

PR hsa/82416
gcc/
* hsa-common.h (hsa_op_with_type): New method extend_int_to_32bit.
* hsa-gen.c (hsa_extend_inttype_to_32bit): New function.
(hsa_type_for_scalar_tree_type): Use it.  Always force min32int for
COMPLEX types.
(hsa_fixup_mov_insn_type): New function.
(hsa_op_with_type::get_in_type): Use it.
(hsa_build_append_simple_mov): Likewise.  Allow sub-32bit
immediates in an assert.
(hsa_op_with_type::extend_int_to_32bit): New method.
(gen_hsa_insns_for_bitfield): Fixup instruction and intermediary
types.  Convert to dest type if necessary.
(gen_hsa_insns_for_bitfield_load): Fixup load type if necessary.
(reg_for_gimple_ssa): Pass false as min32int to
hsa_type_for_scalar_tree_type.
(gen_hsa_addr): Fixup type when creating addresable temporary.
(gen_hsa_cmp_insn_from_gimple): Extend operands if necessary.
(gen_hsa_unary_operation): Extend operands and convert to dest type if
necessary.  Call hsa_fixup_mov_insn_type.
(gen_hsa_binary_operation): Changed operand types to hsa_op_with_type,
extend operands and convert to dest type if necessary.
(gen_hsa_insns_for_operation_assignment): Extend operands and convert
to dest type if necessary.
(set_output_in_type): Call hsa_fixup_mov_insn_type.  Just ude dest
if conversion nt necessary and size matches.
(gen_hsa_insns_for_load): Call hsa_fixup_mov_insn_type, convert
to dest type if necessary.
(gen_hsa_insns_for_store): Call hsa_fixup_mov_insn_type.
(gen_hsa_insns_for_switch_stmt): Likewise. Also extend operands if
necessary.
(gen_hsa_clrsb): Likewise.
(gen_hsa_ffs): Likewise.
(gen_hsa_divmod): Extend operands and convert to dest type if
necessary.
(gen_hsa_atomic_for_builtin): Change type of op to hsa_op_with_type.

libgomp/
* testsuite/libgomp.hsa.c/pr82416.c: New test.

From-SVN: r253538

6 years agoFix gcc.dg/cold-1.c
Tom de Vries [Mon, 9 Oct 2017 09:20:38 +0000 (09:20 +0000)]
Fix gcc.dg/cold-1.c

2017-10-09  Tom de Vries  <tom@codesourcery.com>

* gcc.dg/cold-1.c (foo1): Fix warning line number.  Make warning line
number relative.
(abort): Declare.

From-SVN: r253537

6 years agoDaily bump.
GCC Administrator [Mon, 9 Oct 2017 00:16:23 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253536

6 years agors6000: Cleanup of various jump patterns
Segher Boessenkool [Sun, 8 Oct 2017 22:38:25 +0000 (00:38 +0200)]
rs6000: Cleanup of various jump patterns

This cleans up formatting of many jump patterns.  Mostly it is writing
output statements as brace blocks, and deleting default arguments.  It
also makes indentation a little bit more consistent, and uses b%T0
(instead of bctr/blr alternatives) in two more places.

* config/rs6000/rs6000.md (conditional branch): Clean up formatting.
Remove empty default arguments.  Use a brace block as output
statement.
(conditional return): Ditto.
(jump): Ditto.
(indirect_jump): Ditto.  Use b%T0 instead of bctr/blr.
(tablejump, tablejumpsi, tablejumpdi, *tablejump<mode>_internal1):
Ditto.
(group_ending_nop): Ditto.
(doloop_end): Ditto.
(ctr<mode>, ctr<mode>_internal1, ctr<mode>_internal2): Ditto.
(splitters for those): Ditto.

From-SVN: r253532

6 years agors6000: Update conditional jump patterns, no more (pc) (label_ref)
Segher Boessenkool [Sun, 8 Oct 2017 22:36:36 +0000 (00:36 +0200)]
rs6000: Update conditional jump patterns, no more (pc) (label_ref)

Currently we have two patterns for every conditional jump: one jumping
if some condition is met, and the other jumping if it is not met.  We
don't need that second form because all our conditions have an opposite
already, and the generic code can deal with that just fine.

This patch deletes that second form.  We generated it directly in one
case; adjusted here.

* config/rs6000/rs6000-string.c (expand_strncmp_align_check): Invert
a conditional jump (and the compare for it) so that pc_rtx is the
last operand.
* config/rs6000/rs6000.c (rs6000_legitimate_combined_insn): Adjust
for the deleted and renamed ctr<mode>_internal[234] patterns.
* config/rs6000/rs6000.md: Delete second conditional branch pattern.
Delete second conditional return pattern.
(ctr<mode>_internal2): Delete this second bdnz pattern.
(ctr<mode>_internal3): Rename to ctr<mode>_internal2.
(ctr<mode>_internal4): Delete this second bdz pattern.

From-SVN: r253531

6 years agotree-outof-ssa.h (ssaexpand): Add partitions_for_undefined_values.
Eric Botcazou [Sun, 8 Oct 2017 21:13:52 +0000 (21:13 +0000)]
tree-outof-ssa.h (ssaexpand): Add partitions_for_undefined_values.

* tree-outof-ssa.h (ssaexpand): Add partitions_for_undefined_values.
(always_initialized_rtx_for_ssa_name_p): New predicate.
* tree-outof-ssa.c (remove_ssa_form): Initialize new field of SA.
(finish_out_of_ssa): Free new field of SA.
* tree-ssa-coalesce.h (get_undefined_value_partitions): Declare.
* tree-ssa-coalesce.c: Include tree-ssa.h.
(get_parm_default_def_partitions): Remove extern keyword.
(get_undefined_value_partitions): New function.
* expr.c (expand_expr_real_1) <expand_decl_rtl>: For a SSA_NAME, do
not set SUBREG_PROMOTED_VAR_P on the sub-register if it may contain
uninitialized bits.
* loop-iv.c (iv_get_reaching_def): Disqualify all subregs.

From-SVN: r253530

6 years ago* builtins.def (BUILT_IN_SETJMP): Revert latest change.
Eric Botcazou [Sun, 8 Oct 2017 20:44:14 +0000 (20:44 +0000)]
* builtins.def (BUILT_IN_SETJMP): Revert latest change.

From-SVN: r253529

6 years agocheck.c (gfc_check_x): Remove function.
Steven G. Kargl [Sun, 8 Oct 2017 18:02:31 +0000 (18:02 +0000)]
check.c (gfc_check_x): Remove function.

2017-10-08  Steven G. Kargl  <kargl@gcc.gnu.org>

* check.c (gfc_check_x): Remove function.
* intrinsic.c (add_functions): Use gfc_check_fn_r.

From-SVN: r253528

6 years agostack-check-5.c: Skip with -fstack-protector.
Jeff Law [Sun, 8 Oct 2017 15:44:39 +0000 (09:44 -0600)]
stack-check-5.c: Skip with -fstack-protector.

* gcc.dg/stack-check-5.c: Skip with -fstack-protector.
* gcc.dg/stack-check-6.c: Likewise.
* gcc.dg/stack-check-6a.c: Likewise.

From-SVN: r253527

6 years agore PR fortran/82375 (PDT components in PDT declarations fail to compile)
Paul Thomas [Sun, 8 Oct 2017 15:23:24 +0000 (15:23 +0000)]
re PR fortran/82375 (PDT components in PDT declarations fail to compile)

2017-10-08  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/82375
* module.c : Bump up MOD_VERSION to 15.
(mio_component): Edit comment about PDT specification list.
(mio_expr, mio_symbol): Include the expression and symbol PDT
specification lists in the same way as in mio_component.

From-SVN: r253526

6 years agodump_prase_tree (show_symbol): Output list of variables in NAMELIST.
Thomas Koenig [Sun, 8 Oct 2017 12:54:40 +0000 (12:54 +0000)]
dump_prase_tree (show_symbol): Output list of variables in NAMELIST.

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

* dump_prase_tree (show_symbol): Output list of variables in
NAMELIST.
(show_code_node): Add new line for ELSE and END DO for DO
CONCURRENT.
* invoke.texi: Document that the output of
-fdump-fortran-original, -fdump-fortran-optimized and
-fdump-parse-tree is unsable and may lead to ICEs.

From-SVN: r253525

6 years agoi386.c (ix86_expand_set_or_movmem): Disable 512bit loops for targets that preffer...
Jan Hubicka [Sun, 8 Oct 2017 10:42:54 +0000 (12:42 +0200)]
i386.c (ix86_expand_set_or_movmem): Disable 512bit loops for targets that preffer 128bit.

* i386.c (ix86_expand_set_or_movmem): Disable 512bit loops for targets
that preffer 128bit.

From-SVN: r253524

6 years ago* i386.c (has_dispatch): Disable for Ryzen.
Jan Hubicka [Sun, 8 Oct 2017 10:41:44 +0000 (12:41 +0200)]
* i386.c (has_dispatch): Disable for Ryzen.

From-SVN: r253523

6 years agoarm.c (arm_set_return_address): Use MEM_VOLATILE_P on the target mem instead of RTX_F...
Olivier Hainque [Sun, 8 Oct 2017 08:20:25 +0000 (08:20 +0000)]
arm.c (arm_set_return_address): Use MEM_VOLATILE_P on the target mem instead of RTX_FRAME_RELATED_P on the insn...

2017-10-08  Olivier Hainque  <hainque@adacore.com>

        * config/arm/arm.c (arm_set_return_address): Use MEM_VOLATILE_P
        on the target mem instead of RTX_FRAME_RELATED_P on the insn to
        prevent DSE.
        (thumb_set_return_address): Likewise.

From-SVN: r253522

6 years agoarm-common.c (arm_except_unwind_info): Handle DWARF2_UNWIND_INFO.
Olivier Hainque [Sun, 8 Oct 2017 08:10:41 +0000 (08:10 +0000)]
arm-common.c (arm_except_unwind_info): Handle DWARF2_UNWIND_INFO.

2017-10-08  Olivier Hainque  <hainque@adacore.com>

        * common/config/arm/arm-common.c (arm_except_unwind_info):
        Handle DWARF2_UNWIND_INFO.

From-SVN: r253521

6 years agoaarch64.md (*aarch64_reg_<optab>_minus<mode>3): New pattern.
Michael Collison [Sun, 8 Oct 2017 03:57:36 +0000 (03:57 +0000)]
aarch64.md (*aarch64_reg_<optab>_minus<mode>3): New pattern.

2017-10-07  Michael Collison <michael.collison@arm.com>

* config/aarch64/aarch64.md (*aarch64_reg_<optab>_minus<mode>3):
New pattern.

2017-10-07  Michael Collison <michael.collison@arm.com>

* gcc.target/aarch64/var_shift_mask_2.c: New test.

From-SVN: r253520

6 years agoDaily bump.
GCC Administrator [Sun, 8 Oct 2017 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r253519