gcc.git
8 years agoImplement P0217R3 - C++17 structured bindings
Jakub Jelinek [Mon, 14 Nov 2016 05:02:58 +0000 (06:02 +0100)]
Implement P0217R3 - C++17 structured bindings

gcc/
* match.pd: Don't try to compare addresses of variables with
DECL_VALUE_EXPR.
gcc/cp/
* cp-tree.h (struct lang_decl_base): Add decomposition_p.
(DECL_DECOMPOSITION_P): New
(enum auto_deduction_context): Add adc_decomp_type.
(enum cp_declarator_kind): Add cdk_decomp.
* constexpr.c (cxx_eval_constant_expression): Look through
DECL_VALUE_EXPR.
(potential_constant_expression_1): Likewise.
* decl.c (reshape_init): Preserve CONSTRUCTOR_IS_DIRECT_INIT.
(check_initializer): Use build_aggr_init for DECL_DECOMPOSITION_P.
(cp_finish_decl): Pass adc_decomp_type for decomposition.
(find_decomp_class_base, get_tuple_size, get_tuple_element_type)
(get_tuple_decomp_init, cp_finish_decomp): New.
(grokdeclarator): Handle decomposition.
* init.c (build_aggr_init): Handle decomposition array.
(build_vec_init): Handle initialization from { array }.
* name-lookup.c (add_function): Always wrap TEMPLATE_DECL in
OVERLOAD.
* parser.c (declarator_can_be_parameter_pack): Handle cdk_decomp.
(function_declarator_p, strip_declarator_types)
(cp_parser_check_declarator_template_parameters): Likewise.
(cp_parser_range_for, cp_convert_range_for): Handle decomposition.
(cp_parser_simple_declaration): Parse decomposition.
(cp_parser_decomposition_declaration): New.
* pt.c (tsubst_decomp_names): New.
(subst_expr) [DECL_EXPR, RANGE_FOR_STMT]: Handle decomposition.
(do_auto_deduction): Handle adc_decomp_type.
* semantics.c (finish_decltype_type): Look through DECL_VALUE_EXPR.
* typeck.c (is_bitfield_expr_with_lowered_type): Likewise.
* tree.c (lvalue_kind): Likewise.
(cp_build_reference_type): Handle reference collapsing.

Co-Authored-By: Jason Merrill <jason@redhat.com>
From-SVN: r242377

8 years agoImprove various diagnostic issues.
Jason Merrill [Mon, 14 Nov 2016 04:58:45 +0000 (23:58 -0500)]
Improve various diagnostic issues.

* call.c (build_new_method_call_1): Include template arguments in
error message.
(print_error_for_call_failure): Likewise.
(build_new_function_call): Pass them in.
* name-lookup.c (supplement_binding_1): Don't complain about a
conflict with an erroneous declaration.
* error.c (dump_decl): Fix printing of alias declaration.
* decl.c (make_typename_type): Call cxx_incomplete_type_error.
* parser.c (cp_parser_diagnose_invalid_type_name): Likewise.
* semantics.c (perform_koenig_lookup): Don't wrap an error in
TEMPLATE_ID_EXPR.

From-SVN: r242376

8 years agoDelete addressof for temporaries (LWG 2598)
Jonathan Wakely [Mon, 14 Nov 2016 03:44:56 +0000 (03:44 +0000)]
Delete addressof for temporaries (LWG 2598)

* include/bits/move.h (addressof(const _Tp&&)): Add deleted overload,
as per LWG 2598.

From-SVN: r242375

8 years agoMake std::future::share() noexcept (LWG 2556)
Jonathan Wakely [Mon, 14 Nov 2016 03:44:53 +0000 (03:44 +0000)]
Make std::future::share() noexcept (LWG 2556)

* include/std/future (future::share(), future<R&>::share())
(future<void>::share()): Add noexcept, as per LWG 2556.

From-SVN: r242374

8 years agoPR78326 fix incorrect access of data member in base class
Jonathan Wakely [Mon, 14 Nov 2016 02:00:26 +0000 (02:00 +0000)]
PR78326 fix incorrect access of data member in base class

PR libstdc++/78326
* include/experimental/memory_resource (memory_resource::_S_max_align):
Change access to protected.

From-SVN: r242373

