1. 19 Jun, 2019 6 commits
  2. 18 Jun, 2019 34 commits
    • compiler: avoid copy for string([]byte) conversion used in string concatenation · 864fcf61
          
          If a string([]byte) conversion is used immediately in a string
          concatenation, we don't need to copy the backing store of the
          byte slice, as the runtime function doesn't hold any reference
          to it.
      
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/182437
      
      	* go.dg/concatstring.go: New test.
      
      From-SVN: r272460
      Cherry Zhang committed
    • Implement new serial algorithms from Parallelism TS (P0024R2) · ed920373
      These new (non-parallel) algorithms were added to C++17 along with the
      parallel algorithms, but were missing from libstdc++.
      
      	* include/bits/algorithmfwd.h: Change title of doc group.
      	* include/bits/stl_algo.h (for_each_n): Add new C++17 algorithm from
      	P0024R2.
      	* include/bits/stl_numeric.h: Define doc group and add algos to it.
      	* include/std/numeric (__is_random_access_iter): New internal trait.
      	(reduce, transform_reduce, exclusive_scan, inclusive_scan)
      	(transform_exclusive_scan, transform_inclusive_scan): Likewise.
      	* testsuite/25_algorithms/for_each/for_each_n.cc: New test.
      	* testsuite/26_numerics/exclusive_scan/1.cc: New test.
      	* testsuite/26_numerics/inclusive_scan/1.cc: New test.
      	* testsuite/26_numerics/reduce/1.cc: New test.
      	* testsuite/26_numerics/transform_exclusive_scan/1.cc: New test.
      	* testsuite/26_numerics/transform_inclusive_scan/1.cc: New test.
      	* testsuite/26_numerics/transform_reduce/1.cc: New test.
      	* testsuite/util/testsuite_iterators.h (test_container::size()): New
      	member function.
      
      From-SVN: r272459
      Jonathan Wakely committed
    • xtensa: fix PR target/90922 · 1fe39f19
      Stack pointer adjustment code in prologue missed a case of no
      callee-saved registers and a stack frame size bigger than 128 bytes.
      Handle that case.
      
      This fixes the following gcc tests with call0 ABI:
        gcc.c-torture/execute/stdarg-2.c
        gcc.dg/torture/pr55882.c
        gcc.dg/torture/pr57569.c
      
      2019-06-18  Max Filippov  <jcmvbkbc@gmail.com>
      gcc/
      	* config/xtensa/xtensa.c (xtensa_expand_prologue): Add stack
      	pointer adjustment for the case of no callee-saved registers and
      	stack frame bigger than 128 bytes.
      
      From-SVN: r272455
      Max Filippov committed
    • [PR90921] Fortran OpenACC 'declare' directive's module handling causes duplicate data clauses · 8701b671
      	gcc/fortran/
      	PR fortran/90921
      	* trans-decl.c (finish_oacc_declare): Reset module_oacc_clauses
      	before scanning each namespace.
      	gcc/testsuite/
      	PR fortran/90921
      	* gfortran.dg/goacc/declare-3.f95: Update.
      
      From-SVN: r272454
      Julian Brown committed
    • [PR85221] Set 'omp declare target', 'omp declare target link' attributes for… · ca8ecd91
      [PR85221] Set 'omp declare target', 'omp declare target link' attributes for Fortran OpenACC 'declare'd variables
      
      	gcc/fortran/
      	PR fortran/85221
      	* trans-decl.c (add_attributes_to_decl): Handle OpenACC 'declare'
      	directive.
      	gcc/testsuite/
      	PR fortran/85221
      	* gfortran.dg/goacc/declare-3.f95: New file.
      
      From-SVN: r272453
      Thomas Schwinge committed
    • [PR90859] Document status quo for "[OMP] Mappings for VLA different depending on… · 02fd3a0e
      [PR90859] Document status quo for "[OMP] Mappings for VLA different depending on 'target { c && { ! lp64 } }'"
      
      	gcc/testsuite/
      	PR middle-end/90859
      	* c-c++-common/goacc/firstprivate-mappings-1.c: Update.
      
      From-SVN: r272452
      Thomas Schwinge committed
    • Test cases to verify OpenACC 'firstprivate' mappings · 85fca03a
      	gcc/testsuite/
      	* c-c++-common/goacc/firstprivate-mappings-1.c: New file.
      	* g++.dg/goacc/firstprivate-mappings-1.C: Likewise.
      	libgomp/
      	* testsuite/libgomp.oacc-c++/firstprivate-mappings-1.C: New file.
      	* testsuite/libgomp.oacc-c-c++-common/firstprivate-mappings-1.c:
      	Likewise.
      
      From-SVN: r272451
      Thomas Schwinge committed
    • Fix description of 'GOMP_MAP_FIRSTPRIVATE' · cbdce905
      ..., which got garbled in r230275.
      
      	include/
      	* gomp-constants.h (enum gomp_map_kind): Fix description of
      	'GOMP_MAP_FIRSTPRIVATE'.
      
      From-SVN: r272450
      Thomas Schwinge committed
    • Add missing results check in 'libgomp.fortran/allocatable3.f90' · bd194a51
      	libgomp/
      	* testsuite/libgomp.fortran/allocatable3.f90: Add missing results
      	check.
      
      From-SVN: r272449
      Thomas Schwinge committed
    • Add 'libgomp.oacc-fortran/allocatable-array-1.f90' · 6652161e
      	libgomp/
      	* testsuite/libgomp.oacc-fortran/allocatable-array-1.f90: New
      	file.
      
      From-SVN: r272448
      Cesar Philippidis committed
    • [PR90743] Fortran 'allocatable' with OpenACC data/OpenMP 'target' 'map' clauses · 4017da8d
      Test what OpenMP 5.0 has to say on this topic.  And, do the same for OpenACC.
      
      	libgomp/
      	PR fortran/90743
      	* oacc-parallel.c (GOACC_parallel_keyed): Handle NULL mapping
      	case.
      	* testsuite/libgomp.fortran/target-allocatable-1-1.f90: New file.
      	* testsuite/libgomp.fortran/target-allocatable-1-2.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/allocatable-1-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/allocatable-1-2.f90: Likewise.
      
      From-SVN: r272447
      Thomas Schwinge committed
    • [PR90861] Document status quo for OpenACC 'declare' not cleaning up for VLAs · 6f7c1f65
      	gcc/testsuite/
      	PR testsuite/90861
      	* c-c++-common/goacc/declare-pr90861.c: New file.
      	libgomp/
      	PR testsuite/90861
      	* testsuite/libgomp.oacc-c-c++-common/declare-vla.c: Update.
      
      From-SVN: r272446
      Thomas Schwinge committed
    • [PR90868] Document status quo for duplicate OpenACC 'declare' directives for 'extern' variables · 5c9c7e19
      	gcc/testsuite/
      	PR testsuite/90868
      	* c-c++-common/goacc/declare-1.c: Update.
      	* c-c++-common/goacc/declare-2.c: Likewise.
      
      From-SVN: r272445
      Thomas Schwinge committed
    • [PR90862] OpenACC 'declare' ICE when nested inside another construct · 3a37d6f6
      	gcc/
      	PR middle-end/90862
      	* omp-low.c (check_omp_nesting_restrictions): Handle
      	GF_OMP_TARGET_KIND_OACC_DECLARE.
      	gcc/testsuite/
      	PR middle-end/90862
      	* c-c++-common/goacc/declare-1.c: Update.
      	* c-c++-common/goacc/declare-2.c: Likewise.
      	libgomp/
      	PR middle-end/90862
      	* testsuite/libgomp.oacc-c-c++-common/declare-1.c: Update.
      
      From-SVN: r272444
      Thomas Schwinge committed
    • re PR c++/84698 (ICE when using noexcept(noexcept()) declaration on global… · ab2c347c
      re PR c++/84698 (ICE when using noexcept(noexcept()) declaration on global friend function of template class)
      
      	PR c++/84698
      	* g++.dg/cpp0x/noexcept42.C: New test.
      
      From-SVN: r272443
      Marek Polacek committed
    • re PR c++/71548 (Invalid declaration involving template template param causes crash) · 8797dd71
      	PR c++/71548
      	* g++.dg/cpp0x/variadic177.C: New test.
      
      From-SVN: r272438
      Marek Polacek committed
    • i386.md (@cmp<mode>_1): Rename from cmp<mode>_1. · 987a3082
      	* config/i386/i386.md (@cmp<mode>_1): Rename from cmp<mode>_1.
      	(@add<mode>3_carry): Rename from add<mode>3_carry.
      	(@sub<mode>3_carry_ccc): Rename from sub<mode>3_carry_ccc.
      	(@sub<mode>3_carry_ccgz): Rename form sub<mode>3_carry_ccgz.
      	(@copysign<mode>3_const): Rename from copysign<mode>3_const.
      	(@copysign<mode>3_var): Rename from copysign<mode>3_var.
      	(@xorsign<mode>3_1): Rename from xorsign<mode>3_1.
      	(@x86_shift<mode>_adj_1): Rename from x86_shift<mode>_adj_1.
      	(@x86_shift<mode>_adj_2): Rename from x86_shift<mode>_adj_2.
      	(@x86_shift<mode>_adj_3): Rename from x86_shift<mode>_adj_3.
      	(cmpstrnsi): Use gen_cmp_1.
      	(lwp_slwpcb): Use gen_lwp_slwpcb_1.
      	(@lwp_slwpcb<mode>_1): Rename from lwp_slwpcb<mode>_1.
      	(@umonitor_<mode>): Rename from umonitor_<mode>.
      	* config/i386/i386-expand.c (ix86_expand_copysign):
      	Use gen_copysign3_const and gen_copysign3_var.
      	(ix86_expand_xorsign): Use gen_xorsign3_1.
      	(ix86_expand_branch): Use gen_sub3_carry_ccc,
      	gen_sub3_carry_ccgz and gen_cmp1.
      	(ix86_expand_int_addcc): Use gen_sub3_carry and gen_add3_carry.
      	(ix86_split_ashl): Use gen_x86_shift_adj_1 and gen_x86_shift_adj_2.
      	(ix86_split_ashr): Use gen_x86_shift_adj_1 and gen_x86_shift_adj_3.
      	(ix86_split_lshr): Ditto.
      	(ix86_expand_builtin) <case IX86_BUILTIN_UMONITOR>: Use gen_umonitor.
      
      From-SVN: r272432
      Uros Bizjak committed
    • Consolidate constexpr array handling. · 043666e0
      	* constexpr.c (eval_and_check_array_index): Split out from...
      	(cxx_eval_array_reference): ...here.
      	(cxx_eval_store_expression): Use it here, too.
      	(diag_array_subscript): Take location.  Strip location wrapper.
      
      From-SVN: r272430
      Jason Merrill committed
    • Handle constexpr conversion from and then to the same type. · 02a8575c
      	* constexpr.c (cxx_eval_constant_expression): Handle conversion from
      	and then to the same type.
      
      From-SVN: r272429
      Jason Merrill committed
    • tree.c (build_constructor): Add MEM_STAT_DECL. · 3da7d774
      	* tree.c (build_constructor): Add MEM_STAT_DECL.
      
      gcc/cp/
      	* constexpr.c (unshare_constructor): Add MEM_STAT_DECL.
      
      From-SVN: r272428
      Jason Merrill committed
    • [AArch64] Add a new CC mode for SVE conditions · 57d6f4d0
      The SVE ACLE patches need to introduce a new CC_NZC mode for the
      conditions that can be tested after a PTRUE.  In particular, LT needs
      to map to "mi"/"first" and GE to "pl"/"nfrst", instead of the normal
      CC mapping.
      
      Another advantage of using a separate mode is that we can print the SVE
      names of the conditions, which makes the output a bit easier to read.
      It therefore seems like an independent improvement that can go in now.
      
      The patch also avoids using (compare X (const_int 0)), because that gets
      folded away when used with LTU and GEU ("cc"/"last" and "cs"/"nlast").
      Just using an unspec should be OK.
      
      The full set of conditions can't be tested without other SVE ACLE patches.
      
      2019-06-18  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64-modes.def (CC_NZC): New CC_MODE.
      	* config/aarch64/aarch64-sve.md (*<optab><mode>3_cc)
      	(ptest_ptrue<mode>, while_ult<GPI:mode><PRED_ALL:mode>)
      	(*while_ult<GPI:mode><PRED_ALL:mode>_cc, *cmp<cmp_op><mode>)
      	(*cmp<cmp_op><mode>_ptest, *cmp<cmp_op><mode>_cc)
      	(*pred_cmp<cmp_op><mode>_combine, *pred_cmp<cmp_op><mode>)
      	(vec_cmp<mode><vpred>, vec_cmpu<mode><vpred>, cbranch<mode>4):
      	Use CC_NZC instead of CC.
      	* config/aarch64/aarch64.md (condjump): Print a '.' in SVE conditions.
      	* config/aarch64/aarch64.c (aarch64_sve_condition_codes): New variable.
      	(aarch64_print_operand): Handle E_CC_NZCmode.
      	(aarch64_emit_sve_ptrue_op_cc): Use gen_set_clobber_cc_nzc instead
      	of gen_set_clobber_cc.
      
      gcc/testsuite/
      	* gcc.target/aarch64/sve/struct_vect_18.c: Allow branches to
      	contain dots.
      	* gcc.target/aarch64/sve/struct_vect_19.c: Likewise.
      	* gcc.target/aarch64/sve/struct_vect_20.c: Likewise.
      	* gcc.target/aarch64/sve/struct_vect_21.c: Likewise.
      	* gcc.target/aarch64/sve/struct_vect_22.c: Likewise.
      	* gcc.target/aarch64/sve/struct_vect_23.c: Likewise.
      	* gcc.target/aarch64/sve/unroll-1.c: Likewise.
      	* gcc.target/aarch64/sve/while_1.c: Check for b.any.
      
      From-SVN: r272427
      Richard Sandiford committed
    • [AArch64] Tabify aarch64-sve.md · ea403d8b
      2019-06-18  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64-sve.md: Tabify file.
      
      From-SVN: r272426
      Richard Sandiford committed
    • [AArch64] Factor out pfalse predicate creation · e7053b0c
      Following on from the previous ptrue patch.
      
      2019-06-18  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64-protos.h (aarch64_pfalse_reg): Declare.
      	* config/aarch64/aarch64.c (aarch64_pfalse_reg): New function.
      	* config/aarch64/aarch64-sve.md: Use it.
      
      From-SVN: r272425
      Richard Sandiford committed
    • [AArch64] Factor out ptrue predicate creation · 16de3637
      This is the first step to canonicalising predicate constants so that
      they can be reused between modes.
      
      2019-06-18  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64-protos.h (aarch64_ptrue_reg): Declare.
      	* config/aarch64/aarch64.c (aarch64_ptrue_reg): New functions.
      	(aarch64_expand_sve_widened_duplicate, aarch64_expand_sve_mem_move)
      	(aarch64_maybe_expand_sve_subreg_move, aarch64_evpc_rev_local)
      	(aarch64_expand_sve_vec_cmp_int): Use it.
      	(aarch64_expand_sve_vec_cmp_float): Likewise.
      	* config/aarch64/aarch64-sve.md: Likewise throughout.
      
      From-SVN: r272424
      Richard Sandiford committed
    • [AArch64] Simplify SVE IFN_COND patterns · 32cf949c
      This patch makes the binary IFN_COND patterns use the same approach
      as the ternary patterns, with one pattern handling the cases in
      which the "else" value isn't tied to one of the other inputs.
      
      2019-06-18  Richard Sandiford  <richard.sandiford@arm.com>
      	    Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      gcc/
      	* config/aarch64/aarch64-sve.md (*cond_<optab><mode>_0): Delete.
      	(*cond_<optab><mode>_z): Fold into...
      	(*cond_<optab><mode>_any): ...here.  Also handle cases in which
      	operand 4 can be tied to operand 0 (either inherently or via RA).
      
      From-SVN: r272423
      Richard Sandiford committed
    • pr81563.c (dg-final): Check that no registers are restored from %esp. · d34c6479
      	* gcc.target/i386/pr81563.c (dg-final): Check that no
      	registers are restored from %esp.
      
      From-SVN: r272422
      Uros Bizjak committed
    • re PR debug/90900 (ICE in copy_rtx, at rtl.c:376) · aa61ac43
      2019-06-18  Richard Biener  <rguenther@suse.de>
      
      	PR debug/90900
      	* cfgexpand.c (expand_debug_expr): Treat NOTE_P DECL_RTL
      	as if optimized away.
      
      	* gcc.dg/gomp/pr90900.c: New testcase.
      
      From-SVN: r272421
      Richard Biener committed
    • pr90866-2.c: Remove a pointless declaration to avoid compilation errors on arm-none-eabi. · a9b6c90c
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/pr90866-2.c: Remove a pointless declaration
      	to avoid compilation errors on arm-none-eabi.
      
      From-SVN: r272418
      Martin Sebor committed
    • re PR ada/80590 (non-bootstrap build failure of Ada runtime) · ace11c95
      PR ada/80590
      
      	* sem_ch5.adb (Analyze_Loop_Statement): Avoid exception propagation
      	during normal processing.
      
      From-SVN: r272417
      Arnaud Charlet committed
    • Avoid undefined behaviour in std::byte operators (LWG 2950) · 0c65926f
      	* include/c_global/cstddef (std::byte): Perform arithmetic operations
      	in unsigned int to avoid promotion (LWG 2950).
      
      From-SVN: r272415
      Jonathan Wakely committed
    • aarch64: fix gcc.target/aarch64/pcs_attribute-2.c on non-gnu targets · 5ed12b58
      Move the ifunc symbol tests into a separate file with dg-require-ifunc.
      And added a base pcs ifunc symbol to the test for completeness.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/aarch64/pcs_attribute-2.c: Remove ifunc usage.
      	* gcc.target/aarch64/pcs_attribute-3.c: New test.
      
      From-SVN: r272414
      Szabolcs Nagy committed
    • [nvptx] Use define_insn parametrization · 8b72af17
      Parametrize some define_insn to simplify code in define_expands generating
      those insns.
      
      Build and reg-tested on x86_64 with nvptx accelerator.
      
      2019-06-18  Tom de Vries  <tdevries@suse.de>
      
      	* config/nvptx/nvptx-protos.h (gen_set_softstack_insn): Remove.
      	* config/nvptx/nvptx.c (gen_set_softstack_insn): Remove.
      	* config/nvptx/nvptx.md (define_insn "set_softstack_<mode>"): Rename to ...
      	(define_insn "@set_softstack_<mode>"): ... this.
      	(define_insn "omp_simt_enter_<mode>"): Rename to ...
      	(define_insn "@omp_simt_enter_<mode>"): ... this.
      	(define_insn "omp_simt_exit_<mode>"): Rename to ...
      	(define_insn "@omp_simt_exit_<mode>"): ... this.
      
      From-SVN: r272413
      Tom de Vries committed
    • [nvptx] Fix __main missing prototype warning in crt0.c · 787783a0
      Atm we see:
      ...
      libgcc/config/nvptx/crt0.c:36:1: warning: no previous prototype for \
        ‘__main’ [-Wmissing-prototypes]
      ...
      
      Fix this by adding the prototype.
      
      Build and reg-tested on nvptx.
      Build and reg-tested on x86_64 with nvptx accelerator.
      
      2019-06-18  Tom de Vries  <tdevries@suse.de>
      
      	* config/nvptx/crt0.c (__main): Declare.
      
      From-SVN: r272412
      Tom de Vries committed