1. 15 Sep, 2017 30 commits
    • syscall: fixes for Solaris · d00f9deb
          
          Patch by Rainer Orth.
          
          Reviewed-on: https://go-review.googlesource.com/64170
      
      From-SVN: r252866
      Ian Lance Taylor committed
    • compiler: call error_statement for fallthrough in last case · 7fdaa1f0
          
          It is possible to do this check in backend, by walking the
          block and check whether the last statement is a goto. But it
          seems easier to do it in the frontend, where it can simply use
          is_fallthrough.
          
          Reviewed-on: https://go-review.googlesource.com/63690
      
      From-SVN: r252851
      Ian Lance Taylor committed
    • Add support for -std=c++2a. · 026a79f7
      	* c-common.h (cxx_dialect): Add cxx2a as a dialect.
      	* opt.c: Add options for -std=c++2a and -std=gnu++2a.
      	* c-opts.c (set_std_cxx2a): New.
      	(c_common_handle_option): Set options when -std=c++2a is enabled.
      	(c_common_post_options): Adjust comments.
      	(set_std_cxx14, set_std_cxx17): Likewise.
      
      	* doc/cpp.texi (__cplusplus): Document value for -std=c++2a
      	or -std=gnu+2a.
      	* doc/invoke.texi: Document -std=c++2a and -std=gnu++2a.
      
      	* lib/target-supports.exp (check_effective_target_c++17): Return
      	1 also if check_effective_target_c++2a.
      	(check_effective_target_c++17_down): New.
      	(check_effective_target_c++2a_only): New.
      	(check_effective_target_c++2a): New.
      	* g++.dg/cpp2a/cplusplus.C: New.
      
      	* include/cpplib.h (c_lang): Add CXX2A and GNUCXX2A.
      	* init.c (lang_defaults): Add rows for CXX2A and GNUCXX2A.
      	(cpp_init_builtins): Set __cplusplus to 201709L for C++2a.
      
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      
      From-SVN: r252850
      Andrew Sutton committed
    • compiler: check error expression in Array_type::get_backend_length · 41dfa93f
          
          Otherwise, a zero length is created in the backend and the
          backend doesn't know there is an error.
          
          Reviewed-on: https://go-review.googlesource.com/61610
      
      From-SVN: r252849
      Ian Lance Taylor committed
    • re PR target/82066 (#pragma GCC target documentation does not say it is implemented for aarch64) · efc79e1e
      2017-09-15  Steve Ellcey  <sellcey@cavium.com>
      
      	PR target/82066
      	* doc/extend.texi (Common Function Attributes): Add 
      	references to ARM, AArch64, and S/390 specific attributes.
      	(Function Specific Option Pragmas): Add AArch64 and S/390
              to list of back ends that support the target pragma.
      
      From-SVN: r252848
      Steve Ellcey committed
    • Implement C11 excess precision semantics for conversions (PR c/82071). · bb75facd
      C11 semantics for excess precision (from N1531) are that an implicit
      conversion (from the usual arithmetic conversions, not by assignment)
      from integer to floating point has a result in the corresponding
      evaluation format of that floating-point type, so possibly with excess
      precision (whereas a cast or conversion by assignment from integer to
      floating point must produce a value without excess range or precision,
      as always).  This patch makes GCC support those semantics if
      flag_isoc11 (which in turn means that conditional expressions need to
      support generating a result with excess precision even if neither
      operand had excess precision).
      
      C99 is less than entirely clear in this regard, but my reading as
      outlined at <https://gcc.gnu.org/ml/gcc-patches/2008-11/msg00105.html>
      is that the results of conversions from integer to floating-point
      types are always expected to be representable in the target type
      without excess precision, and this patch conservatively keeps these
      semantics for pre-C11 (i.e. if an older standard is explicitly
      selected).
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu.
      
      	PR c/82071
      
      gcc/c:
      	* c-typeck.c (ep_convert_and_check): Just call convert_and_check
      	for C11.
      	(build_conditional_expr): For C11, generate result with excess
      	precision when one argument is an integer and the other is of a
      	type using excess precision.
      
      gcc/testsuite:
      	* gcc.target/i386/excess-precision-8.c: New test.
      
      From-SVN: r252847
      Joseph Myers committed
    • re PR c++/64644 ("warning: anonymous union with no members" should be an error… · c01df3c8
      re PR c++/64644 ("warning: anonymous union with no members" should be an error with -pedantic-errors)
      
      /cp
      2017-09-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
      	    Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/64644
      	* decl2.c (finish_anon_union): Complain about "anonymous union with
      	no members" with a pedwarn.
      
      /testsuite
      2017-09-15  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>
      	    Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/64644
      	* g++.dg/other/anon-union4.C: New.
      	* g++.old-deja/g++.law/union4.C: Adjust.
      	* g++.old-deja/g++.other/anon1.C: Likewise.
      
      Co-Authored-By: Paolo Carlini <paolo.carlini@oracle.com>
      
      From-SVN: r252835
      Manuel López-Ibáñez committed
    • [C++ PATCH] Renames/adjustments of 1z to 17 · 39ebef2c
      https://gcc.gnu.org/ml/gcc-patches/2017-09/msg01051.html
      ReviewedBy: Sandra Loosemore <sandra@codesourcery.com>
      	* doc/standards.texi: Fix C++17 description.  Update URLs for
      	C++11 & 14.
      
      From-SVN: r252834
      Nathan Sidwell committed
    • * MAINTAINERS: Remove myself as a vxworks maintainer. · 500ac452
      From-SVN: r252833
      Nathan Sidwell committed
    • common.opt (Wcast-align=strict): New warning option. · 1d933576
      2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * common.opt (Wcast-align=strict): New warning option.
              * doc/invoke.texi: Document -Wcast-align=strict.
      
      c:
      2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c-typeck.c (build_c_cast): Implement -Wcast-align=strict.
      
      cp:
      2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * typeck.c (build_reinterpret_cast_1,
              build_const_cast_1): Implement -Wcast-align=strict.
      
      testsuite:
      2017-09-15  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
              * c-c++-common/Wcast-align.c: New test.
      
      From-SVN: r252832
      Bernd Edlinger committed
    • c-pragma.c (handle_pragma_scalar_storage_order): Expand on error message for… · 4a8ca690
      c-pragma.c (handle_pragma_scalar_storage_order): Expand on error message for non-uniform endianness and issue a warning in C++.
      
      	* c-pragma.c (handle_pragma_scalar_storage_order): Expand on error
      	message for non-uniform endianness and issue a warning in C++.
      
      From-SVN: r252831
      Eric Botcazou committed
    • re PR c++/78648 (ICE on invalid C++ code on x86_64-linux-gnu (Segmentation… · f5e37f2a
      re PR c++/78648 (ICE on invalid C++ code on x86_64-linux-gnu (Segmentation fault, contains_struct_check))
      
      2017-09-13  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/78648
      	* g++.dg/cpp0x/lambda/lambda-ice21.C: New.
      
      From-SVN: r252829
      Paolo Carlini committed
    • Add comments to struct cgraph_thunk_info · a3e61d61
      This commit adds comments to fields in the cgraph_thunk_info structure
      declaration from cgraph.h.  They will hopefully answer questions that
      people like myself can ask while discovering the thunk machinery.  I
      also made an assertion stricter in cgraph_node::create_thunk.
      
      Bootsrapped and regtested on x86_64-linux.
      
      gcc/
      
      	* cgraph.h (cgraph_thunk_info): Add comments.
      	* cgraph.c (cgraph_node::create_thunk): Adjust comment, make
      	assert for VIRTUAL_* arguments stricter.
      
      From-SVN: r252828
      Pierre-Marie de Rodat committed
    • re PR tree-optimization/71026 (Missing division optimizations) · ed17cb57
      2017-09-15  Jackson Woodruff  <jackson.woodruff@arm.com>
      
      	PR tree-optimization/71026
      	* match.pd: Move RDIV patterns from fold-const.c
      	* fold-const.c (distribute_real_division): Removed.
      	(fold_binary_loc): Remove calls to distribute_real_divison.
      
      	PR tree-optimization/71026
      	* gcc/testsuire/gcc.dg/fold-div-1.c: Use -O1.
      
      From-SVN: r252827
      Jackson Woodruff committed
    • invoke.texi: Document -std=c++17 and -std=gnu++17 and document c++1z and gnu++1z as deprecated. · 7b936140
      	* doc/invoke.texi: Document -std=c++17 and -std=gnu++17 and document
      	c++1z and gnu++1z as deprecated.  Change other references to
      	-std=c++1z to -std=c++17 and -std=gnu++1z to -std=gnu++17.
      	Change -Wc++1z-compat to -Wc++17-compat.
      	* doc/cpp.texi: Document -std=c++17 defines __cplusplus 201703L.
      	* dwarf2out.c (highest_c_language): Handle C++17.
      	(gen_compile_unit_die): Likewise.
      c-family/
      	* c.opt (Wc++1z-compat): Change from option to undocumented alias.
      	(Wc++17-compat): Change from undocumented alias to option.
      	(Wnoexcept-type): Enable by Wc++17-compat instead of Wc++1z-compat,
      	change C++1z to C++17 in description.
      	(std=c++1z, std=gnu++1z): Change from option to undocumented
      	deprecated alias.
      	(std=c++17, std=gnu++17): Change from undocumented alias to option.
      	Adjust description.
      	* c-common.h (enum cxx_dialect): Rename cxx1z to cxx17.
      	* c-opts.c (set_std_cxx1z): Rename to ...
      	(set_std_cxx17): ... this.
      	(c_common_handle_option): Rename OPT_std_c__1z to OPT_std_c__17
      	and OPT_std_gnu__1z to OPT_std_gnu__17.  Adjust set_std_cxx1z
      	caller.  
      	(c_common_post_options): Use cxx17 instead of cxx1z.  Adjust
      	comments.
      cp/
      	* decl.c (redeclaration_error_message): Use cxx17 instead of cxx1z,
      	adjust diagnostics refering to C++1z or -std=gnu++1z or -std=c++1z
      	to C++17 or -std=gnu++17 or -std=c++17.  Adjust comments.
      	(cxx_init_decl_processing, next_initializable_field,
      	is_direct_enum_init, check_initializer, cp_finish_decl,
      	mark_inline_variable, grokdeclarator, grokparms, xref_basetypes,
      	finish_function): Likewise.
      	* cp-tree.h (DECL_INLINE_VAR_P): Likewise.
      	* pt.c (mark_template_parm, convert_nontype_argument,
      	instantiate_class_template_1, type_unification_real, unify,
      	get_partial_spec_bindings, dependent_type_p_r): Likewise.
      	* typeck.c (cp_build_unary_op): Likewise.
      	* constexpr.c (var_in_maybe_constexpr_fn): Likewise.
      	* call.c (build_user_type_conversion_1, build_over_call,
      	build_special_member_call): Likewise.
      	* lambda.c (begin_lambda_type): Likewise.
      	* typeck2.c (process_init_constructor_record): Likewise.
      	* class.c (build_base_field, finalize_literal_type_property,
      	explain_non_literal_class): Likewise.
      	* parser.c (cp_parser_diagnose_invalid_type_name,
      	cp_parser_primary_expression, cp_parser_lambda_introducer,
      	cp_parser_lambda_declarator_opt, cp_parser_selection_statement,
      	cp_convert_range_for, cp_parser_perform_range_for_lookup,
      	cp_parser_decomposition_declaration, cp_parser_linkage_specification,
      	cp_parser_static_assert, cp_parser_simple_type_specifier,
      	cp_parser_namespace_definition, cp_parser_using_declaration,
      	cp_parser_init_declarator, cp_parser_type_parameter_key,
      	cp_parser_exception_specification_opt, cp_parser_std_attribute_spec,
      	cp_parser_constructor_declarator_p): Likewise.
      	* mangle.c (struct globals): Rename need_cxx1z_warning to
      	need_cxx17_warning.
      	(write_exception_spec, start_mangling, mangle_decl): Likewise.
      	* Make-lang.in (check-c++1z): Rename to check-c++17, depend on
      	it.
      	(check-c++17): New goal.  Use 17 instead of 1z.
      	(check-c++-all): Use 17 instead of 1z.
      testsuite/
      	* lib/g++-dg.exp (g++-dg-runtest): Use 17 instead of 1z.
      	* lib/target-supports.exp (check_effective_target_c++14): Use
      	check_effective_target_c++17 instead of check_effective_target_c++1z.
      	(check_effective_target_c++14_down): Likewise.
      	(check_effective_target_c++1z_only): Rename to ...
      	(check_effective_target_c++17_only): ... this.
      	(check_effective_target_c++1z): Rename to ...
      	(check_effective_target_c++17): ... this.
      	* g++.dg/debug/dwarf2/inline-var-1.C: Use -std=c++17 or -std=gnu++17
      	instead of -std=c++1z or -std=gnu++1z.  Use c++17 instead of c++1z
      	and c++17_only instead of c++1z_only.  Adjust expected diagnostics
      	and comments refering to 1z to 17.
      	* g++.dg/debug/dwarf2/inline-var-2.C: Likewise.
      	* g++.dg/template/partial5.C: Likewise.
      	* g++.dg/template/nontype8.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type5.C: Likewise.
      	* g++.dg/cpp1z/nontype3a.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda4.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type16.C: Likewise.
      	* g++.dg/cpp1z/class-deduction32.C: Likewise.
      	* g++.dg/cpp1z/pr78771.C: Likewise.
      	* g++.dg/cpp1z/elide1.C: Likewise.
      	* g++.dg/cpp1z/fold3.C: Likewise.
      	* g++.dg/cpp1z/class-deduction2.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type12.C: Likewise.
      	* g++.dg/cpp1z/inline-var2.C: Likewise.
      	* g++.dg/cpp1z/eval-order2.C: Likewise.
      	* g++.dg/cpp1z/decomp21.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda11.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda9.C: Likewise.
      	* g++.dg/cpp1z/utf8-neg.C: Likewise.
      	* g++.dg/cpp1z/class-deduction41.C: Likewise.
      	* g++.dg/cpp1z/class-deduction23.C: Likewise.
      	* g++.dg/cpp1z/nodiscard3.C: Likewise.
      	* g++.dg/cpp1z/static_assert-nomsg.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type9.C: Likewise.
      	* g++.dg/cpp1z/class-deduction21.C: Likewise.
      	* g++.dg/cpp1z/range-for1.C: Likewise.
      	* g++.dg/cpp1z/init-statement4.C: Likewise.
      	* g++.dg/cpp1z/udlit-utf8char.C: Likewise.
      	* g++.dg/cpp1z/decomp30.C: Likewise.
      	* g++.dg/cpp1z/class-deduction39.C: Likewise.
      	* g++.dg/cpp1z/register2.C: Likewise.
      	* g++.dg/cpp1z/decomp9.C: Likewise.
      	* g++.dg/cpp1z/regress1.C: Likewise.
      	* g++.dg/cpp1z/direct-enum-init1.C: Likewise.
      	* g++.dg/cpp1z/class-deduction30.C: Likewise.
      	* g++.dg/cpp1z/abbrev2.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto6.C: Likewise.
      	* g++.dg/cpp1z/regress2.C: Likewise.
      	* g++.dg/cpp1z/decomp16.C: Likewise.
      	* g++.dg/cpp1z/bool-increment1.C: Likewise.
      	* g++.dg/cpp1z/aligned-new1.C: Likewise.
      	* g++.dg/cpp1z/decomp3.C: Likewise.
      	* g++.dg/cpp1z/register1.C: Likewise.
      	* g++.dg/cpp1z/namespace-attribs.C: Likewise.
      	* g++.dg/cpp1z/class-deduction1.C: Likewise.
      	* g++.dg/cpp1z/decomp10.C: Likewise.
      	* g++.dg/cpp1z/constexpr-if11.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda10.C: Likewise.
      	* g++.dg/cpp1z/decomp27.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type2.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda6.C: Likewise.
      	* g++.dg/cpp1z/class-deduction9.C: Likewise.
      	* g++.dg/cpp1z/attributes-enum-1.C: Likewise.
      	* g++.dg/cpp1z/decomp11.C: Likewise.
      	* g++.dg/cpp1z/aligned-new3.C: Likewise.
      	* g++.dg/cpp1z/utf8-2.C: Likewise.
      	* g++.dg/cpp1z/lambda-this3.C: Likewise.
      	* g++.dg/cpp1z/decomp-constexpr1.C: Likewise.
      	* g++.dg/cpp1z/byte1.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto9.C: Likewise.
      	* g++.dg/cpp1z/aggr-base4.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda1.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto3.C: Likewise.
      	* g++.dg/cpp1z/utf8-2a.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda7.C: Likewise.
      	* g++.dg/cpp1z/aggr-base6.C: Likewise.
      	* g++.dg/cpp1z/cplusplus.C: Likewise.
      	* g++.dg/cpp1z/class-deduction20.C: Likewise.
      	* g++.dg/cpp1z/aggr-base2.C: Likewise.
      	* g++.dg/cpp1z/class-deduction6.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type3.C: Likewise.
      	* g++.dg/cpp1z/class-deduction31.C: Likewise.
      	* g++.dg/cpp1z/class-deduction25.C: Likewise.
      	* g++.dg/cpp1z/class-deduction18.C: Likewise.
      	* g++.dg/cpp1z/fold9.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type8.C: Likewise.
      	* g++.dg/cpp1z/abbrev1.C: Likewise.
      	* g++.dg/cpp1z/constexpr-if10.C: Likewise.
      	* g++.dg/cpp1z/utf8.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type7.C: Likewise.
      	* g++.dg/cpp1z/aggr-base3.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda8.C: Likewise.
      	* g++.dg/cpp1z/init-statement2.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto4.C: Likewise.
      	* g++.dg/cpp1z/constexpr-if12.C: Likewise.
      	* g++.dg/cpp1z/class-deduction40.C: Likewise.
      	* g++.dg/cpp1z/nontype3.C: Likewise.
      	* g++.dg/cpp1z/class-deduction14.C: Likewise.
      	* g++.dg/cpp1z/fold7.C: Likewise.
      	* g++.dg/cpp1z/nontype2.C: Likewise.
      	* g++.dg/cpp1z/class-deduction15.C: Likewise.
      	* g++.dg/cpp1z/nested-namespace-def1.C: Likewise.
      	* g++.dg/cpp1z/class-deduction13.C: Likewise.
      	* g++.dg/cpp1z/aligned-new7.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type1.C: Likewise.
      	* g++.dg/cpp1z/nontype1.C: Likewise.
      	* g++.dg/cpp1z/init-statement5.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto2.C: Likewise.
      	* g++.dg/cpp1z/decomp17.C: Likewise.
      	* g++.dg/cpp1z/fold4.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda2.C: Likewise.
      	* g++.dg/cpp1z/fold7a.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto5.C: Likewise.
      	* g++.dg/cpp1z/init-statement7.C: Likewise.
      	* g++.dg/cpp1z/aggr-base5.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda5.C: Likewise.
      	* g++.dg/cpp1z/pr79143.C: Likewise.
      	* g++.dg/cpp1z/class-deduction38.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto8.C: Likewise.
      	* g++.dg/cpp1z/class-deduction12.C: Likewise.
      	* g++.dg/cpp1z/decomp20.C: Likewise.
      	* g++.dg/cpp1z/class-deduction22.C: Likewise.
      	* g++.dg/cpp1z/class-deduction29.C: Likewise.
      	* g++.dg/cpp1z/class-deduction8.C: Likewise.
      	* g++.dg/cpp1z/class-deduction43.C: Likewise.
      	* g++.dg/cpp1z/feat-cxx1z.C: Likewise.
      	* g++.dg/cpp1z/fold8.C: Likewise.
      	* g++.dg/cpp1z/init-statement3.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto10.C: Likewise.
      	* g++.dg/cpp1z/class-deduction36.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type17.C: Likewise.
      	* g++.dg/cpp1z/fallthrough1.C: Likewise.
      	* g++.dg/cpp1z/fold1.C: Likewise.
      	* g++.dg/cpp1z/class-deduction26.C: Likewise.
      	* g++.dg/cpp1z/fold-ice1.C: Likewise.
      	* g++.dg/cpp1z/fold5.C: Likewise.
      	* g++.dg/cpp1z/class-deduction34.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type6.C: Likewise.
      	* g++.dg/cpp1z/class-deduction7.C: Likewise.
      	* g++.dg/cpp1z/class-deduction16.C: Likewise.
      	* g++.dg/cpp1z/class-deduction10.C: Likewise.
      	* g++.dg/cpp1z/eval-order3.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda13.C: Likewise.
      	* g++.dg/cpp1z/aggr-base2a.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto1.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda3.C: Likewise.
      	* g++.dg/cpp1z/nontype-auto7.C: Likewise.
      	* g++.dg/cpp1z/decomp15.C: Likewise.
      	* g++.dg/cpp1z/noexcept-type4.C: Likewise.
      	* g++.dg/cpp1z/fold-mangle.C: Likewise.
      	* g++.dg/cpp1z/class-deduction35.C: Likewise.
      	* g++.dg/cpp1z/decomp4.C: Likewise.
      	* g++.dg/cpp1z/class-deduction42.C: Likewise.
      	* g++.dg/cpp1z/init-statement8.C: Likewise.
      	* g++.dg/cpp1z/inline-var1a.C: Likewise.
      	* g++.dg/cpp1z/init-statement6.C: Likewise.
      	* g++.dg/cpp1z/class-deduction17.C: Likewise.
      	* g++.dg/cpp1z/class-deduction28.C: Likewise.
      	* g++.dg/cpp1z/class-deduction27.C: Likewise.
      	* g++.dg/cpp1z/decomp-bitfield1.C: Likewise.
      	* g++.dg/cpp1z/attributes-enum-1a.C: Likewise.
      	* g++.dg/cpp1z/class-deduction11.C: Likewise.
      	* g++.dg/cpp1z/constexpr-lambda12.C: Likewise.
      	* g++.dg/cpp1z/init-statement9.C: Likewise.
      	* g++.dg/cpp1z/class-deduction19.C: Likewise.
      	* g++.dg/cpp1z/class-deduction5.C: Likewise.
      	* g++.dg/cpp1z/fold2.C: Likewise.
      	* g++.dg/cpp1z/class-deduction33.C: Likewise.
      	* g++.dg/cpp1z/class-deduction24.C: Likewise.
      	* g++.dg/cpp1z/aggr-base1.C: Likewise.
      	* g++.dg/cpp1z/fold6.C: Likewise.
      	* g++.dg/cpp1z/decomp12.C: Likewise.
      	* g++.dg/cpp1z/class-deduction4.C: Likewise.
      	* g++.dg/cpp1z/inline-var1.C: Likewise.
      	* g++.dg/cpp1z/aligned-new2.C: Likewise.
      	* g++.dg/cpp1z/class-deduction3.C: Likewise.
      	* g++.dg/other/error3.C: Likewise.
      	* g++.dg/init/new25.C: Likewise.
      	* g++.dg/init/new13.C: Likewise.
      	* g++.dg/tls/diag-2.C: Likewise.
      	* g++.dg/tls/diag-4.C: Likewise.
      	* g++.dg/opt/noreturn-1.C: Likewise.
      	* g++.dg/eh/async-unwind2.C: Likewise.
      	* g++.dg/eh/spec9.C: Likewise.
      	* g++.dg/eh/spec7.C: Likewise.
      	* g++.dg/eh/template1.C: Likewise.
      	* g++.dg/eh/cond4.C: Likewise.
      	* g++.dg/eh/pr41819.C: Likewise.
      	* g++.dg/eh/delete1.C: Likewise.
      	* g++.dg/eh/spec3.C: Likewise.
      	* g++.dg/eh/forced4.C: Likewise.
      	* g++.dg/eh/spec2.C: Likewise.
      	* g++.dg/eh/shadow1.C: Likewise.
      	* g++.dg/eh/pr38662.C: Likewise.
      	* g++.dg/eh/ehopt1.C: Likewise.
      	* g++.dg/eh/spec8.C: Likewise.
      	* g++.dg/eh/init-temp2.C: Likewise.
      	* g++.dg/rtti/crash3.C: Likewise.
      	* g++.dg/warn/Wreturn-type-3.C: Likewise.
      	* g++.dg/warn/register-parm-1.C: Likewise.
      	* g++.dg/warn/register-var-2.C: Likewise.
      	* g++.dg/gcov/gcov-7.C: Likewise.
      	* g++.dg/tree-ssa/pr45605.C: Likewise.
      	* g++.dg/cpp/pr23827_cxx98_neg.C: Likewise.
      	* g++.dg/lookup/exception1.C: Likewise.
      	* g++.dg/ubsan/pr79589.C: Likewise.
      	* g++.dg/tm/pr47340.C: Likewise.
      	* g++.dg/tm/pr46567.C: Likewise.
      	* g++.dg/expr/bitfield5.C: Likewise.
      	* g++.dg/expr/bool1.C: Likewise.
      	* g++.dg/expr/lval3.C: Likewise.
      	* g++.dg/expr/lval4.C: Likewise.
      	* g++.dg/expr/bitfield4.C: Likewise.
      	* g++.dg/expr/bitfield6.C: Likewise.
      	* g++.dg/expr/bool3.C: Likewise.
      	* g++.dg/ext/has_nothrow_constructor.C: Likewise.
      	* g++.dg/ext/has_nothrow_copy-7.C: Likewise.
      	* g++.dg/ext/has_nothrow_copy-1.C: Likewise.
      	* g++.dg/ext/has_nothrow_copy-2.C: Likewise.
      	* g++.dg/ext/has_nothrow_copy-4.C: Likewise.
      	* g++.dg/ext/has_nothrow_copy-5.C: Likewise.
      	* g++.dg/ext/has_nothrow_copy-6.C: Likewise.
      	* g++.dg/ext/has_nothrow_assign.C: Likewise.
      	* g++.dg/parse/register1.C: Likewise.
      	* g++.dg/parse/error15.C: Likewise.
      	* g++.dg/parse/linkage2.C: Likewise.
      	* g++.dg/concepts/intro2.C: Likewise.
      	* g++.dg/concepts/class.C: Likewise.
      	* g++.dg/concepts/traits1.C: Likewise.
      	* g++.dg/concepts/req5.C: Likewise.
      	* g++.dg/concepts/var-concept5.C: Likewise.
      	* g++.dg/concepts/fn-concept2.C: Likewise.
      	* g++.dg/concepts/traits2.C: Likewise.
      	* g++.dg/concepts/placeholder2.C: Likewise.
      	* g++.dg/concepts/class6.C: Likewise.
      	* g++.dg/concepts/memtmpl1.C: Likewise.
      	* g++.dg/concepts/friend2.C: Likewise.
      	* g++.dg/concepts/template-parm3.C: Likewise.
      	* g++.dg/concepts/template-parm10.C: Likewise.
      	* g++.dg/concepts/explicit-spec1.C: Likewise.
      	* g++.dg/concepts/explicit-spec3.C: Likewise.
      	* g++.dg/concepts/var-templ2.C: Likewise.
      	* g++.dg/concepts/intro5.C: Likewise.
      	* g++.dg/concepts/deduction-constraint1.C: Likewise.
      	* g++.dg/concepts/iconv1.C: Likewise.
      	* g++.dg/concepts/constrained-parm.C: Likewise.
      	* g++.dg/concepts/template-template-parm1.C: Likewise.
      	* g++.dg/concepts/var-concept3.C: Likewise.
      	* g++.dg/concepts/class3.C: Likewise.
      	* g++.dg/concepts/memfun2.C: Likewise.
      	* g++.dg/concepts/req1.C: Likewise.
      	* g++.dg/concepts/disjunction1.C: Likewise.
      	* g++.dg/concepts/req17.C: Likewise.
      	* g++.dg/concepts/pr65848.C: Likewise.
      	* g++.dg/concepts/placeholder4.C: Likewise.
      	* g++.dg/concepts/decl-diagnose.C: Likewise.
      	* g++.dg/concepts/intro7.C: Likewise.
      	* g++.dg/concepts/pr68683.C: Likewise.
      	* g++.dg/concepts/partial-spec4.C: Likewise.
      	* g++.dg/concepts/template-parm5.C: Likewise.
      	* g++.dg/concepts/explicit-inst1.C: Likewise.
      	* g++.dg/concepts/class-deduction1.C: Likewise.
      	* g++.dg/concepts/class1.C: Likewise.
      	* g++.dg/concepts/req15.C: Likewise.
      	* g++.dg/concepts/memfun.C: Likewise.
      	* g++.dg/concepts/pr68434.C: Likewise.
      	* g++.dg/concepts/inherit-ctor4.C: Likewise.
      	* g++.dg/concepts/partial-spec6.C: Likewise.
      	* g++.dg/concepts/var-templ1.C: Likewise.
      	* g++.dg/concepts/template-parm8.C: Likewise.
      	* g++.dg/concepts/explicit-inst3.C: Likewise.
      	* g++.dg/concepts/class4.C: Likewise.
      	* g++.dg/concepts/req6.C: Likewise.
      	* g++.dg/concepts/fn8.C: Likewise.
      	* g++.dg/concepts/class5.C: Likewise.
      	* g++.dg/concepts/placeholder5.C: Likewise.
      	* g++.dg/concepts/req16.C: Likewise.
      	* g++.dg/concepts/req10.C: Likewise.
      	* g++.dg/concepts/var-concept2.C: Likewise.
      	* g++.dg/concepts/auto3.C: Likewise.
      	* g++.dg/concepts/generic-fn-err.C: Likewise.
      	* g++.dg/concepts/pr65552.C: Likewise.
      	* g++.dg/concepts/partial-concept-id2.C: Likewise.
      	* g++.dg/concepts/fn1.C: Likewise.
      	* g++.dg/concepts/partial-spec.C: Likewise.
      	* g++.dg/concepts/template-parm12.C: Likewise.
      	* g++.dg/concepts/diagnostic1.C: Likewise.
      	* g++.dg/concepts/intro1.C: Likewise.
      	* g++.dg/concepts/explicit-inst4.C: Likewise.
      	* g++.dg/concepts/req18.C: Likewise.
      	* g++.dg/concepts/explicit-spec5.C: Likewise.
      	* g++.dg/concepts/var-concept6.C: Likewise.
      	* g++.dg/concepts/fn9.C: Likewise.
      	* g++.dg/concepts/req2.C: Likewise.
      	* g++.dg/concepts/template-parm7.C: Likewise.
      	* g++.dg/concepts/req14.C: Likewise.
      	* g++.dg/concepts/template-parm6.C: Likewise.
      	* g++.dg/concepts/variadic4.C: Likewise.
      	* g++.dg/concepts/fn6.C: Likewise.
      	* g++.dg/concepts/req-neg1.C: Likewise.
      	* g++.dg/concepts/alias3.C: Likewise.
      	* g++.dg/concepts/expression2.C: Likewise.
      	* g++.dg/concepts/partial-spec3.C: Likewise.
      	* g++.dg/concepts/expression3.C: Likewise.
      	* g++.dg/concepts/memfun-err.C: Likewise.
      	* g++.dg/concepts/pr66091.C: Likewise.
      	* g++.dg/concepts/explicit-spec2.C: Likewise.
      	* g++.dg/concepts/equiv.C: Likewise.
      	* g++.dg/concepts/friend1.C: Likewise.
      	* g++.dg/concepts/fn4.C: Likewise.
      	* g++.dg/concepts/var-templ3.C: Likewise.
      	* g++.dg/concepts/explicit-inst2.C: Likewise.
      	* g++.dg/concepts/alias2.C: Likewise.
      	* g++.dg/concepts/regress/alias-decl-42.C: Likewise.
      	* g++.dg/concepts/placeholder6.C: Likewise.
      	* g++.dg/concepts/fn10.C: Likewise.
      	* g++.dg/concepts/req3.C: Likewise.
      	* g++.dg/concepts/variadic2.C: Likewise.
      	* g++.dg/concepts/pr65636.C: Likewise.
      	* g++.dg/concepts/intro6.C: Likewise.
      	* g++.dg/concepts/class2.C: Likewise.
      	* g++.dg/concepts/fn2.C: Likewise.
      	* g++.dg/concepts/req20.C: Likewise.
      	* g++.dg/concepts/req8.C: Likewise.
      	* g++.dg/concepts/placeholder1.C: Likewise.
      	* g++.dg/concepts/pr65854.C: Likewise.
      	* g++.dg/concepts/member-concept.C: Likewise.
      	* g++.dg/concepts/template-parm2.C: Likewise.
      	* g++.dg/concepts/variadic1.C: Likewise.
      	* g++.dg/concepts/fn7.C: Likewise.
      	* g++.dg/concepts/intro4.C: Likewise.
      	* g++.dg/concepts/req13.C: Likewise.
      	* g++.dg/concepts/inherit-ctor3.C: Likewise.
      	* g++.dg/concepts/explicit-spec6.C: Likewise.
      	* g++.dg/concepts/auto1.C: Likewise.
      	* g++.dg/concepts/alias1.C: Likewise.
      	* g++.dg/concepts/fn-concept1.C: Likewise.
      	* g++.dg/concepts/template-parm11.C: Likewise.
      	* g++.dg/concepts/explicit-spec4.C: Likewise.
      	* g++.dg/concepts/partial-concept-id1.C: Likewise.
      	* g++.dg/concepts/req9.C: Likewise.
      	* g++.dg/concepts/req4.C: Likewise.
      	* g++.dg/concepts/pr65681.C: Likewise.
      	* g++.dg/concepts/req7.C: Likewise.
      	* g++.dg/concepts/req12.C: Likewise.
      	* g++.dg/concepts/fn5.C: Likewise.
      	* g++.dg/concepts/alias4.C: Likewise.
      	* g++.dg/concepts/generic-fn.C: Likewise.
      	* g++.dg/concepts/feature-macro.C: Likewise.
      	* g++.dg/concepts/req19.C: Likewise.
      	* g++.dg/concepts/placeholder3.C: Likewise.
      	* g++.dg/concepts/intro3.C: Likewise.
      	* g++.dg/concepts/partial-spec5.C: Likewise.
      	* g++.dg/concepts/template-parm4.C: Likewise.
      	* g++.dg/concepts/dr1430.C: Likewise.
      	* g++.dg/concepts/pr65634.C: Likewise.
      	* g++.dg/concepts/var-concept4.C: Likewise.
      	* g++.dg/concepts/pr67249.C: Likewise.
      	* g++.dg/concepts/expression.C: Likewise.
      	* g++.dg/concepts/pr65575.C: Likewise.
      	* g++.dg/concepts/partial-spec2.C: Likewise.
      	* g++.dg/concepts/template-parm9.C: Likewise.
      	* g++.dg/concepts/inherit-ctor1.C: Likewise.
      	* g++.dg/concepts/equiv2.C: Likewise.
      	* g++.dg/concepts/req11.C: Likewise.
      	* g++.dg/concepts/template-parm1.C: Likewise.
      	* g++.dg/concepts/inherit-ctor2.C: Likewise.
      	* g++.dg/concepts/var-concept1.C: Likewise.
      	* g++.dg/concepts/fn3.C: Likewise.
      	* g++.dg/torture/pr46364.C: Likewise.
      	* g++.dg/torture/stackalign/eh-alloca-1.C: Likewise.
      	* g++.dg/torture/stackalign/eh-fastcall-1.C: Likewise.
      	* g++.dg/torture/stackalign/eh-vararg-1.C: Likewise.
      	* g++.dg/torture/stackalign/eh-vararg-2.C: Likewise.
      	* g++.dg/torture/stackalign/eh-global-1.C: Likewise.
      	* g++.dg/torture/stackalign/eh-thiscall-1.C: Likewise.
      	* g++.dg/torture/stackalign/eh-inline-2.C: Likewise.
      	* g++.dg/torture/stackalign/eh-inline-1.C: Likewise.
      	* g++.dg/torture/pr52918-1.C: Likewise.
      	* g++.dg/torture/pr49394.C: Likewise.
      	* g++.dg/torture/pr57190.C: Likewise.
      	* g++.dg/cpp0x/static_assert8.C: Likewise.
      	* g++.dg/cpp0x/noexcept19.C: Likewise.
      	* g++.dg/cpp0x/variadic-throw.C: Likewise.
      	* g++.dg/cpp0x/variadic73.C: Likewise.
      	* g++.dg/cpp0x/noexcept02.C: Likewise.
      	* g++.dg/cpp0x/defaulted23.C: Likewise.
      	* g++.dg/cpp0x/noexcept08.C: Likewise.
      	* g++.dg/cpp0x/auto9.C: Likewise.
      	* g++.dg/cpp0x/lambda/lambda-eh2.C: Likewise.
      	* g++.dg/cpp0x/error5.C: Likewise.
      	* c-c++-common/gomp/atomic-12.c: Likewise.
      	* c-c++-common/gomp/atomic-13.c: Likewise.
      	* c-c++-common/gomp/atomic-14.c: Likewise.
      	* c-c++-common/Wvarargs-2.c: Likewise.
      	* c-c++-common/Wvarargs.c: Likewise.
      	* c-c++-common/vector-subscript-2.c: Likewise.
      	* g++.old-deja/g++.robertl/eb123.C: Likewise.
      	* g++.old-deja/g++.eh/tmpl3.C: Likewise.
      	* g++.old-deja/g++.eh/cleanup2.C: Likewise.
      	* g++.old-deja/g++.eh/badalloc1.C: Likewise.
      	* g++.old-deja/g++.eh/throw2.C: Likewise.
      	* g++.old-deja/g++.eh/throw1.C: Likewise.
      	* g++.old-deja/g++.eh/tmpl1.C: Likewise.
      	* g++.old-deja/g++.other/new7.C: Likewise.
      	* g++.old-deja/g++.other/crash30.C: Likewise.
      	* g++.old-deja/g++.other/regstack.C: Likewise.
      	* g++.old-deja/g++.other/crash28.C: Likewise.
      	* g++.old-deja/g++.jason/bool5.C: Likewise.
      	* g++.old-deja/g++.mike/p10416.C: Likewise.
      	* g++.old-deja/g++.mike/eh25.C: Likewise.
      	* g++.old-deja/g++.mike/eh55.C: Likewise.
      libcpp/
      	* include/cpplib.h (enum c_lang): Rename CLK_GNUCXX1Z
      	to CLK_GNUCXX17 and CLK_CXX1Z to CLK_CXX17.
      	* init.c (lang_defaults, cpp_init_builtins): Likewise.
      	* expr.c (cpp_classify_number): Use C++17 instead of C++1z
      	in diagnostics.
      libstdc++-v3/
      	* testsuite/libstdc++-prettyprinters/cxx17.cc: Use -std=c++17 or
      	-std=gnu++17 instead of -std=c++1z or -std=gnu++1z.  Use c++17 instead
      	of c++1z and c++17_only instead of c++1z_only.  Adjust expected
      	diagnostics and comments refering to 1z to 17.
      	* testsuite/30_threads/lock_guard/cons/deduction.cc: Likewise.
      	* testsuite/30_threads/scoped_lock/cons/deduction.cc: Likewise.
      	* testsuite/30_threads/scoped_lock/cons/1.cc: Likewise.
      	* testsuite/30_threads/scoped_lock/requirements/typedefs.cc: Likewise.
      	* testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc:
      	Likewise.
      	* testsuite/30_threads/unique_lock/cons/deduction.cc: Likewise.
      	* testsuite/18_support/launder/1.cc (test02): Likewise.
      	* testsuite/18_support/launder/requirements_neg.cc: Likewise.
      	* testsuite/18_support/launder/requirements.cc: Likewise.
      	* testsuite/18_support/byte/requirements.cc: Likewise.
      	* testsuite/18_support/byte/ops.cc: Likewise.
      	* testsuite/18_support/byte/global_neg.cc: Likewise.
      	* testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc:
      	Likewise.
      	* testsuite/27_io/types/4.cc: Likewise.
      	* testsuite/25_algorithms/sample/81221.cc: Likewise.
      	* testsuite/25_algorithms/sample/1.cc: Likewise.
      	* testsuite/25_algorithms/sample/2.cc: Likewise.
      	* testsuite/25_algorithms/search/searcher.cc: Likewise.
      	* testsuite/28_regex/basic_regex/ctors/deduction.cc: Likewise.
      	* testsuite/experimental/filesystem/path/construct/string_view.cc:
      	Likewise.
      	* testsuite/24_iterators/range_access_cpp17.cc: Likewise.
      	* testsuite/24_iterators/container_access.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/hash_map_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/trie_set_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/hash_set_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/list_update_set_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/list_update_map_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/priority_queue_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/tree_set_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/tree_map_rand.cc: Likewise.
      	* testsuite/ext/pb_ds/regression/trie_map_rand.cc: Likewise.
      	* testsuite/20_util/shared_ptr/casts/reinterpret.cc: Likewise.
      	* testsuite/20_util/shared_ptr/cons/deduction.cc: Likewise.
      	* testsuite/20_util/shared_ptr/cons/array.cc: Likewise.
      	* testsuite/20_util/shared_ptr/observers/array.cc (struct A): Likewise.
      	* testsuite/20_util/pair/cons/deduction.cc: Likewise.
      	* testsuite/20_util/variant/deduction.cc: Likewise.
      	* testsuite/20_util/tuple/78939.cc: Likewise.
      	* testsuite/20_util/tuple/cons/deduction.cc: Likewise.
      	* testsuite/20_util/void_t/1.cc: Likewise.
      	* testsuite/20_util/duration/arithmetic/constexpr_c++17.cc: Likewise.
      	* testsuite/20_util/unique_ptr/cons/deduction_neg.cc: Likewise.
      	* testsuite/20_util/addressof/requirements/constexpr.cc: Likewise.
      	* testsuite/20_util/weak_ptr/cons/deduction.cc: Likewise.
      	* testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc:
      	Likewise.
      	* testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc:
      	Likewise.
      	* testsuite/20_util/has_unique_object_representations/value.cc:
      	Likewise.
      	* testsuite/20_util/time_point/arithmetic/constexpr.cc: Likewise.
      	* testsuite/20_util/function_objects/invoke/59768.cc: Likewise.
      	* testsuite/20_util/function_objects/mem_fn/80478.cc: Likewise.
      	* testsuite/20_util/function/cons/deduction.cc: Likewise.
      	* testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc:
      	Likewise.
      	* testsuite/20_util/is_aggregate/requirements/typedefs.cc: Likewise.
      	* testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc:
      	Likewise.
      	* testsuite/20_util/is_aggregate/value.cc: Likewise.
      	* testsuite/26_numerics/lcm/1.cc: Likewise.
      	* testsuite/26_numerics/lcm/lcm_neg.cc: Likewise.
      	* testsuite/26_numerics/gcd/1.cc: Likewise.
      	* testsuite/26_numerics/gcd/gcd_neg.cc: Likewise.
      	* testsuite/26_numerics/valarray/deduction.cc: Likewise.
      	* testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc: Likewise.
      	* testsuite/26_numerics/headers/cmath/hypot.cc: Likewise.
      	* testsuite/23_containers/queue/members/emplace_cxx17_return.cc:
      	Likewise.
      	* testsuite/23_containers/array/cons/deduction.cc: Likewise.
      	* testsuite/23_containers/array/cons/deduction_neg.cc: Likewise.
      	* testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc:
      	Likewise.
      	* testsuite/23_containers/deque/cons/deduction.cc: Likewise.
      	* testsuite/23_containers/stack/members/emplace_cxx17_return.cc:
      	Likewise.
      	* testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc:
      	Likewise.
      	* testsuite/23_containers/list/cons/deduction.cc: Likewise.
      	* testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc:
      	Likewise.
      	* testsuite/23_containers/forward_list/cons/deduction.cc: Likewise.
      	* testsuite/23_containers/unordered_set/allocator/ext_ptr.cc: Likewise.
      	* testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc:
      	Likewise.
      	* testsuite/23_containers/vector/cons/deduction.cc: Likewise.
      	* testsuite/23_containers/vector/bool/emplace_cxx17_return.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string/cons/char/9.cc: Likewise.
      	* testsuite/21_strings/basic_string/cons/char/deduction.cc: Likewise.
      	* testsuite/21_strings/basic_string/cons/char/79162.cc: Likewise.
      	* testsuite/21_strings/basic_string/cons/wchar_t/9.cc: Likewise.
      	* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string/cons/wchar_t/79162.cc: Likewise.
      	* testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/operations/compare/char/2.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc:
      	Likewise.
      	* testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc:
      	Likewise.
      	* testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc:
      	Likewise.
      
      From-SVN: r252826
      Jakub Jelinek committed
    • re PR rtl-optimization/82192 (gcc produces incorrect code with -O2 and bit-field) · a1189286
      	PR rtl-optimization/82192
      	* combine.c (make_extraction): Don't look through non-paradoxical
      	SUBREGs or TRUNCATE if pos + len is or might be bigger than
      	inner's mode.
      
      	* gcc.c-torture/execute/pr82192.c: New test.
      
      From-SVN: r252824
      Jakub Jelinek committed
    • [include] Add macro DISABLE_COPY_AND_ASSIGN · 681f5b7c
      We have many classes that copy cotr and assignment operator are deleted
      in different projects, gcc, gdb and gold.  So this patch adds a macro
      to do this, and replace these existing mechanical code with macro
      DISABLE_COPY_AND_ASSIGN.
      
      The patch was posted in gdb-patches,
      https://sourceware.org/ml/gdb-patches/2017-07/msg00254.html but we
      think it is better to put this macro in include/ansidecl.h so that
      other projects can use it too.
      
      include:
      
      2017-09-15  Yao Qi  <yao.qi@linaro.org>
      	    Pedro Alves  <palves@redhat.com>
      
      	* ansidecl.h (DISABLE_COPY_AND_ASSIGN): New macro.
      
      Co-Authored-By: Pedro Alves <palves@redhat.com>
      
      From-SVN: r252823
      Yao Qi committed
    • Fix compile time error when using ansidecl.h with an old version of GCC. · efae2b2f
      include/
      2017-07-31  Nick Clifton  <nickc@redhat.com>
      
      	Binutils PR 21850
      	* ansidecl.h (OVERRIDE): Protect check of __cplusplus value with
      	#idef __cplusplus.
      
      From-SVN: r252822
      Nick Clifton committed
    • Turn FUNCTION_ARG_OFFSET into a hook · 870118b7
      2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* target.def (function_arg_offset): New hook.
      	* targhooks.h (default_function_arg_offset): Declare.
      	* targhooks.c (default_function_arg_offset): New function.
      	* function.c (locate_and_pad_parm): Use
      	targetm.calls.function_arg_offset instead of FUNCTION_ARG_OFFSET.
      	* doc/tm.texi.in (FUNCTION_ARG_OFFSET): Replace with...
      	(TARGET_FUNCTION_ARG_OFFSET): ...this.
      	* doc/tm.texi: Regenerate.
      	* config/spu/spu.h (FUNCTION_ARG_OFFSET): Delete.
      	* config/spu/spu.c (spu_function_arg_offset): New function.
      	(TARGET_FUNCTION_ARG_OFFSET): Redefine.
      	* system.h (FUNCTION_ARG_OFFSET): Poison.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252821
      Richard Sandiford committed
    • Turn TRULY_NOOP_TRUNCATION into a hook · bb149ca2
      I'm not sure the documentation is correct that outprec is always less
      than inprec, and each non-default implementation tested for the case
      in which it wasn't, but the patch leaves it as-is.
      
      The SH port had a couple of TRULY_NOOP_TRUNCATION tests that were left
      over from the old shmedia port.
      
      2017-09-13  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayard  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* target.def (truly_noop_truncation): New hook.
      	(mode_rep_extended): Refer to TARGET_TRULY_NOOP_TRUNCATION rather
      	than TRULY_NOOP_TRUNCATION.
      	* hooks.h (hook_bool_uint_uint_true): Declare.
      	* hooks.c (hook_bool_uint_uint_true): New function.
      	* doc/tm.texi.in (TRULY_NOOP_TRUNCATION): Replace with...
      	(TARGET_TRULY_NOOP_TRUNCATION): ...this.
      	* doc/tm.texi: Regenerate.
      	* combine.c (make_extraction): Refer to TARGET_TRULY_NOOP_TRUNCATION
      	rather than TRULY_NOOP_TRUNCATION in comments.
      	(simplify_comparison): Likewise.
      	(record_truncated_value): Likewise.
      	* expmed.c (extract_bit_field_1): Likewise.
      	(extract_split_bit_field): Likewise.
      	* convert.c (convert_to_integer_1): Use targetm.truly_noop_truncation
      	instead of TRULY_NOOP_TRUNCATION.
      	* function.c (assign_parm_setup_block): Likewise.
      	* machmode.h (TRULY_NOOP_TRUNCATION_MODES_P): Likewise.
      	* rtlhooks.c: Include target.h.
      	* config/aarch64/aarch64.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/alpha/alpha.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/arc/arc.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/arm/arm.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/avr/avr.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/bfin/bfin.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/c6x/c6x.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/cr16/cr16.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/cris/cris.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/epiphany/epiphany.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/fr30/fr30.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/frv/frv.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/ft32/ft32.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/h8300/h8300.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/i386/i386.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/ia64/ia64.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/iq2000/iq2000.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/lm32/lm32.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/m32c/m32c.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/m32r/m32r.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/m68k/m68k.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/mcore/mcore.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/microblaze/microblaze.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/mips/mips.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/mips/mips.c (mips_truly_noop_truncation): New function.
      	(TARGET_TRULY_NOOP_TRUNCATION): Redefine.
      	* config/mips/mips.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
      	rather than TRULY_NOOP_TRUNCATION in comments.
      	* config/mmix/mmix.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/mn10300/mn10300.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/moxie/moxie.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/msp430/msp430.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/nds32/nds32.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/nios2/nios2.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/nvptx/nvptx.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/pa/pa.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/pdp11/pdp11.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/powerpcspe/powerpcspe.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/riscv/riscv.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/riscv/riscv.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
      	rather than TRULY_NOOP_TRUNCATION in comments.
      	* config/rl78/rl78.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/rs6000/rs6000.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/rx/rx.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/s390/s390.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/sh/sh.h (MAYBE_BASE_REGISTER_RTX_P): Remove
      	TRULY_NOOP_TRUNCATION condition.
      	(MAYBE_INDEX_REGISTER_RTX_P): Likewise.
      	(TRULY_NOOP_TRUNCATION): Delete.
      	* config/sparc/sparc.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/spu/spu.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/spu/spu.c (spu_truly_noop_truncation): New function.
      	(TARGET_TRULY_NOOP_TRUNCATION): Redefine.
      	* config/stormy16/stormy16.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/tilegx/tilegx.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/tilegx/tilegx.c (tilegx_truly_noop_truncation): New fuction.
      	(TARGET_TRULY_NOOP_TRUNCATION): Redefine.
      	* config/tilegx/tilegx.md: Refer to TARGET_TRULY_NOOP_TRUNCATION
      	rather than TRULY_NOOP_TRUNCATION in comments.
      	* config/tilepro/tilepro.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/v850/v850.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/vax/vax.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/visium/visium.h (TRULY_NOOP_TRUNCATION): Delete.
      	* config/xtensa/xtensa.h (TRULY_NOOP_TRUNCATION): Delete.
      	* system.h (TRULY_NOOP_TRUNCATION): Poison.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252818
      Richard Sandiford committed
    • [PR target/67591] ARM v8 Thumb IT blocks are deprecated · a75c63e0
      2017-09-15  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	PR target/67591
      	* config/arm/arm.md (*cmp_and): Add enabled_for_depr_it attribute.
      	(*cmp_ior): Likewise.
      	(*ior_scc_scc): Add alternative for enabled_for_depr_it attribute.
      	(*ior_scc_scc_cmp): Likewise.
      	(*and_scc_scc): Likewise.
      	(*and_scc_scc_cmp): Likewise.
      
      From-SVN: r252817
      Christophe Lyon committed
    • Turn CANNOT_CHANGE_MODE_CLASS into a hook · 0d803030
      This also seemed like a good opportunity to reverse the sense of the
      hook to "can", to avoid the awkward double negative in !CANNOT.
      
      2017-09-15  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayard  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* target.def (can_change_mode_class): New hook.
      	(mode_rep_extended): Refer to it instead of CANNOT_CHANGE_MODE_CLASS.
      	(hard_regno_nregs): Likewise.
      	* hooks.h (hook_bool_mode_mode_reg_class_t_true): Declare.
      	* hooks.c (hook_bool_mode_mode_reg_class_t_true): New function.
      	* doc/tm.texi.in (CANNOT_CHANGE_MODE_CLASS): Replace with...
      	(TARGET_CAN_CHANGE_MODE_CLASS): ...this.
      	(LOAD_EXTEND_OP): Update accordingly.
      	* doc/tm.texi: Regenerate.
      	* doc/rtl.texi: Refer to TARGET_CAN_CHANGE_MODE_CLASS instead of
      	CANNOT_CHANGE_MODE_CLASS.
      	* hard-reg-set.h (REG_CANNOT_CHANGE_MODE_P): Replace with...
      	(REG_CAN_CHANGE_MODE_P): ...this new macro.
      	* combine.c (simplify_set): Update accordingly.
      	* emit-rtl.c (validate_subreg): Likewise.
      	* recog.c (general_operand): Likewise.
      	* regcprop.c (mode_change_ok): Likewise.
      	* reload1.c (choose_reload_regs): Likewise.
      	(inherit_piecemeal_p): Likewise.
      	* rtlanal.c (simplify_subreg_regno): Likewise.
      	* postreload.c (reload_cse_simplify_set): Use REG_CAN_CHANGE_MODE_P
      	instead of CANNOT_CHANGE_MODE_CLASS.
      	(reload_cse_simplify_operands): Likewise.
      	* reload.c (push_reload): Use targetm.can_change_mode_class
      	instead of CANNOT_CHANGE_MODE_CLASS.
      	(push_reload): Likewise.  Also use REG_CAN_CHANGE_MODE_P instead of
      	REG_CANNOT_CHANGE_MODE_P.
      	* config/alpha/alpha.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/alpha/alpha.c (alpha_can_change_mode_class): New function.
      	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	* config/arm/arm.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/arm/arm.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	(arm_can_change_mode_class): New function.
      	* config/arm/neon.md: Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
      	than CANNOT_CHANGE_MODE_CLASS in comments.
      	* config/i386/i386.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/i386/i386-protos.h (ix86_cannot_change_mode_class): Delete.
      	* config/i386/i386.c (ix86_cannot_change_mode_class): Replace with...
      	(ix86_can_change_mode_class): ...this new function, inverting the
      	sense of the return value.
      	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	* config/ia64/ia64.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/ia64/ia64.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	(ia64_can_change_mode_class): New function.
      	* config/m32c/m32c.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/m32c/m32c-protos.h (m32c_cannot_change_mode_class): Delete.
      	* config/m32c/m32c.c (m32c_cannot_change_mode_class): Replace with...
      	(m32c_can_change_mode_class): ...this new function, inverting the
      	sense of the return value.
      	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	* config/mips/mips.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/mips/mips-protos.h (mips_cannot_change_mode_class): Delete.
      	* config/mips/mips.c (mips_cannot_change_mode_class): Replace with...
      	(mips_can_change_mode_class): ...this new function, inverting the
      	sense of the return value.
      	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	* config/msp430/msp430.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/msp430/msp430.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	(msp430_can_change_mode_class): New function.
      	* config/nvptx/nvptx.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/nvptx/nvptx.c (nvptx_can_change_mode_class): New function.
      	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	* config/pa/pa32-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/pa/pa64-regs.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/pa/pa-protos.h (pa_cannot_change_mode_class): Delete.
      	* config/pa/pa.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	(pa_cannot_change_mode_class): Replace with...
      	(pa_can_change_mode_class): ...this new function, inverting the
      	sense of the return value.
      	(pa_modes_tieable_p): Refer to TARGET_CAN_CHANGE_MODE_CLASS rather
      	than CANNOT_CHANGE_MODE_CLASS in comments.
      	* config/pdp11/pdp11.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/pdp11/pdp11-protos.h (pdp11_cannot_change_mode_class): Delete.
      	* config/pdp11/pdp11.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	(pdp11_cannot_change_mode_class): Replace with...
      	(pdp11_can_change_mode_class): ...this new function, inverting the
      	sense of the return value.
      	* config/powerpcspe/powerpcspe.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/powerpcspe/powerpcspe-protos.h
      	(rs6000_cannot_change_mode_class_ptr): Delete.
      	* config/powerpcspe/powerpcspe.c
      	(rs6000_cannot_change_mode_class_ptr): Delete.
      	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	(rs6000_option_override_internal): Assign to
      	targetm.can_change_mode_class instead of
      	rs6000_cannot_change_mode_class_ptr.
      	(rs6000_cannot_change_mode_class): Replace with...
      	(rs6000_can_change_mode_class): ...this new function, inverting the
      	sense of the return value.
      	(rs6000_debug_cannot_change_mode_class): Replace with...
      	(rs6000_debug_can_change_mode_class): ...this new function.
      	* config/riscv/riscv.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/riscv/riscv.c (riscv_can_change_mode_class): New function.
      	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	* config/rs6000/rs6000.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/rs6000/rs6000-protos.h (rs6000_cannot_change_mode_class_ptr):
      	Delete.
      	* config/rs6000/rs6000.c (rs6000_cannot_change_mode_class_ptr): Delete.
      	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	(rs6000_option_override_internal): Assign to
      	targetm.can_change_mode_class instead of
      	rs6000_cannot_change_mode_class_ptr.
      	(rs6000_cannot_change_mode_class): Replace with...
      	(rs6000_can_change_mode_class): ...this new function, inverting the
      	sense of the return value.
      	(rs6000_debug_cannot_change_mode_class): Replace with...
      	(rs6000_debug_can_change_mode_class): ...this new function.
      	* config/s390/s390.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/s390/s390-protos.h (s390_cannot_change_mode_class): Delete.
      	* config/s390/s390.c (s390_cannot_change_mode_class): Replace with...
      	(s390_can_change_mode_class): ...this new function, inverting the
      	sense of the return value.
      	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	* config/sh/sh.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/sh/sh-protos.h (sh_cannot_change_mode_class): Delete.
      	* config/sh/sh.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	(sh_cannot_change_mode_class): Replace with...
      	(sh_can_change_mode_class): ...this new function, inverting the
      	sense of the return value.
      	* config/sparc/sparc.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/sparc/sparc.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	(sparc_can_change_mode_class): New function.
      	* config/spu/spu.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/spu/spu.c (spu_can_change_mode_class): New function.
      	(TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	* config/visium/visium.h (CANNOT_CHANGE_MODE_CLASS): Delete.
      	* config/visium/visium.c (TARGET_CAN_CHANGE_MODE_CLASS): Redefine.
      	(visium_can_change_mode_class): New function.
      	* system.h (CANNOT_CHANGE_MODE_CLASS): Poison.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252816
      Richard Sandiford committed
    • [demangler] Fix nested generic lambda · fa0cdfb6
      https://gcc.gnu.org/ml/gcc-patches/2017-09/msg00994.html
      	PR demangler/82195
      	* cp-demangle.c (d_name): Add 'toplevel' parm.  Pass to	...
      	(d_local_name): ... here.  Parse trailing function args on nested
      	local_name.
      	(d_encoding, d_special_name, d_class_enum_type): Adjust d_name calls.
      	* testsuite/demangle-expected: Add tests.
      
      From-SVN: r252815
      Nathan Sidwell committed
    • re PR lto/81968 (early lto debug objects make Solaris ld SEGV) · dc4b8c68
      2017-09-15  Richard Biener  <rguenther@suse.de>
      
      	PR lto/81968
      	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
      	Iterate marking dependent sections necessary.
      
      From-SVN: r252807
      Richard Biener committed
    • [Demangle PATCH] Some pre-fix cleanups · 9d89efeb
      https://gcc.gnu.org/ml/gcc-patches/2017-09/msg00983.html
      
      	* cp-demangle.c (is_fnqual_component_type): Reimplement using
      	FNQUAL_COMPONENT_CASE.
      	(d_encoding): Hold bare_function_type in local var.
      	(d_local_name): Build name in both cases and build result once.
      	Collapse switch-if to single conditional.
      	* testsuite/demangle-expected: Realign blank lines with tests.
      
      From-SVN: r252802
      Nathan Sidwell committed
    • re PR tree-optimization/82217 (ICE on valid code at -O1 and above: in visit_phi,… · 897da303
      re PR tree-optimization/82217 (ICE on valid code at -O1 and above: in visit_phi, at tree-ssa-sccvn.c:3908)
      
      2017-09-15  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/82217
      	* tree-ssa-sccvn.c (visit_phi): Properly handle all VN_TOP
      	but not undefined case.
      
      	* gcc.dg/torture/pr82217.c: New testcase.
      
      From-SVN: r252796
      Richard Biener committed
    • re PR middle-end/82145 (i386/pr38988.c, i386/pr46254.c, i386/pr55154.c, i386/pr81766.c fails) · 854dde43
      	PR target/82145
      	* postreload.c (reload_cse_simplify_operands): Skip
      	NOTE_INSN_DELETED_LABEL similarly to skipping CODE_LABEL.
      
      	* gcc.target/i386/pr82145.c: New test.
      
      From-SVN: r252791
      Jakub Jelinek committed
    • re PR fortran/82184 (187.facerec in SPEC CPU 2000 miscompares) · 22d07ec2
      2017-09-15  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/82184
      	trans-decl.c (gfc_trans_deferred_vars): Do not null the 'span'
      	field if the symbol is either implicitly or explicitly saved.
      
      
      2017-09-15  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/82184
      	* gfortran.dg/pointer_array_9.f90: New test.
      
      From-SVN: r252781
      Paul Thomas committed
    • re PR tree-optimization/68823 ([graphite] tramp3d-v4 compiled with -floop-nest-optimize crashes) · b6ab6ef8
      2017-09-15  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/68823
      	* graphite-scop-detection.c (build_alias_set): If we have a
      	possible dependence check whether we can handle them by just
      	looking at the DRs DR_ACCESS_FNs.
      	(build_scops): If build_alias_set fails, fail the SCOP.
      
      From-SVN: r252780
      Richard Biener committed
    • Daily bump. · 29d32642
      From-SVN: r252779
      GCC Administrator committed
  2. 14 Sep, 2017 10 commits
    • Introduce libgomp/testsuite/libgomp.c-c++-common · 82419efb
      2017-09-14  Tom de Vries  <tom@codesourcery.com>
      
      	* testsuite/libgomp.c++/cancel-taskgroup-1.C: Remove.
      	* testsuite/libgomp.c/cancel-taskgroup-1.c: Move to ...
      	* testsuite/libgomp.c-c++-common/cancel-taskgroup-1.c: ... here.
      	* testsuite/libgomp.c/c.exp: Include test-cases from
      	libgomp.c-c++-common.
      	* testsuite/libgomp.c++/c++.exp: Same.  Force c++-mode compilation of .c
      	files.
      
      From-SVN: r252775
      Tom de Vries committed
    • rs6000-builtin.def (BU_FLOAT128_1_HW): New macros to support float128 built-in… · 12fca96e
      rs6000-builtin.def (BU_FLOAT128_1_HW): New macros to support float128 built-in functions that require the ISA 3.0 hardware.
      
      [gcc]
      2017-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* config/rs6000/rs6000-builtin.def (BU_FLOAT128_1_HW): New macros
      	to support float128 built-in functions that require the ISA 3.0
      	hardware.
      	(BU_FLOAT128_3_HW): Likewise.
      	(SQRTF128): Add support for the IEEE 128-bit square root and fma
      	built-in functions.
      	(FMAF128): Likewise.
      	(FMAQ): Likewise.
      	* config/rs6000/rs6000.c (rs6000_builtin_mask_calculate): Add
      	support for built-in functions that need the ISA 3.0 IEEE 128-bit
      	floating point instructions.
      	(rs6000_invalid_builtin): Likewise.
      	(rs6000_builtin_mask_names): Likewise.
      	* config/rs6000/rs6000.h (MASK_FLOAT128_HW): Likewise.
      	(RS6000_BTM_FLOAT128_HW): Likewise.
      	(RS6000_BTM_COMMON): Likewise.
      	* config/rs6000/rs6000.md (fma<mode>4_hw): Add a generator
      	function.
      	* doc/extend.texi (RS/6000 built-in functions): Document the
      	IEEE 128-bit floating point square root and fused multiply-add
      	built-in functions.
      
      [gcc/testsuite]
      2017-09-14  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* gcc.target/powerpc/abs128-1.c: Use __builtin_fabsf128 instead of
      	__builtin_fabsq.
      	* gcc.target/powerpc/float128-5.c: Use __builtin_fabsf128 instead
      	of __builtin_fabsq.  Prevent the test from running on 32-bit.
      	* gcc.target/powerpc/float128-fma1.c: New test.
      	* gcc.target/powerpc/float128-fma2.c: Likewise.
      	* gcc.target/powerpc/float128-sqrt1.c: Likewise.
      	* gcc.target/powerpc/float128-sqrt2.c: Likewise.
      
      From-SVN: r252771
      Michael Meissner committed
    • re PR c++/81314 (Undefined reference to a function with -fopenmp) · 8b586510
      	PR c++/81314
      	* cp-gimplify.c (omp_var_to_track): Look through references.
      	(omp_cxx_notice_variable): Likewise.
      
      	* testsuite/libgomp.c++/pr81314.C: New test.
      
      From-SVN: r252770
      Jakub Jelinek committed
    • Fix crash accessing builtins in sanitizer.def and after (PR jit/82174) · 595ced60
      Calls to gcc_jit_context_get_builtin_function that accessed builtins
      in sanitizer.def and after (or failed to match any builtin) led to
      a crash accessing a NULL builtin name.
      
      The entries with the NULL name came from these lines in sanitizer.def:
      
        /* This has to come before all the sanitizer builtins.  */
        DEF_BUILTIN_STUB(BEGIN_SANITIZER_BUILTINS, (const char *)0)
      
        [...snip...]
      
        /* This has to come after all the sanitizer builtins.  */
        DEF_BUILTIN_STUB(END_SANITIZER_BUILTINS, (const char *)0)
      
      This patch updates jit-builtins.c to cope with such entries, fixing the
      crash.
      
      gcc/jit/ChangeLog:
      	PR jit/82174
      	* jit-builtins.c (matches_builtin): Ignore entries with a NULL
      	name.
      
      gcc/testsuite/ChangeLog:
      	PR jit/82174
      	* jit.dg/test-error-gcc_jit_context_get_builtin_function-unknown-builtin.c:
      	New test case.
      
      From-SVN: r252769
      David Malcolm committed
    • rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC reg (r2) isn't in the… · 44e13e60
      rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC reg (r2) isn't in the set of registers defined in the prologue.
      
      	* config/rs6000/rs6000.c (rs6000_set_up_by_prologue): Make sure the TOC
      	reg (r2) isn't in the set of registers defined in the prologue.
      
      	* gcc.target/powerpc/r2_shrink-wrap.c: New.
      
      From-SVN: r252768
      Pat Haugen committed
    • libgo: update to go1.9 · bc998d03
          
          Reviewed-on: https://go-review.googlesource.com/63753
      
      From-SVN: r252767
      Ian Lance Taylor committed
    • Add LOOP_VINFO_MAX_VECT_FACTOR · a41a6142
      Epilogue vectorisation uses the vectorisation factor of the main loop
      as the maximum vectorisation factor allowed for correctness.  That makes
      sense as a conservatively correct value, since the chosen vectorisation
      factor will be strictly less than that anyway.  However, once the VF
      itself becomes variable, it's easier to carry across the original
      maximum VF instead.
      
      2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree-vectorizer.h (_loop_vec_info): Add max_vectorization_factor.
      	(LOOP_VINFO_MAX_VECT_FACTOR): New macro.
      	(LOOP_VINFO_ORIG_VECT_FACTOR): Replace with...
      	(LOOP_VINFO_ORIG_MAX_VECT_FACTOR): ...this new macro.
      	* tree-vect-data-refs.c (vect_analyze_data_ref_dependences): Update
      	accordingly.
      	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
      	max_vectorization_factor.
      	(vect_analyze_loop_2): Set LOOP_VINFO_MAX_VECT_FACTOR.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252766
      Richard Sandiford committed
    • Add a vect_worthwhile_without_simd_p helper routine · ca09abcb
      The vectoriser sometimes considers lowering "vector" operations into N
      scalar word operations.  This N needs to be fixed at compile time, so
      the condition guarding it needs to change when variable-lengh vectors
      are added.  This patch puts the condition into a helper routine so that
      there's only one place to update.
      
      2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree-vectorizer.h (vect_min_worthwhile_factor): Delete.
      	(vect_worthwhile_without_simd_p): Declare.
      	* tree-vect-loop.c (vect_worthwhile_without_simd_p): New function.
      	(vectorizable_reduction): Use it.
      	* tree-vect-stmts.c (vectorizable_shift): Likewise.
      	(vectorizable_operation): Likewise.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252765
      Richard Sandiford committed
    • Add a vect_get_num_copies helper routine · e8f142e2
      This patch adds a vectoriser helper routine to calculate how
      many copies of a vector statement we need.  At present this
      is always:
      
        LOOP_VINFO_VECT_FACTOR (loop_vinfo) / TYPE_VECTOR_SUBPARTS (vectype)
      
      but later patches add other cases.  Another benefit of using
      a helper routine is that it can assert that the division is
      exact (which it must be).
      
      2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree-vectorizer.h (vect_get_num_copies): New function.
      	* tree-vect-data-refs.c (vect_get_data_access_cost): Use it.
      	* tree-vect-loop.c (vectorizable_reduction): Likewise.
      	(vectorizable_induction): Likewise.
      	(vectorizable_live_operation): Likewise.
      	* tree-vect-stmts.c (vectorizable_mask_load_store): Likewise.
      	(vectorizable_bswap): Likewise.
      	(vectorizable_call): Likewise.
      	(vectorizable_conversion): Likewise.
      	(vectorizable_assignment): Likewise.
      	(vectorizable_shift): Likewise.
      	(vectorizable_operation): Likewise.
      	(vectorizable_store): Likewise.
      	(vectorizable_load): Likewise.
      	(vectorizable_condition): Likewise.
      	(vectorizable_comparison): Likewise.
      	(vect_analyze_stmt): Pass the slp node to vectorizable_live_operation.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252764
      Richard Sandiford committed
    • Make more use of gimple-fold.h in tree-vect-loop.c · dccf43ae
      This patch makes the vectoriser use the gimple-fold.h routines
      in more cases, instead of vect_init_vector.  Later patches want
      to use the same interface to handle variable-length vectors.
      
      2017-09-14  Richard Sandiford  <richard.sandiford@linaro.org>
      	    Alan Hayward  <alan.hayward@arm.com>
      	    David Sherwood  <david.sherwood@arm.com>
      
      gcc/
      	* tree-vect-loop.c (vectorizable_induction): Use gimple_build instead
      	of vect_init_vector.
      
      Co-Authored-By: Alan Hayward <alan.hayward@arm.com>
      Co-Authored-By: David Sherwood <david.sherwood@arm.com>
      
      From-SVN: r252763
      Richard Sandiford committed