8 years agoDaily bump.
GCC Administrator [Mon, 14 Nov 2016 00:16:14 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242372

8 years agoAdd array support to std::shared_ptr for C++17
Jonathan Wakely [Sun, 13 Nov 2016 22:57:45 +0000 (22:57 +0000)]
Add array support to std::shared_ptr for C++17

* doc/xml/manual/status_cxx2017.xml: Update status.
* doc/html/manual/status.html: Regenerate.
* include/bits/shared_ptr.h (shared_ptr(unique_ptr<_Yp, _Del>)): Add
extension constructor to maintain C++14 behaviour.
* include/bits/shared_ptr_base.h (__sp_array_delete): Add new struct.
(__shared_count(_Ptr, false_type), __shared_count(_Ptr, true_type)):
New constructors.
(__sp_compatible_with, __sp_is_constructible): Add specializations
for array support.
(__sp_is_constructible_arr, __sp_is_constructible_arrN): New helpers.
(__shared_ptr_access): New base class for observer member functions.
(__shared_ptr::element_type): Use remove_extent.
(__shared_ptr::_UniqCompatible): Add __sp_compatible_with check.
(__shared_ptr(_Yp*)): Use tag dispatching to call new __shared_count
constructor.
(__shared_ptr(unique_ptr<_Yp, _Del>)): Add extension constructor.
(__shared_ptr::operator*, __shared_ptr::operator->): Remove and
inherit from __shared_ptr_access base class.
(__shared_ptr::__has_esft_base): Return false for array types.
(__weak_ptr::element_type): Use remove_extent.
* include/experimental/bits/shared_ptr.h (__libfund_v1): Remove.
(__shared_ptr<__libfund_v1<_Tp>>): Remove specializations.
(__wak_ptr<__libfund_v1<_Tp>>): Likewise.
(experimental::__sp_compatible_v): Redefine using
__sp_compatible_with.
(experimental::__sp_is_constructible_v): Redefine using
__sp_is_constructible.
(get_deleter, operator<<): Change argument from __shared_ptr to
shared_ptr.
* testsuite/20_util/shared_ptr/cons/array.cc: New test.
* testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc: Adjust for
new behaviour.
* testsuite/20_util/shared_ptr/observers/array.cc: Test observers for
arrays.
* testsuite/20_util/shared_ptr/observers/array_neg.cc: New test.

From-SVN: r242369

8 years agopr78268.C: New test.
Kugan Vivekanandarajah [Sun, 13 Nov 2016 22:04:36 +0000 (22:04 +0000)]
pr78268.C: New test.

gcc/testsuite/ChangeLog:

2016-11-13  Kugan Vivekanandarajah  <kuganv@linaro.org>

* g++.dg/torture/pr78268.C: New test.

gcc/ChangeLog:

2016-11-13  Kugan Vivekanandarajah  <kuganv@linaro.org>

* ipa-cp.c (ipa_get_jf_pass_through_result): Skip unary expressions.
(propagate_vr_accross_jump_function): Handle unary expressions.
* ipa-prop.c (ipa_set_jf_unary_pass_through): New.
(load_from_param_1): New.
(load_from_unmodified_param): Factor common part into load_from_param_1.
(load_from_param): New.
(compute_complex_assign_jump_func): Handle unary expressions.
(update_jump_functions_after_inlining): Likewise.
(ipa_write_jump_function): Likewise.
(ipa_read_jump_function): Likewise.

From-SVN: r242368

8 years agoImplement P0403R1, Literal suffixes for basic_string_view.
Ville Voutilainen [Sun, 13 Nov 2016 20:54:27 +0000 (22:54 +0200)]
Implement P0403R1, Literal suffixes for basic_string_view.

* include/std/string_view
(operator""sv(const char*, size_t)): New.
(operator""sv(const wchar_t*, size_t)): Likewise.
(operator""sv(const char16_t*, size_t)): Likewise.
(operator""sv(const char32_t*, size_t)): Likewise.
* testsuite/21_strings/basic_string_view/literals/types.cc: New.
* testsuite/21_strings/basic_string_view/literals/values.cc: Likewise.
* testsuite/experimental/string_view/literals/values.cc: Add
tests for literals with embedded NULs.

From-SVN: r242367

8 years agore PR tree-optimization/35503 (Warning about restricted pointers?)
Prathamesh Kulkarni [Sun, 13 Nov 2016 19:38:36 +0000 (19:38 +0000)]
re PR tree-optimization/35503 (Warning about restricted pointers?)

2016-11-13  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

PR c/35503
* doc/invoke.texi: Document Wrestrict.
* pretty-print.c (pp_format): Add case for "Z" specifier.
(test_pp_format): Test "Z" specifier.
c-family/
* c-common.h (warn_for_restrict): Declare.
* c-warn.c: Include gcc-rich-location.h.
(warn_for_restrict): New function.
* c-format.c (gcc_tdiag_char_table): Add entry for "Z" specifier.
(gcc_cdiag_char_table): Likewise.
(gcc_cxxdiag_char_table): Likewise.
* c.opt (Wrestrict): New option.
c/
* c-parser.c (c_parser_postfix_expression_after_primary): Call
warn_for_restrict.
cp/
* parser.c (cp_parser_postfix_pexpression): Call warn_for_restrict.
testsuite/
* c-c++-common/pr35503-1.c: New test.
* c-c++-common/pr35503-2.c: Likewise.
* c-c++-common/pr35503-3.c: Likewise.
* gcc.dg/format/gcc_diag-1.c: Add tests for "Z" specifier.

From-SVN: r242366

8 years agodecl.c (gnat_to_gnu_entity): In assertion about known Esize...
Bob Duff [Sun, 13 Nov 2016 18:38:02 +0000 (18:38 +0000)]
decl.c (gnat_to_gnu_entity): In assertion about known Esize...

* gcc-interface/decl.c (gnat_to_gnu_entity): In assertion about known
Esize, protect with !is_type and change !Unknown_Esize to Known_Esize.

From-SVN: r242363

8 years agore PR rtl-optimization/78232 (FAIL: gcc.dg/torture/pr48124-4.c)
Uros Bizjak [Sun, 13 Nov 2016 18:31:17 +0000 (19:31 +0100)]
re PR rtl-optimization/78232 (FAIL: gcc.dg/torture/pr48124-4.c)

PR rtl-optimization/78232
PR rtl-optimization/78248
* gcc.dg/ubsan/pr78248.c: New test.

From-SVN: r242362

8 years agodecl.c (gnat_to_gnu_entity): Look at the underlying type for the signedness of the...
Eric Botcazou [Sun, 13 Nov 2016 18:29:45 +0000 (18:29 +0000)]
decl.c (gnat_to_gnu_entity): Look at the underlying type for the signedness of the type.

* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Signed_Integer_Subtype>:
Look at the underlying type for the signedness of the type.

From-SVN: r242361

8 years agodecl.c (annotate_value): Deal specially with negative constants.
Eric Botcazou [Sun, 13 Nov 2016 18:20:25 +0000 (18:20 +0000)]
decl.c (annotate_value): Deal specially with negative constants.

* gcc-interface/decl.c (annotate_value) <INTEGER_CST>: Deal specially
with negative constants.

From-SVN: r242360

8 years agoutils2.c (gnat_protect_expr): Also protect only the address if the expression is...
Eric Botcazou [Sun, 13 Nov 2016 18:08:25 +0000 (18:08 +0000)]
utils2.c (gnat_protect_expr): Also protect only the address if the expression is the component of a dereference.

* gcc-interface/utils2.c (gnat_protect_expr): Also protect only the
address if the expression is the component of a dereference.
Do not use a reference type for the final temporary reference.

From-SVN: r242358

8 years agoMakefile.in (NO_OMIT_ADAFLAGS): Define.
Eric Botcazou [Sun, 13 Nov 2016 17:43:23 +0000 (17:43 +0000)]
Makefile.in (NO_OMIT_ADAFLAGS): Define.

* gcc-interface/Makefile.in (NO_OMIT_ADAFLAGS): Define.
(a-except.o): Replace -fno-inline with NO_INLINE_ADAFLAGS.
(s-memory.o): New rule.
(tracebak.o): Replace -fno-omit-frame-pointer with NO_OMIT_ADAFLAGS.

From-SVN: r242357

8 years agoc-ada-spec.c (print_ada_declaration): For typedef declarations...
Eric Botcazou [Sun, 13 Nov 2016 17:37:35 +0000 (17:37 +0000)]
c-ada-spec.c (print_ada_declaration): For typedef declarations...

* c-ada-spec.c (print_ada_declaration): For typedef declarations, look
for nested types only if the type is a record or union and dump SLOC.

From-SVN: r242356

8 years agoipa-icf.c (sem_function::merge): Do not create a wrapper also if the original functio...
Eric Botcazou [Sun, 13 Nov 2016 17:23:13 +0000 (17:23 +0000)]
ipa-icf.c (sem_function::merge): Do not create a wrapper also if the original function needs a static chain.

* ipa-icf.c (sem_function::merge): Do not create a wrapper also if the
original function needs a static chain.

From-SVN: r242354

8 years agore PR target/78336 (powerpc-darwin bootstrap broken (probably by 241930))
David Edelsohn [Sun, 13 Nov 2016 14:28:49 +0000 (14:28 +0000)]
re PR target/78336 (powerpc-darwin bootstrap broken (probably by 241930))

        PR target/78336
        * config/rs6000/rs6000.c (rs6000_asm_weaken_decl): Protect
        ASM_OUTPUT_DEF.

From-SVN: r242353

8 years agore PR fortran/60952 ([F03] Problem using "end" as a type-bound procedure and containe...
Janus Weil [Sun, 13 Nov 2016 11:12:05 +0000 (12:12 +0100)]
re PR fortran/60952 ([F03] Problem using "end" as a type-bound procedure and contained procedure)

2016-11-13  Janus Weil  <janus@gcc.gnu.org>

PR fortran/60952
* decl.c (match_procedure_in_type): Apply the FL_PROCEDURE attribute
to the target procedure.

2016-11-13  Janus Weil  <janus@gcc.gnu.org>

PR fortran/60952
* gfortran.dg/typebound_proc_34.f90: New test.

From-SVN: r242352

8 years agore PR fortran/66366 ([OOP] ICE on invalid with non-allocatable CLASS variable)
Janus Weil [Sun, 13 Nov 2016 09:56:10 +0000 (10:56 +0100)]
re PR fortran/66366 ([OOP] ICE on invalid with non-allocatable CLASS variable)

2016-11-13  Janus Weil  <janus@gcc.gnu.org>

PR fortran/66366
* resolve.c (resolve_component): Move check for C437
to ...
* decl.c (build_struct): ... here. Fix indentation.

2016-11-13  Janus Weil  <janus@gcc.gnu.org>

PR fortran/66366
* gfortran.dg/class_57.f90: Changed error message.
* gfortran.dg/class_60.f90: New test.

From-SVN: r242351

8 years agoCWG 2233 - default arg and parameter pack
Jason Merrill [Sun, 13 Nov 2016 06:52:43 +0000 (01:52 -0500)]
CWG 2233 - default arg and parameter pack

* typeck.c (convert_arguments): Handle default arg followed by none.

From-SVN: r242350

8 years agoFix constexpr lvalue use of __real and __imag.
Jason Merrill [Sun, 13 Nov 2016 06:52:15 +0000 (01:52 -0500)]
Fix constexpr lvalue use of __real and __imag.

* constexpr.c (potential_constant_expression_1): REALPART_EXPR and
IMAGPART_EXPR can be lvalues.

From-SVN: r242349

8 years agoDR 374 - specialization in outer namespace
Jason Merrill [Sun, 13 Nov 2016 06:51:23 +0000 (01:51 -0500)]
DR 374 - specialization in outer namespace

PR c++/56840
* pt.c (check_specialization_namespace): Allow any enclosing
namespace.
(check_unqualified_spec_or_inst): New.
(check_explicit_specialization): Call it.
* parser.c (cp_parser_elaborated_type_specifier)
(cp_parser_class_head): Call it.

From-SVN: r242348

8 years agoDaily bump.
GCC Administrator [Sun, 13 Nov 2016 00:16:21 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242345

8 years ago* g++.dg/pr78112.C: XFAIL AIX.
David Edelsohn [Sat, 12 Nov 2016 23:11:04 +0000 (23:11 +0000)]
* g++.dg/pr78112.C: XFAIL AIX.

From-SVN: r242342

8 years ago* src/filesystem/ops.cc (is_empty): Fix typo in exception message.
Jonathan Wakely [Sat, 12 Nov 2016 20:28:55 +0000 (20:28 +0000)]
* src/filesystem/ops.cc (is_empty): Fix typo in exception message.

From-SVN: r242341

8 years ago* include/std/future (future_error): Fix public typo to private.
Jonathan Wakely [Sat, 12 Nov 2016 20:28:50 +0000 (20:28 +0000)]
* include/std/future (future_error): Fix public typo to private.

From-SVN: r242340

8 years ago* es.po: Update.
Joseph Myers [Sat, 12 Nov 2016 18:51:17 +0000 (18:51 +0000)]
* es.po: Update.

From-SVN: r242338

8 years agors6000: Don't forget to initialize the TOC (PR77957)
Segher Boessenkool [Sat, 12 Nov 2016 15:13:14 +0000 (16:13 +0100)]
rs6000: Don't forget to initialize the TOC (PR77957)

The code generating traceback tables mistakenly does an early return
if !optional_tbtab, which causes it to miss the code generating the TOC
section.  This only matters if the TOC will be empty since otherwise
the section is created elsewhere.

This patch fixes it.

PR target/77957
* config/rs6000/rs6000.c (rs6000_output_function_epilogue): Don't
return early if !optional_tbtab.

From-SVN: r242336

8 years agore PR fortran/77501 ([F03] ICE in gfc_match_generic, at fortran/decl.c:9429)
Janus Weil [Sat, 12 Nov 2016 09:25:47 +0000 (10:25 +0100)]
re PR fortran/77501 ([F03] ICE in gfc_match_generic, at fortran/decl.c:9429)

2016-11-12  Janus Weil  <janus@gcc.gnu.org>

PR fortran/77501
* class.c (gfc_find_typebound_intrinsic_op): Remove an unnecessary
assert and nullification.
* decl.c (gfc_match_decl_type_spec): Use gfc_get_tbp_symtree,
fix indentation.
(gfc_match_generic): Remove an unnecessary assert.
Use gfc_get_tbp_symtree to avoid ICE.

2016-11-12  Janus Weil  <janus@gcc.gnu.org>

PR fortran/77501
* gfortran.dg/typebound_generic_16.f90: New test.

From-SVN: r242335

8 years agoAdd std::future_error constructor from future_errc
Jonathan Wakely [Sat, 12 Nov 2016 03:40:24 +0000 (03:40 +0000)]
Add std::future_error constructor from future_errc

* include/std/future (future_error): Make existing constructor
private and add constructor from future_errc.

From-SVN: r242334

8 years agoUse shared_ptr<T>::element_type in hash specializations
Jonathan Wakely [Sat, 12 Nov 2016 03:24:34 +0000 (03:24 +0000)]
Use shared_ptr<T>::element_type in hash specializations

* include/bits/shared_ptr.h (hash<shared_ptr<T>>): Use element_type.
* include/bits/shared_ptr_base.h (hash<__shared_ptr<T, L>>): Likewise.

From-SVN: r242333

8 years agoDaily bump.
GCC Administrator [Sat, 12 Nov 2016 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242331

8 years agore PR c++/71225 (Overeager instantiation of members of non-template class nested...
Jakub Jelinek [Fri, 11 Nov 2016 23:42:25 +0000 (00:42 +0100)]
re PR c++/71225 (Overeager instantiation of members of non-template class nested in class template)

PR c++/71225
* g++.dg/cpp0x/pr71225.C: New test.

From-SVN: r242328

8 years agore PR rtl-optimization/59461 (missed zero-extension elimination in the combiner)
Eric Botcazou [Fri, 11 Nov 2016 22:38:33 +0000 (22:38 +0000)]
re PR rtl-optimization/59461 (missed zero-extension elimination in the combiner)

PR rtl-optimization/59461
* doc/rtl.texi (paradoxical subregs): Add missing word.
* combine.c (reg_nonzero_bits_for_combine): Do not discard results
in modes with precision larger than that of last_set_mode.
* rtlanal.c (nonzero_bits1) <SUBREG>: If WORD_REGISTER_OPERATIONS is
set and LOAD_EXTEND_OP is appropriate, propagate results from inner
REGs to paradoxical SUBREGs.
(num_sign_bit_copies1) <SUBREG>: Likewise.  Check that the mode is not
larger than a word before invoking LOAD_EXTEND_OP on it.

From-SVN: r242326

8 years ago* fr.po: Update.
Joseph Myers [Fri, 11 Nov 2016 22:08:25 +0000 (22:08 +0000)]
* fr.po: Update.

From-SVN: r242324

8 years agoi386.md (*<shift_insn><mode>3_doubleword): Mark operand 0 as earlyclobber.
Uros Bizjak [Fri, 11 Nov 2016 19:38:20 +0000 (20:38 +0100)]
i386.md (*<shift_insn><mode>3_doubleword): Mark operand 0 as earlyclobber.

* config/i386/i386.md (*<shift_insn><mode>3_doubleword): Mark
operand 0 as earlyclobber.
(*ashl<mode>3_doubleword): Ditto for all operand 0 alternatives.

From-SVN: r242318

8 years agore PR target/78243 (incorrect byte offset in vextractuh with -mcpu=power9)
Michael Meissner [Fri, 11 Nov 2016 19:12:12 +0000 (19:12 +0000)]
re PR target/78243 (incorrect byte offset in vextractuh with -mcpu=power9)

2016-11-11  Michael Meissner  <meissner@linux.vnet.ibm.com>

PR target/78243
* config/rs6000/vsx.md (vsx_extract_<mode>_p9): Correct the
element order for little endian ordering.

* config/rs6000/altivec.md (reduc_plus_scal_<mode>): Use
VECTOR_ELT_ORDER_BIG and not BYTES_BIG_ENDIAN to adjust element
number.

From-SVN: r242317

8 years ago[i386][musl] Add cpuinfo to static libgcc only on *-musl*
Szabolcs Nagy [Fri, 11 Nov 2016 17:31:07 +0000 (17:31 +0000)]
[i386][musl] Add cpuinfo to static libgcc only on *-musl*

The __cpu_indicator_init and __cpu_model symbols are not safe to use
from shared libgcc_s.so from ifunc resolvers, so since gcc-6, only
the definitions from static libgcc.a are used, however the symbols
are kept in libgcc_s as well for backward compatibility (with
appropriate symbol version).  On targets without such backward
compatibility concern add cpuinfo to the static library only (this
avoids running the ctor, reduces libgcc_s size and elf abi concerns
about the versioned symbols).

libgcc/
2016-11-11  Szabolcs Nagy  <szabolcs.nagy@arm.com>

* config.host (i[3456]86-*-musl*, x86_64-*-musl*): Use
i386/t-cpuinfo-static instead of i386/t-cpuinfo.
* config/i386/t-cpuinfo-static: New.

From-SVN: r242268

8 years agore PR target/78310 (ICE: insn does not satisfy its constraints: {*bmi2_rorxdi3_1...
Uros Bizjak [Fri, 11 Nov 2016 16:21:52 +0000 (17:21 +0100)]
re PR target/78310 (ICE: insn does not satisfy its constraints: {*bmi2_rorxdi3_1} with -mbmi2)

PR target/78310
* config/i386/i386.md (rotate to rotatex splitter): Avoid overflow
when calculating operand 2.
(rotate to rotatex zext splitter): Ditto.

testsuite/ChangeLog:

PR target/78310
* gcc.target/i386/pr78310.c: New test.

From-SVN: r242076

8 years agogimple-ssa-isolate-paths.c (is_divmod_with_given_divisor): New function.
Jeff Law [Fri, 11 Nov 2016 16:00:47 +0000 (09:00 -0700)]
gimple-ssa-isolate-paths.c (is_divmod_with_given_divisor): New function.

* gimple-ssa-isolate-paths.c (is_divmod_with_given_divisor): New
function.
(stmt_uses_name_in_undefined_way): New function, extracted from
find_implicit_erroneous_behavior and extended for div/mod case.
(stmt_uses_0_or_null_in_undefined_way): New function, extracted from
find_explicit_erroneous_behavior and extended for div/mod case.
(find_implicit_erroneous_behavior): Use new helper function.
(find_explicit_erroneous_behavior): Use new helper function.

* gcc.dg/tree-ssa/isolate-6.c: New test.
* gcc.dg/tree-ssa/isolate-7.c: New test.

From-SVN: r242075

8 years agore PR testsuite/78292 (test case gcc.dg/vect/vect-cond-2.c fails starting with r241967)
Bin Cheng [Fri, 11 Nov 2016 14:59:48 +0000 (14:59 +0000)]
re PR testsuite/78292 (test case gcc.dg/vect/vect-cond-2.c fails starting with r241967)

gcc/testsuite
PR testsuite/78292
* gcc.dg/vect/vect-cond-2.c: Only drop xfail for targets supporting
vect_max_reduc.

From-SVN: r242073

8 years agolibgo: fix GOARCH_INT64ALIGN for several targets
Ian Lance Taylor [Fri, 11 Nov 2016 14:52:35 +0000 (14:52 +0000)]
libgo: fix GOARCH_INT64ALIGN for several targets

    From Andreas Schwab.

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

From-SVN: r242072

8 years agore PR c++/72774 (ICE on invalid C++ code on x86_64-linux-gnu (tree check: expected...
Jakub Jelinek [Fri, 11 Nov 2016 13:39:06 +0000 (14:39 +0100)]
re PR c++/72774 (ICE on invalid C++ code on x86_64-linux-gnu (tree check: expected tree that contains â€˜decl minimal’ structure, have â€˜tree_list’ in consider_binding_level, at cp/name-lookup.c:4721))

PR c++/72774
* g++.dg/parse/pr72774.C: New test.

From-SVN: r242070

8 years agore PR tree-optimization/71575 ([graphite] internal compiler error: in copy_cond_phi_n...
Richard Biener [Fri, 11 Nov 2016 12:54:25 +0000 (12:54 +0000)]
re PR tree-optimization/71575 ([graphite] internal compiler error: in copy_cond_phi_nodes, at graphite-isl-ast-to-gimple.c:2500)

2016-11-11  Richard Biener  <rguenther@suse.de>

PR tree-optimization/71575
* graphite-isl-ast-to-gimple.c (copy_cond_phi_nodes): Remove
bogus assert.

* gcc.dg/graphite/pr71575-1.c: New testcase.
* gcc.dg/graphite/pr71575-2.c: Likewise.

From-SVN: r242069

8 years agore PR middle-end/78295 (Spurious -Wuninitialized warning for vector element assignment)
Richard Biener [Fri, 11 Nov 2016 12:53:36 +0000 (12:53 +0000)]
re PR middle-end/78295 (Spurious -Wuninitialized warning for vector element assignment)

2016-11-11  Richard Biener  <rguenther@suse.de>

PR middle-end/78295
* tree-ssa-uninit.c (warn_uninitialized_vars): Do not warn
about uninitialized destination arg of BIT_INSERT_EXPR.

* gcc.dg/uninit-pr78295.c: New testcase.

From-SVN: r242068

8 years agoDaily bump.
GCC Administrator [Fri, 11 Nov 2016 00:16:19 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242065

8 years agore PR c/37998 (Unclear documentation of -fno-common)
Sandra Loosemore [Thu, 10 Nov 2016 23:56:30 +0000 (18:56 -0500)]
re PR c/37998 (Unclear documentation of -fno-common)

2016-11-10  Sandra Loosemore  <sandra@codesourcery.com>

PR c/37998

gcc/
* doc/invoke.texi (Code Gen Options) [-fno-common]: Use correct
terminology.  Expand to remove ambiguity.

From-SVN: r242062

8 years agoruntime: copy signal code from Go 1.7 runtime
Ian Lance Taylor [Thu, 10 Nov 2016 22:53:23 +0000 (22:53 +0000)]
runtime: copy signal code from Go 1.7 runtime

    Add a little shell script to auto-generate runtime.sigtable from the
    known signal names.

    Force the main package to always import the runtime package.  Otherwise
    some runtime package global variables may never be initialized.

    Set the syscallsp and syscallpc fields of g when entering a syscall, so
    that the runtime package knows when a g is executing a syscall.

    Fix runtime.funcPC to avoid dead store elimination of the interface
    value when the function is inlined.

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

From-SVN: r242060

8 years agocombine: Do not call simplify from inside change_zero_ext (PR78232)
Segher Boessenkool [Thu, 10 Nov 2016 22:45:39 +0000 (23:45 +0100)]
combine: Do not call simplify from inside change_zero_ext (PR78232)

When combine splits a three-insn combination into two instructions it
can reuse i2dest for the temporary result of the first new instruction.
However all information it has in reg_stat about that register will be
stale.  This results in the simplify_gen_binary calls in change_zero_ext
using out-of-date information, which makes it think one of the ANDs
generated there always results in 0, and it doesn't get better from there.

This can also happen if a splitter in the MD uses nonzero_bits (for
example).  I tried to make the splitting code in combine save and restore
the i2dest reg_stat info, but that causes one of the acats tests to fail.

This whole reg_stat thing needs an overhaul, and/or we shouldn't reuse
i2dest for unrelated purposes when splitting.

This patch changes change_zero_ext to do the expected simplifications
itself and not call simplify_gen_*.

PR rtl-optimization/78232
* combine.c (try_combine): Add a big comment about why reusing i2dest
is undesirable.
(change_zero_ext): Do not call simplify_gen_binary, do the
simplifications manually.

From-SVN: r242059

8 years agoFix ICE and improve errors for invalid anonymous structure declarations.
Fritz O. Reese [Thu, 10 Nov 2016 21:57:13 +0000 (21:57 +0000)]
Fix ICE and improve errors for invalid anonymous structure declarations.

PR fortran/78277
* gcc/fortran/decl.c (gfc_match_data_decl): Gracefully handle bad
anonymous structure declarations.

PR fortran/78277
* gcc/testsuite/gfortran.dg/dec_structure_17.f90: New test.

From-SVN: r242058

8 years agoFix some whitespace.
Fritz O. Reese [Thu, 10 Nov 2016 21:54:48 +0000 (21:54 +0000)]
Fix some whitespace.

gcc/fortran/
* decl.c (get_struct_decl, gfc_match_map, gfc_match_union): Fix
whitespace.
* interface.c (gfc_compare_union_types): Likewise.

From-SVN: r242057

8 years agoPR c++/77337 - auto return and lambda
Jason Merrill [Thu, 10 Nov 2016 21:42:36 +0000 (16:42 -0500)]
PR c++/77337 - auto return and lambda

* pt.c (tsubst_friend_function): Don't set DECL_INITIAL.
(instantiate_decl): It's OK to defer a constexpr function.
* cp-tree.h (DECL_FRIEND_PSEUDO_TEMPLATE_INSTANTIATION): Check
DECL_LANG_SPECIFIC.
* decl2.c (decl_defined_p): Use it.  No longer static.
* decl.c (redeclaration_error_message): Use decl_defined_p.
* constexpr.c (cxx_eval_call_expression): Set input_location around
call to instantiate_decl.

From-SVN: r242056

8 years agodebug.cc (format_word): Delete.
François Dumont [Thu, 10 Nov 2016 21:29:43 +0000 (21:29 +0000)]
debug.cc (format_word): Delete.

2016-11-10  François Dumont  <fdumont@gcc.gnu.org>

* src/c++11/debug.cc (format_word): Delete.
(print_literal): New. Replace call to print_word for literals.

From-SVN: r242055

8 years agors6000.c (rs6000_hard_regno_mode_ok): If ISA 3.0...
Michael Meissner [Thu, 10 Nov 2016 19:38:33 +0000 (19:38 +0000)]
rs6000.c (rs6000_hard_regno_mode_ok): If ISA 3.0...

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

* config/rs6000/rs6000.c (rs6000_hard_regno_mode_ok): If ISA 3.0,
enable HImode and QImode to go in vector registers by default if
the -mvsx-small-integer option is enabled.
(rs6000_secondary_reload_simple_move): Likewise.
(rs6000_preferred_reload_class): Don't force integer constants to
be loaded into vector registers that we can easily make into
memory (or being created in the GPRs and moved over with direct
move).
* config/rs6000/vsx.md (UNSPEC_P9_MEMORY): Delete, no longer
used.
(vsx_extract_<mode>): Rework V4SImode, V8HImode, and V16QImode
vector extraction on ISA 3.0 when the scalar integer can be
allocated in vector registers.  Generate the VEC_SELECT directy,
and don't use UNSPEC's to avoid having the scalar type in a vector
register.  Make the expander target registers, and let the
combiner fold in results storing to memory, if the machine
supports stores.
(vsx_extract_<mode>_di): Likewise.
(vsx_extract_<mode>_p9): Likewise.
(vsx_extract_<mode>_di_p9): Likewise.
(vsx_extract_<mode>_store_p9): Likewise.
(vsx_extract_si): Likewise.
(vsx_extract_<mode>_p8): Likewise.
(p9_lxsi<wd>zx): Delete, no longer used.
(p9_stxsi<wd>x): Likewise.
* config/rs6000/rs6000.md (INT_ISA3): New mode iterator for
integers in vector registers for ISA 3.0.
(QHI): Update comment.
(zero_extendqi<mode>2): Add support for ISA 3.0 scalar load or
vector extract instructions in sign/zero extend.
(zero_extendhi<mode>): Likewise.
(extendqi<mode>): Likewise.
(extendhi<mode>2): Likewise.
(HImode splitter for load/sign extend in vector register):
Likewise.
(float<QHI:mode><FP_ISA3:mode>2): Eliminate old method of
optimizing floating point conversions to/from small data types and
rewrite it to support QImode/HImode being allowed in vector
registers on ISA 3.0.
(float<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
(floatuns<QHI:mode><FP_ISA3:mode>2): Likewise.
(floatuns<QHI:mode><FP_ISA3:mode>2_internal): Likewise.
(fix_trunc<SFDF:mode><QHI:mode>2): Likewise.
(fix_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
(fixuns_trunc<SFDF:mode><QHI:mode>2): Likewise.
(fixuns_trunc<SFDF:mode><QHI:mode>2_internal): Likewise.
VSPLITISW on ISA 2.07.
(movhi_internal): Combine movhi_internal and movqi_internal into
one mov<mode>_internal with an iterator.  Add support for QImode
and HImode being allowed in vector registers.  Make large number
of attributes and constraints easier to read.
(movqi_internal): Likewise.
(mov<mode>_internal): Likewise.
(movdi_internal64): Fix constraint to allow loading -16..15 with
VSPLITISW on ISA 2.07.
(integer XXSPLTIB splitter): Add support for QI, HI, and SImode as
well as DImode.

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

* gcc.target/powerpc/vsx-qimode.c: New test for QImode, HImode
being allowed in vector registers.
* gcc.target/powerpc/vsx-qimode2.c: Likewise.
* gcc.target/powerpc/vsx-qimode3.c: Likewise.
* gcc.target/powerpc/vsx-himode.c: Likewise.
* gcc.target/powerpc/vsx-himode2.c: Likewise.
* gcc.target/powerpc/vsx-himode3.c: Likewise.
* gcc.target/powerpc/p9-extract-1.c: Change MFVSRD to just MFVSR,
to allow matching MFVSRD or MFVSRW.

From-SVN: r242048

8 years agore PR rtl-optimization/78241 (wrong code with -funroll-loops)
Pat Haugen [Thu, 10 Nov 2016 18:55:57 +0000 (18:55 +0000)]
re PR rtl-optimization/78241 (wrong code with -funroll-loops)

PR rtl-optimization/78241
* loop-unroll.c (unroll_loop_runtime_iterations): Don't adjust 'niter', but
emit initial peel copy if niter expr is not reliable.

* gcc.dg/pr78241.c: New test.

From-SVN: r242047

8 years agodwarf2cfi: Dump row differences before asserting
Segher Boessenkool [Thu, 10 Nov 2016 17:43:02 +0000 (18:43 +0100)]
dwarf2cfi: Dump row differences before asserting

If maybe_record_trace_start fails because the CFI is inconsistent on two
paths into a block it currently just ICEs.  This changes it to also dump
the CFI on those two paths in the dump file; debugging it without that
information is hopeless.

* dwarf2cfi.c (dump_cfi_row): Add forward declaration.
(maybe_record_trace_start): If the CFI is different on the new and
old paths, print out both to the dump file before ICEing.

From-SVN: r242046

8 years agocpp.c (cpp_define_builtins): Define _OPENMP to 201511 instead of 201307.
Jakub Jelinek [Thu, 10 Nov 2016 17:05:18 +0000 (18:05 +0100)]
cpp.c (cpp_define_builtins): Define _OPENMP to 201511 instead of 201307.

gcc/fortran/
* cpp.c (cpp_define_builtins): Define _OPENMP to 201511 instead
of 201307.
* gfortran.texi: Mention partial OpenMP 4.5 support.
* intrinsic.texi: Update for OpenMP 4.5.
gcc/testsuite/
* gfortran.dg/openmp-define-3.f90: Expect 201511 instead of
201307.
libgomp/
* omp_lib.f90.in (openmp_version): Change to 201511 from 201307.
* omp_lib.h.in (openmp_version): Likewise.
* testsuite/libgomp.fortran/openmp_version-1.f: Expect 201511 instead
of 201307.
* testsuite/libgomp.fortran/openmp_version-2.f90: Likewise.

From-SVN: r242044

8 years agotarget.def (additional_allocno_class_p): New.
Vladimir Makarov [Thu, 10 Nov 2016 17:04:31 +0000 (17:04 +0000)]
target.def (additional_allocno_class_p): New.

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

* target.def (additional_allocno_class_p): New.
* hooks.h (hook_bool_reg_class_t_false): New prototype.
* hooks.c (hook_bool_reg_class_t_false): New.
* ira.c (setup_allocno_and_important_classes): Use the new hook.
* doc/tm.texi.in (TARGET_ADDITIONAL_ALLOCNO_CLASS_P): Add it.
* doc/tm.texi: Update.

From-SVN: r242043

8 years agomangle.c (mangle_decl): Only emit -Wc++1z-compat warnings for public or external...
Jakub Jelinek [Thu, 10 Nov 2016 17:04:06 +0000 (18:04 +0100)]
mangle.c (mangle_decl): Only emit -Wc++1z-compat warnings for public or external symbols.

* mangle.c (mangle_decl): Only emit -Wc++1z-compat warnings for
public or external symbols.

* g++.dg/cpp1z/noexcept-type14.C: New test.
* g++.dg/asan/asan_test.C: Remove -Wno-c++1z-compat from dg-options.

From-SVN: r242042

8 years ago[Patch testsuite] Check range of exponent for tests added in r241817
James Greenhalgh [Thu, 10 Nov 2016 16:53:58 +0000 (16:53 +0000)]
[Patch testsuite] Check range of exponent for tests added in r241817

gcc/ChangeLog

2016-11-10  James Greenhalgh  <james.greenhalgh@arm.com>

* gcc.dg/torture/fp-int-convert.h (M_OK2): New, use it in
WVAL0S tests added in r241817.

From-SVN: r242041

8 years agogengtype.c (new_structure): Append to structures list.
Jason Merrill [Thu, 10 Nov 2016 16:49:08 +0000 (11:49 -0500)]
gengtype.c (new_structure): Append to structures list.

* gengtype.c (new_structure): Append to structures list.

(find_structure): Likewise.

From-SVN: r242040

8 years agoFix loop distribution bug with merging edges that creates too many edges.
Jim Wilson [Thu, 10 Nov 2016 15:20:59 +0000 (15:20 +0000)]
Fix loop distribution bug with merging edges that creates too many edges.

gcc/
* tree-loop-distribution.c (pg_add_dependence_edges): Return 2 if
this_dir is 2.  Check for this_dir non-zero before dir != this_dir
check.

From-SVN: r242038

8 years agoomp-low.c (lower_omp_target): Fix up argument to is_reference.
Jakub Jelinek [Thu, 10 Nov 2016 11:38:05 +0000 (12:38 +0100)]
omp-low.c (lower_omp_target): Fix up argument to is_reference.

gcc/
* omp-low.c (lower_omp_target): Fix up argument to is_reference.
(expand_omp_ordered_sink): Handle TREE_PURPOSE of deps being
TRUNC_DIV_EXPR.
* gimplify.c (gimplify_scan_omp_clauses): Likewise.  Set
ctx->target_map_scalars_firstprivate on OMP_TARGET even for Fortran.
Remove omp_no_lastprivate callers.  Propagate lastprivate on combined
teams distribute parallel for simd even to distribute and teams
construct.  For OMP_CLAUSE_DEPEND add missing break at the end of
OMP_CLAUSE_DEPEND_SINK case.
(omp_notice_variable): Use lang_hooks.decls.omp_scalar_p.
(omp_no_lastprivate): Removed.
(gimplify_adjust_omp_clauses): Remove omp_no_lastprivate callers.
(gimplify_omp_for): Likewise.
(computable_teams_clause): Fail for automatic vars from current
function not yet seen in bind expr.
* langhooks.c (lhd_omp_scalar_p): New function.
* langhooks.h (struct lang_hooks_for_decls): Add omp_scalar_p.
* varpool.c (varpool_node::get_create): Set node->offloading
even for DECL_EXTERNAL decls.
* langhooks-def.h (lhd_omp_scalar_p): New prototype.
(LANG_HOOKS_OMP_SCALAR_P): Define.
(LANG_HOOKS_DECLS): Use it.
gcc/fortran/
* openmp.c (gfc_free_omp_clauses): Free critical_name, grainsize,
hint, num_tasks, priority and if_exprs.
(gfc_match_omp_to_link, gfc_match_omp_depend_sink): New functions.
(enum omp_mask1, enum omp_mask2): New enums.
Change all OMP_CLAUSE_* defines into enum values, and change their
values from ((uint64_t) 1 << bit) to just bit.
(omp_mask, omp_inv_mask): New classes.  Add ctors and operators.
(gfc_match_omp_clauses): Change mask argument from uint64_t to
const omp_mask.  Assert OMP_MASK1_LAST and OMP_MASK2_LAST are
at most 64.  Move delete clause handling to where it
alphabetically belongs.  Parse defaultmap, grainsize, hint,
is_device_ptr, nogroup, nowait, num_tasks, priority, simd, threads
and use_device_ptr clauses.  Parse if clause modifier.  Parse map
clause always modifier, and release and delete kinds.  Parse ordered
clause with argument.  Parse schedule clause modifiers.  Differentiate
device clause parsing based on openacc flag.  Guard link clause
parsing with openacc flag.  Add support for parsing
linear clause modifiers.  Parse depend(source) and depend(sink: ...).
Use gfc_match_omp_to_link for to and link clauses in declare target
construct.
(match_acc): Change mask type from uint64_t to const omp_mask.
(OMP_SINGLE_CLAUSES, OMP_ORDERED_CLAUSES,
OMP_DECLARE_TARGET_CLAUSES, OMP_TASKLOOP_CLAUSES,
OMP_TARGET_ENTER_DATA_CLAUSES, OMP_TARGET_EXIT_DATA_CLAUSES): Define.
(OACC_PARALLEL_CLAUSES, OACC_KERNELS_CLAUSES, OACC_DATA_CLAUSES,
OACC_LOOP_CLAUSES, OACC_HOST_DATA_CLAUSES, OACC_DECLARE_CLAUSES,
OACC_ENTER_DATA_CLAUSES, OACC_EXIT_DATA_CLAUSES, OACC_WAIT_CLAUSES,
OACC_ROUTINE_CLAUSES, OMP_PARALLEL_CLAUSES, OMP_DECLARE_SIMD_CLAUSES,
OMP_SECTIONS_CLAUSES, OMP_TEAMS_CLAUSES, OMP_DISTRIBUTE_CLAUSES):
Replace first or only OMP_CLAUSE_* value in bitset with
omp_mask (OMP_CLAUSE_*).
(OMP_DO_CLAUSES): Likewise.  Add OMP_CLAUSE_LINEAR.
(OMP_SIMD_CLAUSES): Replace first or only OMP_CLAUSE_* value in
bitset with omp_mask (OMP_CLAUSE_*).  Add OMP_CLAUSE_SIMDLEN.
(OACC_UPDATE_CLAUSES): Replace first or only OMP_CLAUSE_* value in
bitset with omp_mask (OMP_CLAUSE_*).  Replace OMP_CLAUSE_OACC_DEVICE
with OMP_CLAUSE_DEVICE.
(OMP_TASK_CLAUSES): Replace first or only OMP_CLAUSE_* value in
bitset with omp_mask (OMP_CLAUSE_*).  Add OMP_CLAUSE_PRIORITY.
(OMP_TARGET_CLAUSES): Replace first or only OMP_CLAUSE_* value in
bitset with omp_mask (OMP_CLAUSE_*).  Add OMP_CLAUSE_DEPEND,
OMP_CLAUSE_NOWAIT, OMP_CLAUSE_PRIVATE, OMP_CLAUSE_FIRSTPRIVATE,
OMP_CLAUSE_DEFAULTMAP and OMP_CLAUSE_IS_DEVICE_PTR.
(OMP_TARGET_DATA_CLAUSES): Replace first or only OMP_CLAUSE_* value in
bitset with omp_mask (OMP_CLAUSE_*).  Add OMP_CLAUSE_USE_DEVICE_PTR.
(OMP_TARGET_UPDATE_CLAUSES): Replace first or only OMP_CLAUSE_* value
in bitset with omp_mask (OMP_CLAUSE_*).  Add OMP_CLAUSE_DEPEND and
OMP_CLAUSE_NOWAIT.
(match_omp): Change mask argument from unsigned int to
const omp_mask.
(gfc_match_omp_critical): Parse optional clauses and use omp_clauses
union member instead of omp_name.
(gfc_match_omp_end_critical): New function.
(gfc_match_omp_distribute_parallel_do): Remove ordered and linear
clauses from the mask.
(gfc_match_omp_distribute_parallel_do_simd): Use
& ~(omp_mask (OMP_CLAUSE_*)) instead of & ~OMP_CLAUSE_*.
(gfc_match_omp_target_teams_distribute_parallel_do_simd): Likewise.
(gfc_match_omp_teams_distribute_parallel_do_simd): Likewise.
(gfc_match_omp_do_simd): Likewise.  Don't remove ordered clause from
the mask.
(gfc_match_omp_parallel_do_simd): Likewise.
(gfc_match_omp_target_teams_distribute_parallel_do): Likewise.
(gfc_match_omp_teams_distribute_parallel_do): Likewise.
(gfc_match_omp_declare_simd): If not using the form with
(proc-name), require space before first clause.  Make (proc-name)
optional.  If not present, set proc_name to NULL.
(gfc_match_omp_declare_target): Rewritten for OpenMP 4.5.
(gfc_match_omp_single): Use OMP_SINGLE_CLAUSES.
(gfc_match_omp_task, gfc_match_omp_taskwait, gfc_match_omp_taskyield):
Move around to where they belong alphabetically.
(gfc_match_omp_target_enter_data, gfc_match_omp_target_exit_data,
gfc_match_omp_target_parallel, gfc_match_omp_target_parallel_do,
gfc_match_omp_target_parallel_do_simd, gfc_match_omp_target_simd,
gfc_match_omp_taskloop, gfc_match_omp_taskloop_simd):
New functions.
(gfc_match_omp_ordered): Parse clauses.
(gfc_match_omp_ordered_depend): New function.
(gfc_match_omp_cancel, gfc_match_omp_end_single): Use
omp_mask (OMP_CLAUSE_*) instead of OMP_CLAUSE_*.
(resolve_oacc_scalar_int_expr): Renamed to ...
(resolve_scalar_int_expr): ... this.  Fix up formatting.
(resolve_oacc_positive_int_expr): Renamed to ...
(resolve_positive_int_expr): ... this.  Fix up formatting.
(resolve_nonnegative_int_expr): New function.
(resolve_omp_clauses): Adjust callers, use the above functions
even for OpenMP clauses, add handling of new OpenMP 4.5 clauses.
Require orderedc >= collapse if specified. Handle depend(sink:)
and depend(source) restrictions.  Disallow linear clause when
orderedc is non-zero.  Diagnose linear clause modifiers when not in
declare simd.  Only check for integer type if ref modifier
is not used.  Remove diagnostics for required VALUE attribute.
Diagnose VALUE attribute with ref or uval modifiers.  Allow
non-constant linear-step, if it is a dummy argument alone and is
mentioned in uniform clause.  Diagnose map kinds not allowed
for various constructs.  Diagnose target {enter ,exit ,}data without
any map clauses.  Add dummy OMP_LIST_IS_DEVICE_PTR and
OMP_LIST_USE_DEVICE_PTR cases.
(gfc_resolve_omp_do_blocks): Set omp_current_do_collapse to orderedc
if non-zero.
(gfc_resolve_omp_parallel_blocks): Handle new OpenMP 4.5 constructs,
replace underscores with spaces in a few construct names.
(resolve_omp_do): Set collapse to orderedc if non-zero.  Handle new
OpenMP 4.5 constructs.
(resolve_oacc_loop_blocks): Call resolve_positive_int_expr instead
of resolve_oacc_positive_int_expr.
(gfc_resolve_omp_directive): Handle new OpenMP 4.5 constructs.
(gfc_resolve_omp_declare_simd): Allow ods->proc_name to be NULL.
* trans-openmp.c (gfc_omp_scalar_p): New function.
(doacross_steps): New variable.
(gfc_trans_omp_clauses): Handle new OpenMP 4.5 clauses and new clause
modifiers.
(gfc_trans_omp_critical): Adjust EXEC_OMP_CRITICAL handling.
(gfc_trans_omp_do): Handle doacross loops.  Clear sched_simd flag.
Handle EXEC_OMP_TASKLOOP.
(gfc_trans_omp_ordered): Translate omp clauses, allow NULL
code->block.
(GFC_OMP_SPLIT_TASKLOOP, GFC_OMP_MASK_TASKLOOP): New enum constants.
(gfc_split_omp_clauses): Copy orderedc together with ordered.  Change
firstprivate and lastprivate handling for OpenMP 4.5.
Handle EXEC_OMP_TARGET_SIMD, EXEC_OMP_TARGET_PARALLEL{,_DO,_DO_SIMD}
and EXEC_OMP_TASKLOOP{,_SIMD}.  Add handling for new OpenMP 4.5
clauses and clause modifiers and handle if clause without/with
modifiers.
(gfc_trans_omp_teams): Add omp_clauses argument, add it to other
teams clauses.  Don't wrap into OMP_TEAMS if -fopenmp-simd.
(gfc_trans_omp_target): For -fopenmp, translate num_teams and
thread_limit clauses on combined target teams early and pass to
gfc_trans_omp_teams.  Set OMP_TARGET_COMBINED if needed.
Handle EXEC_OMP_TARGET_PARALLEL{,_DO,_DO_SIMD} and
EXEC_OMP_TARGET_SIMD.
(gfc_trans_omp_taskloop, gfc_trans_omp_target_enter_data,
gfc_trans_omp_target_exit_data): New functions.
(gfc_trans_omp_directive): Handle EXEC_OMP_TARGET_{ENTER,EXIT}_DATA
EXEC_OMP_TASKLOOP{,_SIMD}, EXEC_OMP_TARGET_PARALLEL{,_DO,_DO_SIMD}
and EXEC_OMP_TARGET_SIMD.  Adjust gfc_trans_omp_teams caller.
* symbol.c (check_conflict): Handle omp_declare_target_link.
(gfc_add_omp_declare_target_link): New function.
(gfc_copy_attr): Copy omp_declare_target_link.
* dump-parse-tree.c (show_omp_namelist): Handle OMP_DEPEND_SINK_FIRST
depend_op.  Print linear clause modifiers.
(show_omp_clauses): Adjust for OpenMP 4.5 clause changes.
(show_omp_node): Print clauses for EXEC_OMP_ORDERED.  Allow NULL
c->block for EXEC_OMP_ORDERED.  Formatting fixes.  Adjust handling of
EXEC_OMP_CRITICAL, handle new OpenMP 4.5 constructs and some
forgotten OpenMP 4.0 constructs.
(show_code_node): Handle new OpenMP 4.5 constructs and some forgotten
OpenMP 4.0 constructs.
* gfortran.h (symbol_attribute): Add omp_declare_target_link bitfield.
(struct gfc_omp_namelist): Add u.common and u.linear_op fields.
(struct gfc_common_head): Change omp_declare_target into bitfield.
Add omp_declare_target_link bitfield.
(gfc_add_omp_declare_target_link): New prototype.
(enum gfc_statement): Add ST_OMP_TARGET_PARALLEL,
ST_OMP_END_TARGET_PARALLEL, ST_OMP_TARGET_PARALLEL_DO,
ST_OMP_END_TARGET_PARALLEL_DO, ST_OMP_TARGET_PARALLEL_DO_SIMD,
ST_OMP_END_TARGET_PARALLEL_DO_SIMD, ST_OMP_TARGET_ENTER_DATA,
ST_OMP_TARGET_EXIT_DATA, ST_OMP_TARGET_SIMD, ST_OMP_END_TARGET_SIMD,
ST_OMP_TASKLOOP, ST_OMP_END_TASKLOOP, ST_OMP_TASKLOOP_SIMD,
ST_OMP_END_TASKLOOP_SIMD and ST_OMP_ORDERED_DEPEND.
(enum gfc_omp_depend_op): Add OMP_DEPEND_SINK_FIRST and
OMP_DEPEND_SINK.
(enum gfc_omp_linear_op): New.
(struct gfc_omp_clauses): Add critical_name, depend_source,
orderedc, defaultmap, nogroup, sched_simd, sched_monotonic,
sched_nonmonotonic, simd, threads, grainsize, hint, num_tasks,
priority and if_exprs fields.
(enum gfc_exec_op): Add EXEC_OMP_END_CRITICAL,
EXEC_OMP_TARGET_ENTER_DATA, EXEC_OMP_TARGET_EXIT_DATA,
EXEC_OMP_TARGET_PARALLEL, EXEC_OMP_TARGET_PARALLEL_DO,
EXEC_OMP_TARGET_PARALLEL_DO_SIMD, EXEC_OMP_TARGET_SIMD,
EXEC_OMP_TASKLOOP, EXEC_OMP_TASKLOOP_SIMD.
(enum gfc_omp_map_op): Add OMP_MAP_RELEASE,
OMP_MAP_ALWAYS_TO, OMP_MAP_ALWAYS_FROM and OMP_MAP_ALWAYS_TOFROM.
(OMP_LIST_IS_DEVICE_PTR, OMP_LIST_USE_DEVICE_PTR): New.
(enum gfc_omp_if_kind): New.
* module.c (enum ab_attribute): Add AB_OMP_DECLARE_TARGET_LINK.
(attr_bits): Add AB_OMP_DECLARE_TARGET_LINK entry.
(mio_symbol_attribute): Save and restore omp_declare_target_link bit.
* trans.h (gfc_omp_scalar_p): New prototype.
* frontend-passes.c (gfc_code_walker): Handle new OpenMP 4.5
expressions.
* trans.c (trans_code): Handle new OpenMP 4.5 constructs.
* resolve.c (gfc_resolve_blocks): Likewise.
(gfc_resolve_code): Likewise.
* f95-lang.c (LANG_HOOKS_OMP_SCALAR_P): Redefine to gfc_omp_scalar_p.
(gfc_attribute_table): Add "omp declare target link".
* st.c (gfc_free_statement): Handle EXEC_OMP_END_CRITICAL like
EXEC_OMP_CRITICAL before, free clauses for EXEC_OMP_CRITICAL
and new OpenMP 4.5 constructs.  Free omp clauses even for
EXEC_OMP_ORDERED.
* match.c (match_exit_cycle): Rename collapse variable to count,
set it to orderedc if non-zero, instead of collapse.
* trans-decl.c (add_attributes_to_decl): Add "omp declare target link"
instead of "omp declare target" for omp_declare_target_link.
* trans-common.c (build_common_decl): Likewise.
* match.h (gfc_match_omp_target_enter_data,
gfc_match_omp_target_exit_data, gfc_match_omp_target_parallel,
gfc_match_omp_target_parallel_do,
gfc_match_omp_target_parallel_do_simd, gfc_match_omp_target_simd,
gfc_match_omp_taskloop, gfc_match_omp_taskloop_simd,
gfc_match_omp_end_critical, gfc_match_omp_ordered_depend): New
prototypes.
* parse.c (decode_omp_directive): Use gfc_match_omp_end_critical
instead of gfc_match_omp_critical for !$omp end critical.
Handle new OpenMP 4.5 constructs.  If ordered directive has
depend clause as the first of the clauses, use
gfc_match_omp_ordered_depend and ST_OMP_ORDERED_DEPEND instead of
gfc_match_omp_ordered and ST_OMP_ORDERED.
(case_executable): Add ST_OMP_TARGET_ENTER_DATA,
ST_OMP_TARGET_EXIT_DATA and ST_OMP_ORDERED_DEPEND cases.
(case_exec_markers): Add ST_OMP_TARGET_PARALLEL,
ST_OMP_TARGET_PARALLEL_DO, ST_OMP_TARGET_PARALLEL_DO_SIMD,
ST_OMP_TARGET_SIMD, ST_OMP_TASKLOOP and ST_OMP_TASKLOOP_SIMD cases.
(gfc_ascii_statement): Handle new OpenMP 4.5 constructs.
(parse_omp_do): Handle ST_OMP_TARGET_PARALLEL_DO,
ST_OMP_TARGET_PARALLEL_DO_SIMD, ST_OMP_TASKLOOP and
ST_OMP_TASKLOOP_SIMD.
(parse_omp_structured_block): Handle EXEC_OMP_END_CRITICAL instead
of EXEC_OMP_CRITICAL, adjust for EXEC_OMP_CRITICAL having omp clauses
now.
(parse_executable): Handle ST_OMP_TARGET_PARALLEL,
ST_OMP_TARGET_PARALLEL_DO, ST_OMP_TARGET_PARALLEL_DO_SIMD,
ST_OMP_TASKLOOP and ST_OMP_TASKLOOP_SIMD.
gcc/testsuite/
* gfortran.dg/gomp/pr77516.f90: Add dg-warning.
* gfortran.dg/gomp/target1.f90: Remove ordered clause where it is
no longer allowed and corresponding ordered construct.
* gfortran.dg/gomp/linear-1.f90: New test.
* gfortran.dg/gomp/declare-simd-2.f90: New test.
* gfortran.dg/gomp/declare-target-1.f90: New test.
* gfortran.dg/gomp/declare-target-2.f90: New test.
libgomp/
* testsuite/libgomp.fortran/examples-4/declare_target-1.f90
(fib_wrapper): Add map(from: x) clause.
* testsuite/libgomp.fortran/examples-4/declare_target-2.f90
(e_53_2): Likewise.
* testsuite/libgomp.fortran/examples-4/declare_target-4.f90
(accum): Add map(tmp) clause.
* testsuite/libgomp.fortran/examples-4/declare_target-5.f90
(accum): Add map(tofrom: tmp) clause.
* testsuite/libgomp.fortran/examples-4/target_data-3.f90
(gramSchmidt): Likewise.
* testsuite/libgomp.fortran/examples-4/teams-2.f90 (dotprod): Add
map(tofrom: sum) clause.
* testsuite/libgomp.fortran/nestedfn5.f90 (foo): Add twice
map (alloc: a, l) clause.  Add defaultmap(tofrom: scalar) clause.
* testsuite/libgomp.fortran/pr66199-2.f90: Adjust for linear clause
only allowed on the loop iterator.
* testsuite/libgomp.fortran/target4.f90 (foo): Add map(t) clause.
* testsuite/libgomp.fortran/taskloop2.f90: New test.
* testsuite/libgomp.fortran/taskloop4.f90: New test.
* testsuite/libgomp.fortran/doacross1.f90: New test.
* testsuite/libgomp.fortran/doacross3.f90: New test.
* testsuite/libgomp.fortran/taskloop1.f90: New test.
* testsuite/libgomp.fortran/taskloop3.f90: New test.
* testsuite/libgomp.fortran/doacross2.f90: New test.
* testsuite/libgomp.c/doacross-1.c (main): Add missing
#pragma omp atomic read.
* testsuite/libgomp.c/doacross-2.c (main): Likewise.
* testsuite/libgomp.c/doacross-3.c (main): Likewise.

From-SVN: r242037

8 years agoCreate live_switch_vars conditionally (PR sanitizer/78270)
Martin Liska [Thu, 10 Nov 2016 11:21:03 +0000 (12:21 +0100)]
Create live_switch_vars conditionally (PR sanitizer/78270)

PR sanitizer/78270
* gcc.dg/asan/pr78270.c: New test.
PR sanitizer/78270
* gimplify.c (gimplify_switch_expr): Create live_switch_vars
only when SWITCH_BODY is a BIND_EXPR.

From-SVN: r242036

8 years agodebug/78112: remove recent duplicates for DW_TAG_subprogram attributes
Pierre-Marie de Rodat [Thu, 10 Nov 2016 11:06:32 +0000 (11:06 +0000)]
debug/78112: remove recent duplicates for DW_TAG_subprogram attributes

Disable unnecessary calls to dwarf2out_decl for the parents of nested
functions. This fixes a libstdc++ build regression on
x86_64-apple-darwin, as these calls used to add duplicate attributes
(for instance DW_AT_inline and DW_AT_object_pointer) to the
corresponding DW_TAG_subprogram DIE.

Bootstrapped and regtested on x86_64-linux.

gcc/
PR debug/78112
* dwarf2out.c (dwarf2out_early_global_decl): Call dwarf2out_decl
on the context only when it has no DIE yet.

testsuite/
PR debug/78112
* g++.dg/pr78112.C: New testcase

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
From-SVN: r242035

8 years ago[ARM] Remove duplicated enum type for CPU identifiers
Richard Earnshaw [Thu, 10 Nov 2016 10:38:03 +0000 (10:38 +0000)]
[ARM] Remove duplicated enum type for CPU identifiers

* arm.h (target_cpus): Delete.
* arm-opts.h (enum processor_type): Prefix entires with TARGET_CPU_.
* arm.c (all_cores): Prefix IDENT with TARGET_CPU_.
(all_architectures): Likewise.
(arm_option_override): Adjust use of CPU enums.
(arm_sched_reorder): Likewise.
* vfp.md (movdi_vfp, movdi_vfp_cortexa8): Likewise.
* arm.opt (mcpu, mtune): Adjust use of CPU enums.
* arm/genopt.sh (processor_type): Prefix enumeration entries with
TARGET_CPU_.
* arm-tables.opt: Regenerated.

From-SVN: r242034

8 years ago[ARM/AArch64] Add Falkor CPU support.
Siddhesh Poyarekar [Thu, 10 Nov 2016 10:24:53 +0000 (10:24 +0000)]
[ARM/AArch64] Add Falkor CPU support.

2016-11-10  Siddhesh Poyarekar  <siddhesh.poyarekar@linaro.org>

* config/aarch64/aarch64-cores.def (qdf24xx): Update part
number.
(falkor): New core.
* config/aarch64/aarch64-tune.md: Regenerated.
* config/arm/arm-cores.def (falkor): New core.
* config/arm/arm-tables.opt: Regenerated.
* config/arm/arm-tune.md: Regenerated.
* config/arm/bpabi.h (BE8_LINK_SPEC): Add falkor support.
* config/arm/t-aprofile (MULTILIB_MATCHES): Likewise.
* doc/invoke.texi (AArch64 Options/-mtune): Document it.
(ARM Options/-mtune): Likewise.

From-SVN: r242033

8 years agorevert: ipa-cp.c (ipa_get_jf_pass_through_result): Handle unary expressions.
Kugan Vivekanandarajah [Thu, 10 Nov 2016 07:13:39 +0000 (07:13 +0000)]
revert: ipa-cp.c (ipa_get_jf_pass_through_result): Handle unary expressions.

2016-11-10  Kugan Vivekanandarajah  <kuganv@linaro.org>

Revert
2016-11-09  Kugan Vivekanandarajah  <kuganv@linaro.org>

* ipa-cp.c (ipa_get_jf_pass_through_result): Handle unary expressions.
(propagate_vr_accross_jump_function): Likewise.
* ipa-prop.c (ipa_set_jf_unary_pass_through): New.
(load_from_param_1): New.
(load_from_unmodified_param): Factor common part into load_from_param_1.
(load_from_param): New.
(compute_complex_assign_jump_func): Handle unary expressions.
(ipa_write_jump_function): Likewise.
(ipa_read_jump_function): Likewise.

From-SVN: r242032

8 years agosimplify-rtx: Transform (xor (and (xor A B) C) B) with C const
Segher Boessenkool [Thu, 10 Nov 2016 00:32:43 +0000 (01:32 +0100)]
simplify-rtx: Transform (xor (and (xor A B) C) B) with C const

match.pd transforms (A&C)|(B&~C) to ((A^B)&C)^B, which is fewer
operations if C is not const (and it is not on simple tests at least,
this transform is done very early already).

Various processors have "insert" instructions that can do this, but
combine cannot build those from the xor-and-xor, especially it has no
chance at all to do that if A or B or multiple instructions as well
(on PowerPC, the rl[wd]imi instructions can do this with together with
a rotate, or a simple shift with appropriate C; other ISAs have similar
insns).

This patch makes RTL simplify transform (xor (and (xor A B) C) B) back
to (ior (and A C) (and B ~C)) for constant C (and similar with A instead
of B for that last term).

* simplify-rtx.c (simplify_binary_operation_1): Simplify
(xor (and (xor A B) C) B) to (ior (and A C) (and B ~C)) and
(xor (and (xor A B) C) A) to (ior (and A ~C) (and B C)) if C
is a const_int.

From-SVN: r242031

8 years agoDaily bump.
GCC Administrator [Thu, 10 Nov 2016 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r242030

8 years agoasan_test.C: Remove -Wno-format, add -Wno-c++1z-compat.
Jakub Jelinek [Wed, 9 Nov 2016 23:00:26 +0000 (00:00 +0100)]
asan_test.C: Remove -Wno-format, add -Wno-c++1z-compat.

* g++.dg/asan/asan_test.C: Remove -Wno-format, add
-Wno-c++1z-compat.
* g++.dg/asan/dejagnu-gtest.h (EXPECT_TRUE): Use "%s" format
string in case condition contains % characters.

From-SVN: r242027

8 years agore PR c++/78283 (-Wc++1z-compat warning is sticky)
Jakub Jelinek [Wed, 9 Nov 2016 22:56:35 +0000 (23:56 +0100)]
re PR c++/78283 (-Wc++1z-compat warning is sticky)

PR c++/78283
* mangle.c (start_mangling): Reset G.need_cxx1z_warning.

* g++.dg/cpp1z/noexcept-type13.C: New test.

From-SVN: r242026

8 years agoregex.h (regex_iterator::regex_iterator()): Define end() as _M_pregex == nullptr.
Tim Shen [Wed, 9 Nov 2016 22:11:32 +0000 (22:11 +0000)]
regex.h (regex_iterator::regex_iterator()): Define end() as _M_pregex == nullptr.

* libstdc++-v3/include/bits/regex.h (regex_iterator::regex_iterator()):
Define end() as _M_pregex == nullptr.
* libstdc++-v3/include/bits/regex.tcc (regex_iterator::operator==(),
regex_iterator::operator++()): Fix operator==() and operator++() to
look at null-ness of _M_pregex on both sides.
* testsuite/28_regex/regression.cc: New testcase.

From-SVN: r242025

8 years agocompiler: rework static initializer code
Ian Lance Taylor [Wed, 9 Nov 2016 21:41:58 +0000 (21:41 +0000)]
compiler: rework static initializer code

    Rename is_immutable to is_static_initializer to try to capture what it
    really means.  Be more precise about when an address expression, or a
    binary expression, can be a static initializer.  Don't check whether a
    type has pointers when deciding whether an initializer must be
    read-write, just check whether it is being used to initialize a global
    variable.  To make that work set the Translate_context function to NULL
    for a global variable with a static initializer.

    The effect of this is to let more global variables be initialized
    directly, rather than being initialized in the generated init function.

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

From-SVN: r242024

8 years agoprint-rtl-function.c: add (param) directive to dump
David Malcolm [Wed, 9 Nov 2016 20:55:03 +0000 (20:55 +0000)]
print-rtl-function.c: add (param) directive to dump

gcc/ChangeLog:
* print-rtl-function.c: Include varasm.h.
(print_any_param_name): New function.
(print_param): New function.
(print_rtx_function): Call print_param for each argument.
* print-rtl.c (rtx_writer::finish_directive): New function.
* print-rtl.h (rtx_writer::finish_directive): New decl.

From-SVN: r242023

8 years agomips.exp (mips-dg-options): Upgrade to MIPS IV if using (HAS_MOVN) with MIPS III.
Toma Tabacu [Wed, 9 Nov 2016 20:34:21 +0000 (20:34 +0000)]
mips.exp (mips-dg-options): Upgrade to MIPS IV if using (HAS_MOVN) with MIPS III.

2016-11-09  Toma Tabacu  <toma.tabacu@imgtec.com>

        * gcc.target/mips/mips.exp (mips-dg-options): Upgrade to MIPS IV if
        using (HAS_MOVN) with MIPS III.

From-SVN: r242021

8 years ago[multiple changes]
Janus Weil [Wed, 9 Nov 2016 20:33:24 +0000 (21:33 +0100)]
[multiple changes]

2016-11-09  Mikael Morin  <mikael@gcc.gnu.org>
    Janus Weil  <janus@gcc.gnu.org>

PR fortran/46459
* interface.c (compare_actual_formal): Add safety checks to avoid ICE.

2016-11-09  Janus Weil  <janus@gcc.gnu.org>

PR fortran/46459
* gfortran.dg/volatile14.f90: New test.

From-SVN: r242020

8 years agoFix C++17 template placeholder for template template parm.
Jason Merrill [Wed, 9 Nov 2016 20:02:56 +0000 (15:02 -0500)]
Fix C++17 template placeholder for template template parm.

* parser.c (cp_parser_simple_type_specifier): Allow placeholder
for template template parameter.
(cp_parser_type_id_1): Improve diagnostic.
* decl.c (grokdeclarator): Handle class deduction diagnostics here.
* pt.c (splice_late_return_type): Not here.
(tsubst) [TEMPLATE_TYPE_PARM]: Substitute into placeholder template.
(do_class_deduction): Handle non-class templates.

From-SVN: r242018

8 years agoImplement P0127R2, Declaring non-type parameters with auto.
Jason Merrill [Wed, 9 Nov 2016 20:02:50 +0000 (15:02 -0500)]
Implement P0127R2, Declaring non-type parameters with auto.

gcc/cp/
* cp-tree.h (enum auto_deduction_context): Add adc_unify.
* decl.c (grokdeclarator): Allow 'auto' in C++17 template non-type
parameter types.
* pt.c (do_auto_deduction): Add outer_targs parameter.
(convert_template_argument): Call do_auto_deduction.  If adc_unify,
don't give up on dependent init.
(unify): Likewise.  In C++17, walk into the type of a
TEMPLATE_PARM_INDEX.
(for_each_template_parm): Add any_fn parameter.
(struct pair_fn_data): Likewise.
(for_each_template_parm_r): Call it for any tree.  In C++17, walk
into the type of a TEMPLATE_PARM_INDEX.
(zero_r, array_deduction_r, try_array_deduction): New.
(type_unification_real): Call try_array_deduction.
(get_partial_spec_bindings): Likewise.
gcc/c-family/
* c-cppbuiltin.c (c_cpp_builtins): Define __cpp_template_auto.

From-SVN: r242017

8 years agore PR target/78262 (wrong code with -fschedule-insns)
Uros Bizjak [Wed, 9 Nov 2016 19:21:11 +0000 (20:21 +0100)]
re PR target/78262 (wrong code with -fschedule-insns)

PR target/78262
* config/i386/i386.md (*<shift_insn><mode>3_doubleword): Mark
operand 0 as earlyclobber.

testsuite/ChangeLog:

PR target/78262
* gcc.target/i386/pr78262.c: New test.

From-SVN: r242013

8 years ago* fold-const-call.c (fold_const_call): Fix up type of s0 and s1.
Martin Liska [Wed, 9 Nov 2016 17:55:12 +0000 (18:55 +0100)]
* fold-const-call.c (fold_const_call): Fix up type of s0 and s1.

From-SVN: r242011

8 years agoFix ICE in gfc_trans_subcomponent_assign due to NULL components.
Fritz O. Reese [Wed, 9 Nov 2016 17:31:27 +0000 (17:31 +0000)]
Fix ICE in gfc_trans_subcomponent_assign due to NULL components.

PR fortran/78259
* gcc/fortran/trans-expr.c (gfc_trans_subcomponent_assign): Guard
against NULL values.

PR fortran/78259
* gcc/testsuite/gfortran.dg/pr78259.f90: New test.

From-SVN: r242010

8 years ago[multiple changes]
Janus Weil [Wed, 9 Nov 2016 17:22:02 +0000 (18:22 +0100)]
[multiple changes]

2016-11-09  Steve Kargl <kargl@gcc.gnu.org>
    Janus Weil  <janus@gcc.gnu.org>

PR fortran/60777
* expr.c (external_spec_function): Allow recursive specification
functions in F03.

2016-11-09  Janus Weil  <janus@gcc.gnu.org>

PR fortran/60777
* gfortran.dg/spec_expr_7.f90: New test.

From-SVN: r242009

8 years agore PR middle-end/77718 (expand_builtin_memcmp swaps args)
Jakub Jelinek [Wed, 9 Nov 2016 16:21:45 +0000 (17:21 +0100)]
re PR middle-end/77718 (expand_builtin_memcmp swaps args)

PR target/77718
* builtins.c (expand_builtin_memcmp): Formatting fix.

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

From-SVN: r242007

8 years agoflag-types.h (enum sanitize_code): Add SANITIZE_SHIFT_BASE and SANITIZE_SHIFT_EXPONENT...
Jakub Jelinek [Wed, 9 Nov 2016 15:37:28 +0000 (16:37 +0100)]
flag-types.h (enum sanitize_code): Add SANITIZE_SHIFT_BASE and SANITIZE_SHIFT_EXPONENT...

* flag-types.h (enum sanitize_code): Add SANITIZE_SHIFT_BASE
and SANITIZE_SHIFT_EXPONENT, change SANITIZE_SHIFT to bitwise
or of them, renumber other enumerators.
* opts.c (sanitizer_opts): Add shift-base and shift-exponent.
* doc/invoke.texi: Document -fsanitize=shift-base and
-fsanitize-shift-exponent, document -fsanitize=shift as
having those 2 suboptions.
c-family/
* c-ubsan.c (ubsan_instrument_shift): Handle split
-fsanitize=shift-base and -fsanitize=shift-exponent.
testsuite/
* gcc.dg/ubsan/c99-shift-3.c: New test.
* gcc.dg/ubsan/c99-shift-4.c: New test.
* gcc.dg/ubsan/c99-shift-5.c: New test.
* gcc.dg/ubsan/c99-shift-6.c: New test.

From-SVN: r242005

8 years agofold-const.c (tree_swap_operands_p): Remove unused arg.
Richard Biener [Wed, 9 Nov 2016 15:15:28 +0000 (15:15 +0000)]
fold-const.c (tree_swap_operands_p): Remove unused arg.

2016-11-09  Richard Biener  <rguenther@suse.de>

* fold-const.c (tree_swap_operands_p): Remove unused arg.
* fold-const.c (tree_swap_operands_p): Likewise.
(fold_binary_loc): Adjust.
(fold_ternary_loc): Likewise.
* genmatch.c (dt_operand::gen_gimple_exp): Likewise.
* gimple-fold.c (fold_stmt_1): Likewise.
* gimple-match-head.c (gimple_resimplify2): Likewise.
(gimple_resimplify3): Likewise.
(gimple_simplify): Likewise.
* tree-ssa-dom.c (record_equality): Likewise.
* tree-ssa-reassoc.c (optimize_range_tests_var_bound): Likewise.
* tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
* tree-ssa-threadedge.c (simplify_control_stmt_condition_1): Likewise.

From-SVN: r242004

8 years agotree-ssa-dom.c (canonicalize_comparison): Remove.
Richard Biener [Wed, 9 Nov 2016 15:09:12 +0000 (15:09 +0000)]
tree-ssa-dom.c (canonicalize_comparison): Remove.

2016-11-09  Richard Biener  <rguenther@suse.de>

* tree-ssa-dom.c (canonicalize_comparison): Remove.
(optimize_stmt): Remove redundant pre-propagation canonicalization
of comparison operand order.

From-SVN: r242003

8 years agoFix folding of memcmp("a", "a", 2) (PR
Martin Liska [Wed, 9 Nov 2016 14:07:32 +0000 (15:07 +0100)]
Fix folding of memcmp("a", "a", 2) (PR

* fold-const-call.c (fold_const_call): Fix the folding.
* gcc.dg/tree-ssa/builtins-folding-generic.c (main): Add new
test-case for memcmp.
* gcc.dg/tree-ssa/builtins-folding-gimple.c: Likewise.

From-SVN: r242000

8 years agocommon.opt (flag_evaluation_order): Remove.
Richard Biener [Wed, 9 Nov 2016 12:37:10 +0000 (12:37 +0000)]
common.opt (flag_evaluation_order): Remove.

2016-11-09  Richard Biener  <rguenther@suse.de>

* common.opt (flag_evaluation_order): Remove.
* expr.c (expand_operands): Remove code guarded by
flag_evaluation_order.
* fold-const.c (reorder_operands_p): Remove, it always returns
true.
(negate_expr_p): Remove calls to reorder_operands_p.
(fold_negate_expr): Likewise.
(tree_swap_operands_p): Likewise.
(fold_binary_loc): Likewise.

From-SVN: r241998

8 years agore PR c++/78269 (FAIL: FAIL: g++.dg/cpp1z/noexcept-type11.C and FAIL: g++.dg/cpp1z...
Thomas Preud'homme [Wed, 9 Nov 2016 10:50:21 +0000 (10:50 +0000)]
re PR c++/78269 (FAIL: FAIL: g++.dg/cpp1z/noexcept-type11.C and FAIL: g++.dg/cpp1z/noexcept-type9.C)

2016-11-09  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/testsuite/
    PR testsuite/78269
    * g++.dg/cpp1z/noexcept-type9.C: Make it a compile test.

From-SVN: r241997

8 years agore PR target/78254 (FAIL: g++.dg/torture/pr77822.C -O3 -g (internal compiler error))
Andreas Schwab [Wed, 9 Nov 2016 10:40:00 +0000 (10:40 +0000)]
re PR target/78254 (FAIL: g++.dg/torture/pr77822.C   -O3 -g  (internal compiler error))

PR target/78254
* config/m68k/m68k.md: Reject out-of-range bit pos in bit-fields
insns operating on a register.

From-SVN: r241996

8 years agocheck.c (gfc_check_move_alloc): Prevent error that avoids aliasing between to and...
Paul Thomas [Wed, 9 Nov 2016 10:10:41 +0000 (10:10 +0000)]
check.c (gfc_check_move_alloc): Prevent error that avoids aliasing between to and from arguments from rejecting...

2016-11-09  Paul Thomas  <pault@gcc.gnu.org>

* check.c (gfc_check_move_alloc): Prevent error that avoids
aliasing between to and from arguments from rejecting valid
code.

2016-11-09  Paul Thomas  <pault@gcc.gnu.org>

* gfortran.dg/move_alloc_18.f90: New test.

From-SVN: r241995

8 years agore PR testsuite/78256 (test case gcc.dg/pr35691-1.c fails starting with its introduct...
Prathamesh Kulkarni [Wed, 9 Nov 2016 09:46:13 +0000 (09:46 +0000)]
re PR testsuite/78256 (test case gcc.dg/pr35691-1.c fails starting with its introduction in r241915)

2016-11-09  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

PR middle-end/78256
testsuite/
* gcc.dg/pr35691-1.c (foo): Use & instead of &&.
* gcc.dg/pr35691-2.c (foo): Use | instead of ||.

From-SVN: r241994

8 years agore PR fortran/71894 ([OOP] ICE in gfc_add_component_ref, at fortran/class.c:227)
Janus Weil [Wed, 9 Nov 2016 09:22:52 +0000 (10:22 +0100)]
re PR fortran/71894 ([OOP] ICE in gfc_add_component_ref, at fortran/class.c:227)

2016-11-09  Janus Weil  <janus@gcc.gnu.org>

PR fortran/71894
* class.c (gfc_add_component_ref): Add safety checks to avoid ICE.

2016-11-09  Janus Weil  <janus@gcc.gnu.org>

PR fortran/71894
* gfortran.dg/class_59.f90: New test.

From-SVN: r241993

8 years agore PR target/78007 (Important loop from 482.sphinx3 is not vectorized)
Richard Biener [Wed, 9 Nov 2016 08:19:05 +0000 (08:19 +0000)]
re PR target/78007 (Important loop from 482.sphinx3  is not vectorized)

2016-11-09  Richard Biener  <rguenther@suse.de>

PR tree-optimization/78007
* tree-vect-stmts.c (vectorizable_bswap): New function.
(vectorizable_call): Call vectorizable_bswap for
BUILT_IN_BSWAP{16,32,64} if arguments are not promoted.

* gcc.dg/vect/vect-bswap32.c: Adjust.
* gcc.dg/vect/vect-bswap64.c: Likewise.

From-SVN: r241992

8 years agotree-vect-data-refs.c (vect_compute_data_ref_alignment): Look at the DR_BASE_ADDRESS...
Richard Biener [Wed, 9 Nov 2016 08:08:58 +0000 (08:08 +0000)]
tree-vect-data-refs.c (vect_compute_data_ref_alignment): Look at the DR_BASE_ADDRESS object for forcing alignment.

2016-11-09  Richard Biener  <rguenther@suse.de>

* tree-vect-data-refs.c (vect_compute_data_ref_alignment):
Look at the DR_BASE_ADDRESS object for forcing alignment.

From-SVN: r241991

8 years agoHandle unary pass-through jump functions for ipa-vrp
Kugan Vivekanandarajah [Wed, 9 Nov 2016 01:44:04 +0000 (01:44 +0000)]
Handle unary pass-through jump functions for ipa-vrp

Handle unary pass-through jump functions for ipa-vrp
gcc/testsuite/ChangeLog:

2016-11-09  Kugan Vivekanandarajah  <kuganv@linaro.org>

* gcc.dg/ipa/vrp7.c: New test.

gcc/ChangeLog:

2016-11-09  Kugan Vivekanandarajah  <kuganv@linaro.org>

* ipa-cp.c (ipa_get_jf_pass_through_result): Handle unary expressions.
(propagate_vr_accross_jump_function): Likewise.
* ipa-prop.c (ipa_set_jf_unary_pass_through): New.
(load_from_param_1): New.
(load_from_unmodified_param): Factor common part into load_from_param_1.
(load_from_param): New.
(compute_complex_assign_jump_func): Handle unary expressions.
(ipa_write_jump_function): Likewise.
(ipa_read_jump_function): Likewise.

From-SVN: r241990

8 years agoFix ice in set_value_range
Kugan Vivekanandarajah [Wed, 9 Nov 2016 01:41:26 +0000 (01:41 +0000)]
Fix ice in set_value_range

Fix ice in set_value_range
gcc/ChangeLog:

2016-11-09  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR ipa/78121
* ipa-cp.c (propagate_vr_accross_jump_function): Pass param type.
Also fold constant passed as argument while computing value range.
(propagate_constants_accross_call): Pass param type.
* ipa-prop.c: export ipa_get_callee_param_type.
* ipa-prop.h: export ipa_get_callee_param_type.

gcc/testsuite/ChangeLog:

2016-11-09  Kugan Vivekanandarajah  <kuganv@linaro.org>

PR ipa/78121
* gcc.dg/ipa/pr78121.c: New test.

From-SVN: r241989