1. 10 Jan, 2018 40 commits
    • re PR fortran/82367 (ICE with deferred length string allocate on non-deferred length argument) · bdd82c9b
      2018-01-10  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/82367
      	* resolve.c (resolve_allocate_expr): Check for NULL pointer.
      
      2018-01-10  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/82367
      	* gfortran.dg/deferred_character_18.f90: New test.
      
      From-SVN: r256464
      Steven G. Kargl committed
    • c-ada-spec.c (dump_number): Add FLOAT_P parameter. · 68dc87c3
      	* c-ada-spec.c (dump_number): Add FLOAT_P parameter.
      	Skip 'f' and 'F' characters if it is true.
      	(store_ada_macro): Minor tweak.
      	(dump_ada_macros) <CPP_COMMENT>: Likewise.
      	<CPP_WSTRING>: Likewise.
      	<CPP_STRING>: Output '&' in the buffer if not the first string.
      	<CPP_NUMBER>: Adjust calls to dump_number.
      
      From-SVN: r256463
      Eric Botcazou committed
    • RISC-V: Add naked function support. · 8cad5b14
      	2018-01-10  Kito Cheng  <kito.cheng@gmail.com>
      
      	gcc/
      	* config/riscv/riscv-protos.h (riscv_output_return): New.
      	* config/riscv/riscv.c (struct machine_function): New naked_p field.
      	(riscv_attribute_table, riscv_output_return),
      	(riscv_handle_fndecl_attribute, riscv_naked_function_p),
      	(riscv_allocate_stack_slots_for_args, riscv_warn_func_return): New.
      	(riscv_compute_frame_info): Only compute frame->mask if not a naked
      	function.
      	(riscv_expand_prologue): Add early return for naked function.
      	(riscv_expand_epilogue): Likewise.
      	(riscv_function_ok_for_sibcall): Return false for naked function.
      	(riscv_set_current_function): New.
      	(TARGET_SET_CURRENT_FUNCTION, TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS),
      	(TARGET_ATTRIBUTE_TABLE, TARGET_WARN_FUNC_RETURN): New.
      	* config/riscv/riscv.md (simple_return): Call riscv_output_return.
      	* doc/extend.texi (RISC-V Function Attributes): New.
      
      Co-Authored-By: Jim Wilson <jimw@sifive.com>
      
      From-SVN: r256462
      Kito Cheng committed
    • argv.c (expandargv): Correct check for dynamically allocated argv. · 3ec62f54
      2018-01-10  Daniel van Gerpen  <daniel@vangerpen.de>
      
      	* argv.c (expandargv): Correct check for dynamically
      	allocated argv.
      
      From-SVN: r256460
      Daniel van Gerpen committed
    • rs6000.c (is_complex_IBM_long_double): Explicitly check for 128-bit long double… · 83cbbe3a
      rs6000.c (is_complex_IBM_long_double): Explicitly check for 128-bit long double before checking TCmode.
      
      2018-01-10  Michael Meissner  <meissner@linux.vnet.ibm.com>
      
      	* config/rs6000/rs6000.c (is_complex_IBM_long_double): Explicitly
      	check for 128-bit long double before checking TCmode.
      	* config/rs6000/rs6000.h (FLOAT128_IEEE_P): Explicitly check for
      	128-bit long doubles before checking TFmode or TCmode.
      	(FLOAT128_IBM_P): Likewise.
      
      From-SVN: r256458
      Michael Meissner committed
    • PR tree-optimization/83671 - Fix for false positive reported by… · c42d0aa0
      PR tree-optimization/83671 - Fix for false positive reported by -Wstringop-overflow does not work with inlining
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/83671
      	* gcc.dg/strlenopt-40.c: New test.
      	* gcc.dg/strlenopt-41.c: New test.
      
      gcc/ChangeLog:
      
      	PR tree-optimization/83671
      	* builtins.c (c_strlen): Unconditionally return zero for the empty
      	string.
      	Use -Warray-bounds for warnings.
      	* gimple-fold.c (get_range_strlen): Handle non-constant lengths
      	for non-constant array indices with COMPONENT_REF, arrays of
      	arrays, and pointers to arrays.
      	(gimple_fold_builtin_strlen): Determine and set length range for
      	non-constant character arrays.
      
      From-SVN: r256457
      Martin Sebor committed
    • re PR middle-end/81897 (spurious -Wmaybe-uninitialized warning) · e7c6abad
      	PR middle-end/81897
      	* tree-ssa-uninit.c (convert_control_dep_chain_into_preds): Skip
      	empty blocks.
      
      From-SVN: r256456
      Aldy Hernandez committed
    • [multiple changes] · 266404a8
      2018-01-10 Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/83093
      	* resolve.c (resolve_charlen): Check the type of cl->length
      	after resolution.
      
      2018-01-10  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/83093
      	* gfortran.dg/allocate_with_typespec_7.f90: New test.
      
      From-SVN: r256455
      Steven G. Kargl committed
    • re PR target/83399 (Power8 ICE During LRA with 2-op rtl pattern for lvx instruction) · 2025a48d
      gcc/
      	PR target/83399
      	* config/rs6000/rs6000.c (print_operand) <'y'>: Use
      	VECTOR_MEM_ALTIVEC_OR_VSX_P.
      	* config/rs6000/vsx.md (*vsx_le_perm_load_<mode> for VSX_D): Use
      	indexed_or_indirect_operand predicate.
      	(*vsx_le_perm_load_<mode> for VSX_W): Likewise.
      	(*vsx_le_perm_load_v8hi): Likewise.
      	(*vsx_le_perm_load_v16qi): Likewise.
      	(*vsx_le_perm_store_<mode> for VSX_D): Likewise.
      	(*vsx_le_perm_store_<mode> for VSX_W): Likewise.
      	(*vsx_le_perm_store_v8hi): Likewise.
      	(*vsx_le_perm_store_v16qi): Likewise.
      	(eight unnamed splitters): Likewise.
      
      gcc/testsuite/
      	PR target/83399
      	* gcc.target/powerpc/pr83399.c: New test.
      
      From-SVN: r256453
      Peter Bergner committed
    • x86intrin.h: Change #warning to #error. · 9e0fa36a
      	* config/rs6000/x86intrin.h: Change #warning to #error. Update message.
      	* config/rs6000/emmintrin.h: Likewise.
      	* config/rs6000/mmintrin.h: Likewise.
      	* config/rs6000/xmmintrin.h: Likewise.
      
      From-SVN: r256452
      Peter Bergner committed
    • parser.c (cp_parser_std_attribute_spec): When token_pair::require_open /… · d90a2542
      parser.c (cp_parser_std_attribute_spec): When token_pair::require_open / require_close return false simply return...
      
      2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* parser.c (cp_parser_std_attribute_spec): When
              token_pair::require_open / require_close return false simply
      	return error_mark_node, avoid duplicate cp_parser_error about
      	expected '(' / ')', respectively.
      
      From-SVN: r256451
      Paolo Carlini committed
    • Preserving locations for variable-uses and constants (PR c++/43486) · 9a004410
      This patch implements location wrapper nodes, preserving source locations
      of the uses of variables and constants in various places in the
      C++ frontend: at the arguments at callsites, and for typeid, alignof,
      sizeof, and offsetof.
      
      For example, it allows the C++ FE to underline the pertinent argument
      for mismatching calls, for such expressions, improving:
      
      extern int callee (int one, const char *two, float three);
      
      int caller (int first, int second, float third)
      {
        return callee (first, second, third);
      }
      
      from
      
      test.cc: In function 'int caller(int, int, float)':
      test.cc:5:38: error: invalid conversion from 'int' to 'const char*' [-fpermissive]
         return callee (first, second, third);
                                            ^
      test.cc:1:41: note:   initializing argument 2 of 'int callee(int, const char*, float)'
       extern int callee (int one, const char *two, float three);
                                   ~~~~~~~~~~~~^~~
      
      to:
      
      test.cc: In function 'int caller(int, int, float)':
      test.cc:5:25: error: invalid conversion from 'int' to 'const char*' [-fpermissive]
         return callee (first, second, third);
                               ^~~~~~
      test.cc:1:41: note:   initializing argument 2 of 'int callee(int, const char*, float)'
       extern int callee (int one, const char *two, float three);
                                   ~~~~~~~~~~~~^~~
      
      This is the combination of the following patches:
      
        "[PATCH 01/14] C++: preserve locations within build_address"
           https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00883.html
      
        "[PATCH v2.4 of 02/14] Support for adding and stripping location_t wrapper nodes"
          https://gcc.gnu.org/ml/gcc-patches/2018-01/msg00591.html
      
        "[PATCH] Eliminate location wrappers in tree_nop_conversion/STRIP_NOPS"
          https://gcc.gnu.org/ml/gcc-patches/2017-12/msg01330.html
      
        "[PATCH v4 of 03/14] C++: add location_t wrapper nodes during parsing (minimal impl)"
          https://gcc.gnu.org/ml/gcc-patches/2018-01/msg00660.html
      
        "[PATCH 04/14] Update testsuite to show improvements"
          https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00891.html
      
        "[v3 of 05/14] C++: handle locations wrappers when calling warn_for_memset"
          https://gcc.gnu.org/ml/gcc-patches/2017-12/msg01378.html
      
        "[PATCH 07/14] reject_gcc_builtin: strip any location wrappers"
          https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00886.html
      
        "[v3 of PATCH 08/14] cp/tree.c: strip location wrappers in lvalue_kind"
          https://gcc.gnu.org/ml/gcc-patches/2017-12/msg01433.html
      
        "[PATCH 09/14] Strip location wrappers in null_ptr_cst_p"
          https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00888.html
      
        "[PATCH 11/14] Handle location wrappers in string_conv_p"
          https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00890.html
      
        "[PATCH 12/14] C++: introduce null_node_p"
          https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00894.html
      
        "[v3 of PATCH 13/14] c-format.c: handle location wrappers"
          https://gcc.gnu.org/ml/gcc-patches/2017-12/msg01494.html
      
        "[PATCH 14/14] pp_c_cast_expression: don't print casts for location wrappers"
          https://gcc.gnu.org/ml/gcc-patches/2017-11/msg00893.html
      
        "[v3 of PATCH 15/14] Use fold_for_warn in get_atomic_generic_size"
          https://gcc.gnu.org/ml/gcc-patches/2017-12/msg01380.html
      
        "[PATCH] Add selftest for "fold_for_warn (error_mark_node)""
          https://gcc.gnu.org/ml/gcc-patches/2017-12/msg01385.html
      
      gcc/c-family/ChangeLog:
      	PR c++/43486
      	* c-common.c: Include "selftest.h".
      	(get_atomic_generic_size): Perform the test for integral type
      	before the range test for any integer constant, fixing indentation
      	of braces.  Call fold_for_warn before testing for an INTEGER_CST.
      	(reject_gcc_builtin): Strip any location wrapper from EXPR.
      	(selftest::test_fold_for_warn): New function.
      	(selftest::c_common_c_tests): New function.
      	(selftest::c_family_tests): Call it, and
      	selftest::c_pretty_print_c_tests.
      	* c-common.h (selftest::c_pretty_print_c_tests): New decl.
      	* c-format.c (check_format_arg): Convert VAR_P check to a
      	fold_for_warn.
      	* c-pretty-print.c: Include "selftest.h".
      	(pp_c_cast_expression): Don't print casts for location wrappers.
      	(selftest::assert_c_pretty_printer_output): New function.
      	(ASSERT_C_PRETTY_PRINTER_OUTPUT): New macro.
      	(selftest::test_location_wrappers): New function.
      	(selftest::c_pretty_print_c_tests): New function.
      	* c-warn.c (warn_for_memset): Call fold_for_warn on the arguments.
      
      gcc/cp/ChangeLog:
      	PR c++/43486
      	* call.c (null_ptr_cst_p): Strip location wrappers when
      	converting from '0' to a pointer type in C++11 onwards.
      	(conversion_null_warnings): Replace comparison with null_node with
      	call to null_node_p.
      	(build_over_call): Likewise.
      	* cp-gimplify.c (cp_fold): Remove the early bailout when
      	processing_template_decl.
      	* cp-lang.c (selftest::run_cp_tests): Call
      	selftest::cp_pt_c_tests and selftest::cp_tree_c_tests.
      	* cp-tree.h (cp_expr::maybe_add_location_wrapper): New method.
      	(selftest::run_cp_tests): Move decl to bottom of file.
      	(null_node_p): New inline function.
      	(selftest::cp_pt_c_tests): New decl.
      	(selftest::cp_tree_c_tests): New decl.
      	* cvt.c (build_expr_type_conversion): Replace comparison with
      	null_node with call to null_node_p.
      	* error.c (args_to_string): Likewise.
      	* except.c (build_throw): Likewise.
      	* mangle.c (write_expression): Skip location wrapper nodes.
      	* parser.c (literal_integer_zerop): New function.
      	(cp_parser_postfix_expression): Call maybe_add_location_wrapper on
      	the result for RID_TYPEID. Pass true for new "wrap_locations_p"
      	param of cp_parser_parenthesized_expression_list.  When calling
      	warn_for_memset, replace integer_zerop calls with
      	literal_integer_zerop, eliminating the double logical negation
      	cast to bool.  Eliminate the special-casing for CONST_DECL in
      	favor of the fold_for_warn within warn_for_memset.
      	(cp_parser_parenthesized_expression_list): Add "wrap_locations_p"
      	param, defaulting to false.  Convert "expr" to a cp_expr, and call
      	maybe_add_location_wrapper on it when wrap_locations_p is true.
      	(cp_parser_unary_expression): Call maybe_add_location_wrapper on
      	the result for RID_ALIGNOF and RID_SIZEOF.
      	(cp_parser_builtin_offsetof): Likewise.
      	* pt.c: Include "selftest.h".
      	(tsubst_copy): Handle location wrappers.
      	(tsubst_copy_and_build): Likewise.
      	(build_non_dependent_expr): Likewise.
      	(selftest::test_build_non_dependent_expr): New function.
      	(selftest::cp_pt_c_tests): New function.
      	* tree.c: Include "selftest.h".
      	(lvalue_kind): Handle VIEW_CONVERT_EXPR location wrapper nodes.
      	(selftest::test_lvalue_kind): New function.
      	(selftest::cp_tree_c_tests): New function.
      	* typeck.c (string_conv_p): Strip any location wrapper from "exp".
      	(cp_build_binary_op): Replace comparison with null_node with call
      	to null_node_p.
      	(build_address): Use location of operand when building address
      	expression.
      
      gcc/testsuite/ChangeLog:
      	PR c++/43486
      	* g++.dg/diagnostic/param-type-mismatch.C: Update expected results
      	to reflect that the arguments are correctly underlined.
      	* g++.dg/plugin/diagnostic-test-expressions-1.C: Add test coverage
      	for globals, params, locals and literals.
      	(test_sizeof): Directly test the location of "sizeof", rather than
      	when used in compound expressions.
      	(test_alignof): Likewise for "alignof".
      	(test_string_literals): Likewise for string literals.
      	(test_numeric_literals): Likewise for numeric literals.
      	(test_builtin_offsetof): Likewise for "__builtin_offsetof".
      	(test_typeid): Likewise for typeid.
      	(test_unary_plus): New.
      	* g++.dg/warn/Wformat-1.C: Add tests of pointer arithmetic on
      	format strings.
      
      gcc/ChangeLog:
      	PR c++/43486
      	* tree-core.h: Document EXPR_LOCATION_WRAPPER_P's usage of
      	"public_flag".
      	* tree.c (tree_nop_conversion): Return true for location wrapper
      	nodes.
      	(maybe_wrap_with_location): New function.
      	(selftest::check_strip_nops): New function.
      	(selftest::test_location_wrappers): New function.
      	(selftest::tree_c_tests): Call it.
      	* tree.h (STRIP_ANY_LOCATION_WRAPPER): New macro.
      	(maybe_wrap_with_location): New decl.
      	(EXPR_LOCATION_WRAPPER_P): New macro.
      	(location_wrapper_p): New inline function.
      	(tree_strip_any_location_wrapper): New inline function.
      
      From-SVN: r256448
      David Malcolm committed
    • pr82618.c (dg-options): Add -mno-stv. · 60d87d86
      	* gcc.target/i386/pr82618.c (dg-options): Add -mno-stv.
      
      From-SVN: r256447
      Uros Bizjak committed
    • libgo: add platform support for SuperH · fd0c1dd1
          
          Reviewed-on: https://go-review.googlesource.com/84555
      
      From-SVN: r256446
      Ian Lance Taylor committed
    • memcmp-1.c: Reduce runtime to something reasonable. · ec2f999b
      2018-01-10  Aaron Sawdey  <acsawdey@linux.vnet.ibm.com>
      
      	* gcc.dg/memcmp-1.c: Reduce runtime to something reasonable.
      
      From-SVN: r256443
      Aaron Sawdey committed
    • Add missing .a files. · 7074b41b
      Add missing .a files.  These should have been committed with the
      update to go1.10beta1, but were skipped because by default Subversion
      ignores all files matching *.a.
      
      From-SVN: r256442
      Ian Lance Taylor committed
    • re PR c++/82541 (Wduplicated-branches triggers in template context) · 6bebae75
      	PR c++/82541
      	* call.c (build_conditional_expr_1): Check complain before warning.
      	* pt.c (tsubst_copy_and_build) <case COND_EXPR>: Suppress
      	-Wduplicated-branches.
      
      	* g++.dg/warn/Wduplicated-branches4.C: New test.
      
      From-SVN: r256441
      Marek Polacek committed
    • re PR c++/81327 (cast to void* does not suppress -Wclass-memaccess) · e99ef408
      	PR c++/81327
      	* call.c (maybe_warn_class_memaccess): Add forward declaration.
      	Change last argument from tree * to const vec<tree, va_gc> *, adjust
      	args uses and check number of operands too.  Don't strip away any
      	nops.  Use maybe_constant_value when looking for INTEGER_CST args.
      	Deal with src argument not having pointer type.  Check
      	tree_fits_uhwi_p before calling tree_to_uhwi.  Remove useless
      	test.
      	(build_over_call): Call maybe_warn_class_memaccess here on the
      	original arguments.
      	(build_cxx_call): Rather than here on converted arguments.
      
      	* g++.dg/Wclass-memaccess-2.C: Don't expect a warning when explicitly
      	cast to void *.
      
      From-SVN: r256440
      Jakub Jelinek committed
    • 2018-01-10 François Dumont <fdumont@gcc.gnu.org> · 75ce74bb
      	* include/bits/forward_list.h
      	(_Fwd_list_node_base(_Fwd_list_node_base&&)): New.
      	(_Fwd_list_node_base& operator=(_Fwd_list_node_base&&)): New.
      	(_Fwd_list_node_base(const _Fwd_list_node_base&)): Explicit delete.
      	(_Fwd_list_node_base& operator=(const _Fwd_list_node_base&)): Likewise.
      	(_Fwd_list_impl()): Add noexcept qualification.
      	(_Fwd_list_impl(const _Node_alloc_type&)): Delete.
      	(_Fwd_list_impl(_Fwd_list_impl&&)): New, default.
      	(_Fwd_list_impl(_Fwd_list_impl&&, _Node_alloc_type&&)): New.
      	(_Fwd_list_base()): Default.
      	(_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&, true_type)): New.
      	(_Fwd_list_base(_Fwd_list_base&&)): Default.
      	(forward_list<>()): Default.
      	(forward_list<>(forward_list&&)): Default.
      	(forward_list(forward_list&&, _Node_alloc_type&&, false_type)): New.
      	(forward_list(forward_list&&, _Node_alloc_type&&, true_type)): New.
      	(forward_list(forward_list&&, const _Alloc&)): Adapt to use latters.
      	* include/bits/forward_list.tcc
      	(_Fwd_list_base(_Fwd_list_base&&, _Node_alloc_type&&)): Adapt to use
      	_M_impl._M_head move assignment.
      	(forward_list<>::merge(forward_list<>&&, _Comp)): Likewise.
      	* testsuite/23_containers/forward_list/allocator/default_init.cc: New.
      
      From-SVN: r256439
      François Dumont committed
    • re PR c++/81055 (ICE with invalid initializer for array new) · 143aa5cc
      /cp
      2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/81055
      	* init.c (build_vec_init): Avoid building an INIT_EXPR with
      	error_mark_node as second argument.
      
      /testsuite
      2018-01-10  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/81055
      	* g++.dg/cpp0x/new2.C: New.
      
      From-SVN: r256438
      Paolo Carlini committed
    • re PR c/82922 (Request: add -Wstrict-prototypes to -Wextra as K&R style is obsolescent) · 389578d7
      	PR c/82922
      
          runtime, syscall: use full prototypes in C code
          
          Based on patch by Martin Sebor.
          
          Reviewed-on: https://go-review.googlesource.com/86815
      
      From-SVN: r256437
      Ian Lance Taylor committed
    • i386: Also adjust stack frame for stack slot alignment · cd3410cc
      We should also adjust stack_realign_offset for the largest alignment of
      stack slot actually used when stack realignment isn't needed.  This is
      required to keep stack frame properly aligned to satisfy the largest
      alignment of stack slots.
      
      Tested on Linux/i686 and Linux/x86-64.
      
      gcc/
      
      	PR target/83735
      	* config/i386/i386.c (ix86_compute_frame_layout): Always adjust
      	stack_realign_offset for the largest alignment of stack slot
      	actually used.
      	(ix86_find_max_used_stack_alignment): New function.
      	(ix86_finalize_stack_frame_flags): Use it.  Set
      	max_used_stack_alignment if we don't realign stack.
      	* config/i386/i386.h (machine_function): Add
      	max_used_stack_alignment.
      
      gcc/testsuite/
      
      	PR target/83735
      	* gcc.target/i386/pr83735.c: New test.
      
      From-SVN: r256436
      H.J. Lu committed
    • exp: remove exp/proxy and exp/terminal packages · 447fb74d
          
          The exp/proxy package was removed from the master library in
          https://golang.org/cl/6461056 (August, 2012).
          
          The exp/terminal package was removed from the master library in
          https://golang.org/cl/5970044 (March, 2012).
          
          I'm not sure why they lingered in the gofrontend copy, but let's
          finally remove them now.
          
          Reviewed-on: https://go-review.googlesource.com/87138
      
      From-SVN: r256435
      Ian Lance Taylor committed
    • [ARM] Add -mbranch-cost option, and update a few tests · 227e5798
      2018-01-10  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	gcc/
      	* config/arm/arm.opt (-mbranch-cost): New option.
      	* config/arm/arm.h (BRANCH_COST): Take arm_branch_cost into
      	account.
      
      	gcc/testsuite/
      	* lib/target-supports.exp (check_effective_target_branch_cost):
      	New function.
      	* gcc.dg/builtin-bswap-7.c: Use branch_cost effective target.
      	* gcc.dg/pr21643.c: Likewise.
      	* gcc.dg/pr46309.c: Likewise.
      	* gcc.dg/tree-ssa/phi-opt-11.c: Likewise.
      	* gcc.dg/tree-ssa/phi-opt-2.c: Likewise.
      	* gcc.dg/tree-ssa/reassoc-32.c: Likewise.
      	* gcc.dg/tree-ssa/reassoc-33.c: Likewise.
      	* gcc.dg/tree-ssa/reassoc-34.c: Likewise.
      	* gcc.dg/tree-ssa/reassoc-35.c: Likewise.
      	* gcc.dg/tree-ssa/reassoc-36.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ifcombine-13.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-1.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-2.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-3.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-4.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-5.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-ifcombine-ccmp-6.c: Likewise.
      
      From-SVN: r256434
      Christophe Lyon committed
    • cmd/go: check for another GCC error message · d0ac0d52
          
          GCC always recognizes the -fsplit-stack option, but then tests whether
          it is supported by the selected target. If not, it reports
              cc1: error: ‘-fsplit-stack’ is not supported by this compiler configuration
          Check for that error message when deciding whether a compiler option works.
          
          Reviewed-on: https://go-review.googlesource.com/87137
      
      From-SVN: r256433
      Ian Lance Taylor committed
    • rs6000: Wrap diff of immediates in const (PR83629) · 8c6e19c1
      In various of our 32-bit load_toc patterns we take the difference of
      two immediates (labels) as a term to something bigger; but this isn't
      canonical RTL, it needs to be wrapped in CONST.
      
      
      	PR target/83629
      	* config/rs6000/rs6000.md (load_toc_v4_PIC_2, load_toc_v4_PIC_3b,
      	load_toc_v4_PIC_3c): Wrap const term in CONST RTL.
      
      testsuite/
      	PR target/83629
      	* gcc.target/powerpc/pr83629.c: New testcase.
      
      From-SVN: r256432
      Segher Boessenkool committed
    • runtime: fix makemap calls in __go_construct_map · c9edeca8
          
          The signature of makemap changed with the update to 1.10beta1,
          but I forgot to update the call from C code.
          
          Reviewed-on: https://go-review.googlesource.com/87135
      
      From-SVN: r256431
      Ian Lance Taylor committed
    • re PR c/78768 (-Walloca-larger-than and -Wformat-length warnings disabled by -flto) · 7b975de0
      2018-01-10  Richard Biener  <rguenther@suse.de>
      
      	PR testsuite/78768
      	* gcc.dg/pr78768.c: Un-XFAIL.
      
      From-SVN: r256430
      Richard Biener committed
    • re PR debug/82425 (gcc.dg/guality/inline-params-2.c fail) · e02a5f63
      2018-01-10  Richard Biener  <rguenther@suse.de>
      
      	PR debug/82425
      	* gcc.dg/guality/inline-params-2.c: Un-XFAIL for slim LTO.
      
      From-SVN: r256429
      Richard Biener committed
    • re PR debug/83765 (LTO bootstrap with Ada fails) · 31a3f58f
      2018-01-10  Richard Biener  <rguenther@suse.de>
      
      	PR debug/83765
      	* dwarf2out.c (gen_subprogram_die): Hoist old_die && declaration
      	early out so it also covers the case where we have a non-NULL
      	origin.
      
      From-SVN: r256428
      Richard Biener committed
    • Don't use permutes for single-element accesses (PR83753) · 6737facb
      After cunrolling the inner loop, the remaining loop in the testcase
      has a single 32-bit access and a group of 64-bit accesses.  We first
      try to vectorise at 128 bits (VF 4), but decide not to for cost reasons.
      We then try with 64 bits (VF 2) instead.  This means that the group
      of 64-bit accesses uses a single-element vector, which is deliberately
      supported as of r251538.  We then try to create "permutes" for these
      single-element vectors and fall foul of:
      
      	      for (i = 0; i < 6; i++)
      		sel[i] += exact_div (nelt, 2);
      
      in vect_grouped_store_supported, since nelt==1.
      
      Maybe we shouldn't even be trying to vectorise statements in the
      single-element case, and instead just copy the scalar statement
      for each member of the group.  But until then, this patch treats
      non-strided grouped accesses as VMAT_CONTIGUOUS if no permutation
      is necessary.
      
      2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	PR tree-optimization/83753
      	* tree-vect-stmts.c (get_group_load_store_type): Use VMAT_CONTIGUOUS
      	for non-strided grouped accesses if the number of elements is 1.
      
      gcc/testsuite/
      	PR tree-optimization/83753
      	* gcc.dg/torture/pr83753.c: New test.
      
      From-SVN: r256427
      Richard Sandiford committed
    • PR 83740 Wrong string length type in bounds check · e10e60cb
      This patch fixes up the formatting and corrects the PR number in the
      ChangeLog for r256425.
      
      gcc/fortran/ChangeLog:
      
      2018-01-10  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR fortran/83740
      	* trans-array.c (gfc_trans_array_ctor_element): Fix formatting.
      
      From-SVN: r256426
      Janne Blomqvist committed
    • PR 84740 Wrong string length type in bounds check · 85c2c761
      Need to convert the RHS to the type of the LHS when assigning.
      
      Regtested on x86_64-pc-linux-gnu, committed as obvious.
      
      gcc/fortran/ChangeLog:
      
      2018-01-10  Janne Blomqvist  <jb@gcc.gnu.org>
      
      	PR fortran/84740
      	* trans-array.c (gfc_trans_array_ctor_element): Convert RHS to the
      	LHS type when assigning.
      
      From-SVN: r256425
      Janne Blomqvist committed
    • re PR target/81616 (Update -mtune=generic for the current Intel and AMD processors) · f6aa5171
      	PR target/81616
      	* i386.c (ix86_vectorize_builtin_gather): Check TARGET_USE_GATHER.
      	* i386.h (TARGET_USE_GATHER): Define.
      	* x86-tune.def (X86_TUNE_USE_GATHER): New.
      
      From-SVN: r256424
      Jan Hubicka committed
    • avx2-gather-1.c: Add -march. · 1fe399e4
      
      	* gcc.target/i386/avx2-gather-1.c: Add -march.
      	* gcc.target/i386/avx2-gather-2.c: Add -march.
      	* gcc.target/i386/avx2-gather-3.c: Add -march.
      	* gcc.target/i386/avx2-gather-4.c: Add -march.
      	* gcc.target/i386/avx2-gather-5.c: Add -march.
      	* gcc.target/i386/avx2-gather-6.c: Add -march.
      	* gcc.target/i386/avx512f-gather-1.c: Add -march.
      	* gcc.target/i386/avx512f-gather-2.c: Add -march.
      	* gcc.target/i386/avx512f-gather-3.c: Add -march.
      	* gcc.target/i386/avx512f-gather-4.c: Add -march.
      	* gcc.target/i386/avx512f-gather-5.c: Add -march.
      	* gcc.target/i386/avx512f-i32gatherd512-1.c: Add -march.
      	* gcc.target/i386/avx512f-i32gatherd512-2.c: Add -march.
      	* gcc.target/i386/avx512f-i32gatherpd512-1.c: Add -march.
      	* gcc.target/i386/avx512f-i32gatherpd512-2.c: Add -march.
      	* gcc.target/i386/avx512f-i32gatherps512-1.c: Add -march.
      
      From-SVN: r256423
      Jan Hubicka committed
    • Clean up partitioning in try_optimize_cfg (PR bootstrap/82831). · 3ff0dc17
      2018-01-10  Martin Liska  <mliska@suse.cz>
      
      	PR bootstrap/82831
      	* basic-block.h (CLEANUP_NO_PARTITIONING): New define.
      	* bb-reorder.c (pass_reorder_blocks::execute): Do not clean up
      	partitioning.
      	* cfgcleanup.c (try_optimize_cfg): Fix up partitioning if
      	CLEANUP_NO_PARTITIONING is not set.
      
      From-SVN: r256422
      Martin Liska committed
    • Mostly revert r254296 · 2072a319
      r254296 added support for (const ...) wrappers around vectors,
      but in the end the agreement was to use a variable-length
      encoding of CONST_VECTOR (and VECTOR_CST) instead.  This patch
      therefore reverts the bits that are no longer needed.
      
      The rtl.texi part isn't a full revert, since r254296 also updated the
      documentation to mention unspecs in address calculations, and to relax
      the requirement that the mode had to be Pmode.
      
      2018-01-10  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* doc/rtl.texi: Remove documentation of (const ...) wrappers
      	for vectors, as a partial revert of r254296.
      	* rtl.h (const_vec_p): Delete.
      	(const_vec_duplicate_p): Don't test for vector CONSTs.
      	(unwrap_const_vec_duplicate, const_vec_series_p): Likewise.
      	* expmed.c (make_tree): Likewise.
      
      	Revert:
      	* common.md (E, F): Use CONSTANT_P instead of checking for
      	CONST_VECTOR.
      	* emit-rtl.c (gen_lowpart_common): Use const_vec_p instead of
      	checking for CONST_VECTOR.
      
      From-SVN: r256421
      Richard Sandiford committed
    • re PR rtl-optimization/83575 (ICE: verify_flow_info failed (error: multiple… · d89f01a0
      re PR rtl-optimization/83575 (ICE: verify_flow_info failed (error: multiple hot/cold transitions found))
      
      
      	PR middle-end/83575
      	* predict.c (force_edge_cold): Handle in more sane way edges
      	with no prediction.
      
      From-SVN: r256420
      Jan Hubicka committed