1. 19 Jun, 2019 18 commits
    • re PR fortran/69499 ([F03] ICE-on-invalid on combining select type with wrong statement) · ef3e6aa3
      2019-06-19  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/69499
      	* match.c (gfc_match_select_type):  SELECT TYPE is an executable 
      	statement, and cannot appear in MODULE or SUBMODULE scope.
      
      2019-06-19  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/69499
      	* gfortran.dg/pr69499.f90: New test.
      	* gfortran.dg/module_error_1.f90: Update dg-error string.
      
      From-SVN: r272482
      Steven G. Kargl committed
    • re PR fortran/69398 ([OOP] ICE on class with duplicate dimension attribute specified) · c9935123
      2019-06-19  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/69398
      	* decl.c (attr_decl): Check for duplicate DIMENSION attribute for a
      	CLASS entity.
      
      2019-06-19  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/69398
      	* gfortran.dg/pr69398.f90: New test.
      
      From-SVN: r272481
      Steven G. Kargl committed
    • re PR fortran/87907 (ICE in resolve_contained_fntype, at fortran/resolve.c:587) · ee3aab68
      2019-06-19  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/87907
      	* resolve.c (resolve_contained_fntype): Do not dereference a NULL
      	pointer.
      
      2019-06-19  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/87907
      	* gfortran.dg/pr87907.f90: New testcase.
      
      From-SVN: r272480
      Steven G. Kargl committed
    • [Darwin] Fix two off-by-one errors in the driver. · 33f0ad50
      2019-06-19  Iain Sandoe  <iain@sandoe.co.uk>
      
              * config/darwin-driver.c (darwin_driver_init): Fix off-by-one errors
              in computing the number of options to be moved.
      
      From-SVN: r272479
      Iain Sandoe committed
    • netbsd-elf.h (SYSARCH_ARM_SYNC_ICACHE): New definition. · 742f80b1
      	*  config/arm/netbsd-elf.h (SYSARCH_ARM_SYNC_ICACHE): New definition.
      	(CLEAR_INSN_CACHE) Use it.
      
      From-SVN: r272478
      Maya Rashish committed
    • Fix value category bugs in std::reduce · 74fda2dc
      	* include/std/numeric (reduce(Iter, Iter, T, BinOp)): Fix value
      	category used in invocable check.
      	(reduce(Iter, Iter, T)): Pass initial value as rvalue.
      	* testsuite/26_numerics/reduce/2.cc: New test.
      
      From-SVN: r272477
      Jonathan Wakely committed
    • compiler: optimize string concatenations · 4349775a
          
          runtime.concatstring{2,3,4,5} are just wrappers of concatstrings.
          These wrappers don't provide any benefit, at least in the C
          calling convention we use, where passing arrays by value isn't an
          efficient thing. Change it to always use concatstrings.
          
          Also, the cap field of the slice passed to concatstrings is not
          necessary. So change it to pass a pointer and a length directly,
          which is more efficient than passing a slice header by value.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/182539
      
      From-SVN: r272476
      Ian Lance Taylor committed
    • i386.md (cmpstrnsi): Remove dead code. · 7a907dee
      	* config/i386/i386.md (cmpstrnsi): Remove dead code.
      
      From-SVN: r272474
      Uros Bizjak committed
    • Simplify setjmp and non-local goto implementation (PR84521) · 25403c41
      This fixes and simplifies the setjmp and non-local goto implementation.
      Currently the virtual frame pointer is saved when using __builtin_setjmp or
      a non-local goto.  Depending on whether a frame pointer is used, this may
      either save SP or FP with an immediate offset.  However the goto or longjmp
      always updates the hard frame pointer.
      
      A receiver veneer in the original function then assigns the hard frame pointer
      to the virtual frame pointer, which should, if it works correctly, again assign
      SP or FP.  However the special elimination code in eliminate_regs_in_insn
      doesn't do this correctly unless the frame pointer is used, and even if it
      worked by writing SP, the frame pointer would still be corrupted.
      
      A much simpler implementation is to always save and restore the hard frame
      pointer.  This avoids 2 redundant instructions which add/subtract the virtual
      frame offset.  A large amount of code can be removed as a result, including all
      implementations of TARGET_BUILTIN_SETJMP_FRAME_VALUE (all of which already use
      the hard frame pointer).  The expansion of nonlocal_goto on PA can be simplied
      to just restore the hard frame pointer. 
      
      This fixes the most obvious issues, however there are still issues on targets
      which define HARD_FRAME_POINTER_IS_FRAME_POINTER (arm, mips).
      Each function could have a different hard frame pointer, so a non-local goto
      may restore the wrong frame pointer (TARGET_BUILTIN_SETJMP_FRAME_VALUE could
      be useful for this).
      
      The i386 TARGET_BUILTIN_SETJMP_FRAME_VALUE was incorrect: if stack_realign_fp
      is true, it would save the hard frame pointer value but restore the virtual
      frame pointer which according to ix86_initial_elimination_offset can have a
      non-zero offset from the hard frame pointer.
      
      The ia64 implementation of nonlocal_goto seems incorrect since the helper
      function moves the the frame pointer value into the static chain register
      (so this patch does nothing to make it better or worse).
      
      AArch64 + x86-64 bootstrap OK, new test passes on AArch64, x86-64 and Arm.
      
      gcc/
      	PR middle-end/84521
      	* builtins.c (expand_builtin_setjmp_setup): Save
      	hard_frame_pointer_rtx.
      	(expand_builtin_setjmp_receiver): Do not emit sfp = fp move since we
      	restore fp.
      	* function.c (expand_function_start): Save hard_frame_pointer_rtx for
      	non-local goto.
      	* lra-eliminations.c (eliminate_regs_in_insn): Remove sfp = fp
      	elimination code.
      	(remove_reg_equal_offset_note): Remove unused function.
      	* reload1.c (eliminate_regs_in_insn): Remove sfp = hfp elimination
      	code.
      	* config/arc/arc.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Remove.
      	(arc_builtin_setjmp_frame_value): Remove function.
      	* config/avr/avr.c  (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Remove.
      	(avr_builtin_setjmp_frame_value): Remove function.
      	* config/i386/i386.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Remove.
      	(ix86_builtin_setjmp_frame_value): Remove function.
      	* config/pa/pa.md (nonlocal_goto): Remove FP adjustment.
      	* config/sparc/sparc.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Remove.
      	(sparc_builtin_setjmp_frame_value): Remove function.
      	* config/vax/vax.c (TARGET_BUILTIN_SETJMP_FRAME_VALUE): Remove.
      	(vax_builtin_setjmp_frame_value): Remove function.
      	* config/xtensa/xtensa.c (xtensa_frame_pointer_required): Force frame
      	pointer	if has_nonlocal_label.
      
      testsuite/
      	PR middle-end/84521
      	* gcc.c-torture/execute/pr84521.c: New test.
      
      From-SVN: r272473
      Wilco Dijkstra committed
    • md.texi: Document vec_shl_<mode> pattern. · 2e83f583
      	* doc/md.texi: Document vec_shl_<mode> pattern.
      	* optabs.def (vec_shl_optab): New optab.
      	* optabs.c (shift_amt_for_vec_perm_mask): Add shift_optab
      	argument, if == vec_shl_optab, check for left whole vector shift
      	pattern rather than right shift.
      	(expand_vec_perm_const): Add vec_shl_optab support.
      	* optabs-query.c (can_vec_perm_var_p): Mention also vec_shl optab
      	in the comment.
      	* tree-vect-generic.c (lower_vec_perm): Support permutations which
      	can be handled by vec_shl_optab.
      	* tree-vect-stmts.c (scan_store_can_perm_p): New function.
      	(check_scan_store): Use it.
      	(vectorizable_scan_store): If target can't do normal permutations,
      	try to use whole vector left shifts and if needed a VEC_COND_EXPR
      	after it.
      	* config/i386/sse.md (vec_shl_<mode>): New expander.
      
      	* gcc.dg/vect/vect-simd-8.c: If main is defined, don't include
      	tree-vect.h nor call check_vect.
      	* gcc.dg/vect/vect-simd-9.c: Likewise.
      	* gcc.dg/vect/vect-simd-10.c: New test.
      	* gcc.target/i386/sse2-vect-simd-8.c: New test.
      	* gcc.target/i386/sse2-vect-simd-9.c: New test.
      	* gcc.target/i386/sse2-vect-simd-10.c: New test.
      	* gcc.target/i386/avx2-vect-simd-8.c: New test.
      	* gcc.target/i386/avx2-vect-simd-9.c: New test.
      	* gcc.target/i386/avx2-vect-simd-10.c: New test.
      	* gcc.target/i386/avx512f-vect-simd-8.c: New test.
      	* gcc.target/i386/avx512f-vect-simd-9.c: New test.
      	* gcc.target/i386/avx512f-vect-simd-10.c: New test.
      
      From-SVN: r272472
      Jakub Jelinek committed
    • omp-low.c (lower_rec_input_clauses): Handle references properly in inscan clauses. · 6a2892a6
      	* omp-low.c (lower_rec_input_clauses): Handle references properly
      	in inscan clauses.
      	(lower_omp_scan): Likewise.
      cp/
      	* cp-gimplify.c (cp_genericize_r): Handle OMP_CLAUSE_{IN,EX}CLUSIVE
      	like OMP_CLAUSE_SHARED.
      testsuite/
      	* g++.dg/vect/simd-3.cc: New test.
      	* g++.dg/vect/simd-4.cc: New test.
      	* g++.dg/vect/simd-5.cc: New test.
      
      From-SVN: r272471
      Jakub Jelinek committed
    • * g++.dg/ubsan/pr63956.C: Adjust expected diagnostics. · 5460b103
      From-SVN: r272470
      Jakub Jelinek committed
    • Add new micro-benchmark for string operations. · 99efe97d
      2019-06-19  Martin Liska  <mliska@suse.cz>
      
      	* bench-stringop: New file.
      
      From-SVN: r272469
      Martin Liska committed
    • compiler: stack allocate a buffer for non-escaping string ops · 20b603db
          
          For string concatenation, string to/from byte or rune slice
          conversion, and int to string conversion, if the result does not
          escape, we can allocate a small (32-element, or 4-byte for int to
          string) buffer on stack, and pass it to the runtime function. If
          the result fits in the buffer, it doesn't need to do a heap
          allocation.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/182538
      
      From-SVN: r272468
      Ian Lance Taylor committed
    • re PR fortran/89103 (Allow blank format items in format strings) · 17f62b7e
      2019-06-19  Jim MacArthur  <jim.macarthur@codethink.co.uk>
      	    Mark Eggleston  <mark.eggleston@codethink.com>
      
      	PR fortran/89103
      	* gfortran.texi: Add -fdec-blank-format-item
      	* invoke.texi: Add option to list of options.
      	* invoke.texi: Add to section on Commas in FORMAT specifications.
      	* io.c (check_format): At FMT_RPAREN goto finished if
      	-fdec-blank-format-item otherwise set error string.
      	* lang.opt: Add new option.
      	* options.c (set_dec_flags): Add SET_BITFLAG for
      	flag_dec_format_defaults.
      
      	* gfortran.dg/dec_format_empty_item_1.f: New test.
      	* gfortran.dg/dec_format_empty_item_2.f: New test.
      	* gfortran.dg/dec_format_empty_item_3.f: New test.
      
      Co-Authored-By: Mark Eggleston <mark.eggleston@codethink.com>
      
      From-SVN: r272467
      Jim MacArthur committed
    • pr88834.c: Move from here... · eb54b267
      
      gcc/testsuite/ChangeLog:
      
      2019-06-19  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
      
      	* gcc.target/aarch64/pr88834.c: Move from here...
      	* gcc.target/aarch64/sve/pr88834.c: ...to here.
      
      From-SVN: r272466
      Kugan Vivekanandarajah committed
    • tree-ssa-address.c (preferred_mem_scale_factor): Handle when mem_mode is BLKmode. · 89649081
      
      gcc/ChangeLog:
      
      2019-06-19  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
      
      	* tree-ssa-address.c (preferred_mem_scale_factor): Handle when
      	mem_mode is BLKmode.
      
      From-SVN: r272465
      Kugan Vivekanandarajah committed
    • Daily bump. · 8666a0dc
      From-SVN: r272464
      GCC Administrator committed
  2. 18 Jun, 2019 22 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