1. 27 Sep, 2019 5 commits
    • [C][C++] Allow targets to check calls to BUILT_IN_MD functions · c6447c20
      For SVE, we'd like the frontends to check calls to target-specific
      built-in functions in the same way that they already do for "normal"
      builtins.  This patch adds a target hook for that and extends
      check_builtin_function_arguments accordingly.
      
      A slight complication is that when TARGET_RESOLVE_OVERLOADED_BUILTIN
      has resolved an overload, it can use build_function_call_vec to build
      the call to the underlying non-overloaded function decl.  This in
      turn coerces the arguments to the function type and then calls
      check_builtin_function_arguments to check the final call.  If the
      target does find a problem in this final call, it can be useful
      to refer to the original overloaded function decl in diagnostics,
      since that's what the user wrote.
      
      The patch therefore passes the original decl as a final optional
      parameter to build_function_call_vec.
      
      2019-09-27  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* target.def (check_builtin_call): New target hook.
      	* doc/tm.texi.in (TARGET_CHECK_BUILTIN_CALL): New @hook.
      	* doc/tm.texi: Regenerate.
      
      gcc/c-family/
      	* c-common.h (build_function_call_vec): Take the original
      	function decl as an optional final parameter.
      	(check_builtin_function_arguments): Take the original function decl.
      	* c-common.c (check_builtin_function_arguments): Likewise.
      	Handle all built-in functions, not just BUILT_IN_NORMAL ones.
      	Use targetm.check_builtin_call to check BUILT_IN_MD functions.
      
      gcc/c/
      	* c-typeck.c (build_function_call_vec): Take the original function
      	decl as an optional final parameter.  Pass all built-in calls to
      	check_builtin_function_arguments.
      
      gcc/cp/
      	* cp-tree.h (build_cxx_call): Take the original function decl
      	as an optional final parameter.
      	(cp_build_function_call_vec): Likewise.
      	* call.c (build_cxx_call): Likewise.  Pass all built-in calls to
      	check_builtin_function_arguments.
      	* typeck.c (build_function_call_vec): Take the original function
      	decl as an optional final parameter and pass it to
      	cp_build_function_call_vec.
      	(cp_build_function_call_vec): Take the original function
      	decl as an optional final parameter and pass it to build_cxx_call.
      
      From-SVN: r276176
      Richard Sandiford committed
    • Fix reduc_index==1 handling for COND_REDUCTION (PR91909) · 18908a56
      The then/else order of the VEC_COND_EXPRs created by
      vect_create_epilog_for_reduction meeds to line up with the
      main VEC_COND_EXPR.
      
      2019-09-27  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR tree-optimization/91909
      	* tree-vect-loop.c (vect_create_epilog_for_reduction): Take a
      	reduc_index parameter.  When handling COND_REDUCTION, make sure
      	that the reduction phi operand is in the correct arm of the
      	VEC_COND_EXPR.
      	(vectorizable_reduction): Pass reduc_index to the above.
      
      From-SVN: r276175
      Richard Sandiford committed
    • [AArch64][SVE2] Shift-Right Accumulate combine patterns · 76bb5af6
      This patch adds combining support for SVE2's shift-right accumulate
      instructions.
      
      2019-09-27  Yuliang Wang  <yuliang.wang@arm.com>
      
      gcc/
      	* config/aarch64/aarch64-sve2.md (aarch64_sve2_sra<mode>):
      	New combine pattern.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve2/shracc_1.c: New test.
      
      From-SVN: r276174
      Yuliang Wang committed
    • set DECL_SIZE_UNIT for zero-sized fields · 639a28ba
      Zero-sized fields do not get processed by finish_record_type: they're
      removed from the field list before and reinserted after, so their
      DECL_SIZE_UNIT remains unset, causing the translation of assignment
      statements with use_memset_p, in quite unusual circumstances, to use a
      NULL_TREE as the memset length.  This patch sets DECL_SIZE_UNIT for
      the zero-sized fields, that don't go through language-independent
      layout, in language-specific layout.
      
      
      for  gcc/ada/ChangeLog
      
      	* gcc-interface/decl.c (components_to_record): Set
      	DECL_SIZE_UNIT for zero-sized fields.
      
      From-SVN: r276173
      Alexandre Oliva committed
    • Daily bump. · 09704140
      From-SVN: r276172
      GCC Administrator committed
  2. 26 Sep, 2019 28 commits
    • re PR libbacktrace/91908 (New libbacktrace tests fail to build) · 5fe5f75f
      	PR libbacktrace/91908
      	* pecoff.c (backtrace_initialize): Explicitly cast unchecked
      	__sync_bool_compare_and_swap to void.
      	* xcoff.c (backtrace_initialize): Likewise.
      
      From-SVN: r276168
      Ian Lance Taylor committed
    • charset.c (UCS_LIMIT): New macro. · 0900e29c
      	* charset.c (UCS_LIMIT): New macro.
      	(ucn_valid_in_identifier): Use it instead of a hardcoded constant.
      	(_cpp_valid_ucn): Issue a pedantic warning for UCNs larger than
      	UCS_LIMIT outside of identifiers in C and in C++2a or later.
      
      From-SVN: r276167
      Eric Botcazou committed
    • xtensa: fix PR target/91880 · d7326aaf
      Xtensa hwloop_optimize segfaults when zero overhead loop is about to be
      inserted as the first instruction of the function.
      Insert zero overhead loop instruction into new basic block before the
      loop when basic block that precedes the loop is empty.
      
      2019-09-26  Max Filippov  <jcmvbkbc@gmail.com>
      gcc/
      	* config/xtensa/xtensa.c (hwloop_optimize): Insert zero overhead
      	loop instruction into new basic block before the loop when basic
      	block that precedes the loop is empty.
      
      gcc/testsuite/
      	* gcc.target/xtensa/pr91880.c: New test case.
      	* gcc.target/xtensa/xtensa.exp: New test suite.
      
      From-SVN: r276166
      Max Filippov committed
    • function.c (gimplify_parameters): Use build_clobber function. · 25b45c7c
      	* function.c (gimplify_parameters): Use build_clobber function.
      	* tree-ssa.c (execute_update_addresses_taken): Likewise.
      	* tree-inline.c (expand_call_inline): Likewise.
      	* tree-sra.c (clobber_subtree): Likewise.
      	* tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise.
      	* omp-low.c (lower_rec_simd_input_clauses, lower_rec_input_clauses,
      	lower_omp_single, lower_depend_clauses, lower_omp_taskreg,
      	lower_omp_target): Likewise.
      	* omp-expand.c (expand_omp_for_generic): Likewise.
      	* omp-offload.c (ompdevlow_adjust_simt_enter): Likewise.
      
      From-SVN: r276165
      Jakub Jelinek committed
    • rs6000-builtin.def: (LVSL... · 9ab2f9ae
      [gcc]
      
      2019-09-26  Will Schmidt <will_schmidt@vnet.ibm.com>
      	* config/rs6000/rs6000-builtin.def: (LVSL, LVSR, LVEBX, LVEHX,
      	LVEWX, LVXL, LVXL_V2DF, LVXL_V2DI, LVXL_V4SF, LVXL_V4SI, LVXL_V8HI,
      	LVXL_V16QI, LVX, LVX_V1TI, LVX_V2DF, LVX_V2DI, LVX_V4SF, LVX_V4SI,
      	LVX_V8HI, LVX_V16QI, LVLX, LVLXL, LVRX, LVRXL, LXSDX, LXVD2X_V1TI,
      	LXVD2X_V2DF, LXVD2X_V2DI, LXVDSX, LXVW4X_V4SF, LXVW4X_V4SI,
      	LXVW4X_V8HI, LXVW4X_V16QI, LD_ELEMREV_V1TI, LD_ELEMREV_V2DF,
      	LD_ELEMREV_V2DI, LD_ELEMREV_V4SF, LD_ELEMREV_V4SI, LD_ELEMREV_V8HI,
      	LD_ELEMREV_V16QI): Use the PURE attribute.
      
      [testsuite]
      
      2019-09-26  Will Schmidt <will_schmidt@vnet.ibm.com>
      	* gcc.target/powerpc/pure-builtin-redundant-load.c:  New.
      
      From-SVN: r276163
      Will Schmidt committed
    • rs6000-builtin.def: (LVSL... · be193fa7
      [gcc]
      
      2019-09-26  Will Schmidt <will_schmidt@vnet.ibm.com>
      	* config/rs6000/rs6000-builtin.def: (LVSL, LVSR, LVEBX, LVEHX,
      	LVEWX, LVXL, LVXL_V2DF, LVXL_V2DI, LVXL_V4SF, LVXL_V4SI, LVXL_V8HI,
      	LVXL_V16QI, LVX, LVX_V1TI, LVX_V2DF, LVX_V2DI, LVX_V4SF, LVX_V4SI,
      	LVX_V8HI, LVX_V16QI, LVLX, LVLXL, LVRX, LVRXL, LXSDX, LXVD2X_V1TI,
      	LXVD2X_V2DF, LXVD2X_V2DI, LXVDSX, LXVW4X_V4SF, LXVW4X_V4SI,
      	LXVW4X_V8HI, LXVW4X_V16QI, LD_ELEMREV_V1TI, LD_ELEMREV_V2DF,
      	LD_ELEMREV_V2DI, LD_ELEMREV_V4SF, LD_ELEMREV_V4SI, LD_ELEMREV_V8HI,
      	LD_ELEMREV_V16QI): Use the PURE attribute.
      
      [testsuite]
      
      2019-09-26  Will Schmidt <will_schmidt@vnet.ibm.com>
      	* gcc.target/powerpc/pure-builtin-redundant-load.c:  New.
      
      From-SVN: r276162
      Will Schmidt committed
    • [Darwin, PPC, Mode Iterators 2/n] Eliminate picbase expanders. · 4fc1d262
      We can use the mode iterators directly with an @pattern to avoid the
      need for an expander that was only there to pass the mode through.
      
      gcc/ChangeLog:
      
      2019-09-26  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* config/rs6000/darwin.md: Replace the expanders for
      	load_macho_picbase and reload_macho_picbase with use of '@'
      	in their respective define_insns.
      	(nonlocal_goto_receiver): Pass Pmode to gen_reload_macho_picbase.
      	* config/rs6000/rs6000-logue.c (rs6000_emit_prologue): Pass
      	Pmode to gen_load_macho_picbase.
      	* config/rs6000/rs6000.md: Likewise.
      
      From-SVN: r276159
      Iain Sandoe committed
    • re PR tree-optimization/91896 (ICE in vect_get_vec_def_for_stmt_copy, at tree-vect-stmts.c:1687) · 0bfc2041
      2019-09-25  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91896
      	* tree-vect-loop.c (vectorizable_reduction): The single
      	def-use cycle optimization cannot apply when there's more
      	than one pattern stmt involved.
      
      	* gcc.dg/torture/pr91896.c: New testcase.
      
      From-SVN: r276158
      Richard Biener committed
    • tree-vect-loop.c (vect_analyze_loop_operations): Analyze loop-closed PHIs that… · 1b4dbccc
      tree-vect-loop.c (vect_analyze_loop_operations): Analyze loop-closed PHIs that are vect_internal_def.
      
      2019-09-26  Richard Biener  <rguenther@suse.de>
      
      	* tree-vect-loop.c (vect_analyze_loop_operations): Analyze
      	loop-closed PHIs that are vect_internal_def.
      	(vect_create_epilog_for_reduction): Exit early for nested cycles.
      	Simplify.
      	(vectorizable_lc_phi): New.
      	* tree-vect-stmts.c (vect_analyze_stmt): Call vectorize_lc_phi.
      	(vect_transform_stmt): Likewise.
      	* tree-vectorizer.h (stmt_vec_info_type): Add lc_phi_info_type.
      	(vectorizable_lc_phi): Declare.
      
      From-SVN: r276157
      Richard Biener committed
    • PR tree-optimization/91914 - Invalid strlen folding for offset into struct · 26cdf7bd
      gcc/testsuite/CHangeLog:
      	* gcc.dg/strlenopt-79.c: New test.
      
      From-SVN: r276156
      Martin Sebor committed
    • Define std::to_array for Debug Mode · c9fb0a85
      	* include/debug/array (to_array): Define for debug mode.
      
      From-SVN: r276155
      Jonathan Wakely committed
    • Implement C++20 constexpr changes to std::pair (P1032R1) · 7a9942f5
      	* include/bits/stl_pair.h (pair): Add _GLIBCXX20_CONSTEXPR to
      	piecewise construction constructor, assignment operators, and swap.
      	* include/std/tuple (pair::pair(piecewise_construct_t, tuple, tuple)):
      	Add _GLIBCXX20_CONSTEXPR.
      	(pair::pair(tuple, tuple, _Index_tuple, _Index_tuple)): Likewise.
      	* testsuite/20_util/pair/constexpr_assign.cc: New test.
      	* testsuite/20_util/pair/constexpr_swap.cc: New test.
      
      From-SVN: r276154
      Jonathan Wakely committed
    • Fix array index error in address_v6 comparisons · d5f7e049
      	* include/experimental/internet (operator==, operator<): Fix loop
      	condition to avoid reading past the end of the array.
      
      From-SVN: r276153
      Jonathan Wakely committed
    • Remove include directives for deleted Profile Mode headers · 8eb60b2f
      	* include/std/array: Remove references to profile mode.
      	* include/std/bitset: Likewise.
      	* include/std/deque: Likewise.
      	* include/std/forward_list: Likewise.
      	* include/std/list: Likewise.
      	* include/std/map: Likewise.
      	* include/std/set: Likewise.
      	* include/std/unordered_map: Likewise.
      	* include/std/unordered_set: Likewise.
      	* include/std/vector: Likewise.
      	* testsuite/17_intro/headers/c++1998/profile_mode.cc: New test.
      	* testsuite/17_intro/headers/c++2011/profile_mode.cc: New test.
      
      From-SVN: r276152
      Jonathan Wakely committed
    • tree-vect-loop.c (vect_analyze_loop_operations): Also call… · 9593e8e5
      tree-vect-loop.c (vect_analyze_loop_operations): Also call vectorizable_reduction for vect_double_reduction_def.
      
      2019-09-26  Richard Biener  <rguenther@suse.de>
      
      	* tree-vect-loop.c (vect_analyze_loop_operations): Also call
      	vectorizable_reduction for vect_double_reduction_def.
      	(vect_transform_loop): Likewise.
      	(vect_create_epilog_for_reduction): Move double-reduction
      	PHI creation and preheader argument setting of PHIs ...
      	(vectorizable_reduction): ... here.  Also process
      	vect_double_reduction_def PHIs, creating the vectorized
      	PHI nodes, remembering the scalar adjustment computed for
      	the epilogue in STMT_VINFO_REDUC_EPILOGUE_ADJUSTMENT.
      	Remember the original reduction code in STMT_VINFO_REDUC_CODE.
      	* tree-vectorizer.c (vec_info::new_stmt_vec_info):
      	Initialize STMT_VINFO_REDUC_CODE.
      	* tree-vectorizer.h (_stmt_vec_info::reduc_epilogue_adjustment): New.
      	(_stmt_vec_info::reduc_code): Likewise.
      	(STMT_VINFO_REDUC_EPILOGUE_ADJUSTMENT): Likewise.
      	(STMT_VINFO_REDUC_CODE): Likewise.
      
      From-SVN: r276150
      Richard Biener committed
    • Add myself as an aarch64 maintainer · 5fdd1d33
      2019-09-26  Richard Sandiford  <richard.sandiford@arm.com>
      
      	* MAINTAINERS: Add myself as an aarch64 maintainer.
      
      From-SVN: r276149
      Richard Sandiford committed
    • driver: Also prune joined switches with negation · 6fdbe419
      When -march=native is passed to host_detect_local_cpu to the backend,
      it overrides all command lines after it.  That means
      
      $ gcc -march=native -march=armv8-a
      
      is treated as
      
      $ gcc -march=armv8-a -march=native
      
      Prune joined switches with Negative and RejectNegative to allow
      -march=armv8-a to override previous -march=native on command-line.
      
      This is the same fix as was applied for i386 in SVN revision 269164 but for
      aarch64 and arm.
      
      2019-09-26  Matt Turner  <mattst88@gmail.com>
      
      	PR driver/69471
      	* config/aarch64/aarch64.opt (march=): Add Negative(march=).
      	(mtune=): Add Negative(mtune=).
      	(mcpu=): Add Negative(mcpu=).
      	* config/arm/arm.opt: Likewise.
      
      From-SVN: r276148
      Matt Turner committed
    • [arm] Implement DImode SIMD32 intrinsics · 2b5b5e24
      This patch implements some more SIMD32, but these ones have a DImode result+addend.
      Apart from that there's nothing too exciting about them.
      
      Bootstrapped and tested on arm-none-linux-gnueabihf.
      
      	* config/arm/arm.md (arm_<simd32_op>): New define_insn.
      	* config/arm/arm_acle.h (__smlald, __smlaldx, __smlsld, __smlsldx):
      	Define.
      	* config/arm/arm_acle.h: Define builtins for the above.
      	* config/arm/iterators.md (SIMD32_DIMODE): New int_iterator.
      	(simd32_op): Handle the above.
      	* config/arm/unspecs.md: Define unspecs for the above.
      
      	* gcc.target/arm/acle/simd32.c: Update test.
      
      From-SVN: r276147
      Kyrylo Tkachov committed
    • [arm] Implement non-GE-setting SIMD32 intrinsics · 53cd0ac6
      This patch is part of a series to implement the SIMD32 ACLE intrinsics [1].
      The interesting parts implementation-wise involve adding support for setting and reading
      the Q bit for saturation and the GE-bits for the packed SIMD instructions.
      That will come in a later patch.
      
      For now, this patch implements the other intrinsics that don't need anything special ;
      just a mapping from arm_acle.h function to builtin to RTL expander+unspec.
      
      I've compressed as many as I could with iterators so that we end up needing only 3
      new define_insns.
      
      Bootstrapped and tested on arm-none-linux-gnueabihf.
      
      [1] https://developer.arm.com/docs/101028/latest/data-processing-intrinsics
      
      	* config/arm/arm.md (arm_<simd32_op>): New define_insn.
      	(arm_<sup>xtb16): Likewise.
      	(arm_usada8): Likewise.
      	* config/arm/arm_acle.h (__qadd8, __qsub8, __shadd8, __shsub8,
      	__uhadd8, __uhsub8, __uqadd8, __uqsub8, __qadd16, __qasx, __qsax,
      	__qsub16, __shadd16, __shasx, __shsax, __shsub16, __uhadd16, __uhasx,
      	__uhsax, __uhsub16, __uqadd16, __uqasx, __uqsax, __uqsub16, __sxtab16,
      	__sxtb16, __uxtab16, __uxtb16): Define.
      	* config/arm/arm_acle_builtins.def: Define builtins for the above.
      	* config/arm/unspecs.md: Define unspecs for the above.
      	* config/arm/iterators.md (SIMD32_NOGE_BINOP): New int_iterator.
      	(USXTB16): Likewise.
      	(simd32_op): New int_attribute.
      	(sup): Handle UNSPEC_SXTB16, UNSPEC_UXTB16.
      	* doc/sourcebuild.exp (arm_simd32_ok): Document.
      
      	* lib/target-supports.exp
      	(check_effective_target_arm_simd32_ok_nocache): New procedure.
      	(check_effective_target_arm_simd32_ok): Likewise.
      	(add_options_for_arm_simd32): Likewise.
      	* gcc.target/arm/acle/simd32.c: New test.
      
      From-SVN: r276146
      Kyrylo Tkachov committed
    • [arm] Update FP16 tests · 1275a541
      My recent assemble_real patch (r275873) meant that we now output
      negative FP16 constants in the same way as we'd output an integer
      subreg of them.  This patch updates gcc.target/arm/fp16-* accordingly.
      
      2019-09-26  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/testsuite/
      	* gcc.target/arm/fp16-compile-alt-3.c: Expect (__fp16) -2.0
      	to be written as a negative short rather than a positive one.
      	* gcc.target/arm/fp16-compile-ieee-3.c: Likewise.
      
      From-SVN: r276145
      Richard Sandiford committed
    • [PATCH] Fix quoting in a call to internal_error · e2b1923b
      2019-09-26  Martin Jambor  <mjambor@suse.cz>
      
      	* ipa-sra.c (verify_splitting_accesses): Fix quoting in a call to
      	internal_error.
      
      From-SVN: r276144
      Martin Jambor committed
    • [PATCH] Fix continue condition in IPA-SRA's process_scan_results · 581b519f
      2019-09-26  Martin Jambor  <mjambor@suse.cz>
      
      	* ipa-sra.c (process_scan_results): Fix continue condition.
      
      From-SVN: r276143
      Martin Jambor committed
    • Add myself as aarch64 port maintainer · 16b17446
      	* MAINTAINERS: Add myself as aarch64 maintainer.
      
      From-SVN: r276142
      Kyrylo Tkachov committed
    • Add TODO_update_ssa for SLP BB vectorization (PR tree-optimization/91885). · 704bc4bb
      2019-09-26  Martin Liska  <mliska@suse.cz>
      
      	PR tree-optimization/91885
      	* tree-vectorizer.c (try_vectorize_loop_1):
      	Add TODO_update_ssa_only_virtuals similarly to what slp
      	pass does.
      2019-09-26  Martin Liska  <mliska@suse.cz>
      
      	PR tree-optimization/91885
      	* gcc.dg/pr91885.c: New test.
      
      From-SVN: r276141
      Martin Liska committed
    • [AArch64] Fix cost of (plus ... (const_int -C)) · 835d50c6
      The PLUS handling in aarch64_rtx_costs only checked for nonnegative
      constants, meaning that simple immediate subtractions like:
      
        (set (reg R1) (plus (reg R2) (const_int -8)))
      
      had a cost of two instructions.
      
      2019-09-26  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64.c (aarch64_rtx_costs): Use
      	aarch64_plus_immediate rather than aarch64_uimm12_shift
      	to test for valid PLUS immediates.
      
      From-SVN: r276140
      Richard Sandiford committed
    • Daily bump. · ec14f8ab
      From-SVN: r276139
      GCC Administrator committed
  3. 25 Sep, 2019 7 commits