1. 15 Nov, 2019 40 commits
    • testmain.exp: link against GOLIBS · ae0b0fc6
          
          Patch by Maciej W. Rozycki.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/207458
      
      From-SVN: r278316
      Ian Lance Taylor committed
    • libstdc++: Implement LWG 3149 for std::default_constructible · a31517cb
      The change approved in Belfast did not actually rename the concept from
      std::default_constructible to std::default_initializable, even though
      that was intended. That is expected to be done soon as a separate issue,
      so I'm implementing that now too.
      
      	* include/bits/iterator_concepts.h (weakly_incrementable): Adjust.
      	* include/std/concepts (default_constructible): Rename to
      	default_initializable and require default-list-initialization and
      	default-initialization to be valid (LWG 3149).
      	(semiregular): Adjust to new name.
      	* testsuite/std/concepts/concepts.lang/concept.defaultconstructible/
      	1.cc: Rename directory to concept.defaultinitializable and adjust to
      	new name.
      	* testsuite/std/concepts/concepts.lang/concept.defaultinitializable/
      	lwg3149.cc: New test.
      	* testsuite/util/testsuite_iterators.h (test_range): Adjust.
      
      From-SVN: r278314
      Jonathan Wakely committed
    • libstdc++: Implement LWG 3070 in path::lexically_relative · 01eb211b
      	* src/c++17/fs_path.cc [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
      	(is_disk_designator): New helper function.
      	(path::_Parser::root_path()): Use is_disk_designator.
      	(path::lexically_relative(const path&)): Implement resolution of
      	LWG 3070.
      	* testsuite/27_io/filesystem/path/generation/relative.cc: Check with
      	path components that look like a root-name.
      
      From-SVN: r278313
      Jonathan Wakely committed
    • m68k: add musl support · 838fd641
      Add the dynamic linker name and fix a type name to use the public name
      instead of the glibc internal name.
      
      gcc/ChangeLog:
      
      2019-11-15  Szabolcs Nagy  <szabolcs.nagy@arm.com>
      
      	* config/m68k/linux.h (MUSL_DYNAMIC_LINKER): Define.
      
      libgcc/ChangeLog:
      
      2019-11-15  Szabolcs Nagy  <szabolcs.nagy@arm.com>
      
      	* config/m68k/linux-unwind.h (struct uw_ucontext): Use sigset_t instead
      	of __sigset_t.
      
      From-SVN: r278312
      Szabolcs Nagy committed
    • Support C2x [[maybe_unused]] attribute. · 97cc1187
      This patch adds support for the C2x [[maybe_unused]] attribute, using
      the same handler as for GNU __attribute__ ((unused)).
      
      As with other such attribute support, I think turning certain warnings
      into pedwarns for usage in cases where that is a constraint violation
      can be addressed later as a bug fix, as can the C2x constraint for
      various standard attributes that they do not appear more than once
      inside a single [[]].
      
      However, the warnings that appear in c2x-attr-maybe_unused-1.c (that
      the attribute is ignored on member declarations) need to remain as
      warnings not pedwarns, since C2x does permit the attribute there.  (Or
      they could be silenced, on the basis that GCC doesn't have warnings
      for unused struct and union members so it's completely harmless that
      it's ignoring an attribute that might do something useful with another
      compiler that does have such warnings.)
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu.
      
      gcc/c:
      	* c-decl.c (std_attribute_table): Add maybe_unused.
      
      gcc/testsuite:
      	* gcc.dg/c2x-attr-maybe_unused-1.c,
      	gcc.dg/c2x-attr-maybe_unused-2.c,
      	gcc.dg/c2x-attr-maybe_unused-3.c: New tests.
      
      From-SVN: r278310
      Joseph Myers committed
    • MAINTAINERS: Change my email address as maintainer. · a91eb234
      ChangeLog:
      
      2019-11-15  Kelvin Nilsen  <kelvin@gcc.gnu.org>
      
      	* MAINTAINERS: Change my email address as maintainer.
      
      From-SVN: r278309
      Kelvin Nilsen committed
    • microblaze: fix PR65649 · 66f9ccd5
      microblaze-linux-musl build fails without this.
      
      (This is a rebase of an earlier patch posted on bugzilla.)
      
      gcc/ChangeLog:
      
      2019-11-15  Nick Clifton  <nickc@redhat.com>
      	    Szabolcs Nagy  <szabolcs.nagy@arm.com>
      
      	PR target/65649
      	* config/microblaze/microblaze.c (print_operand): Print value as long.
      
      Co-Authored-By: Szabolcs Nagy <szabolcs.nagy@arm.com>
      
      From-SVN: r278308
      Nick Clifton committed
    • ipa-inline.c (edge_badness, [...]): Revert accidental commit. · 03f00a6d
      
      	* ipa-inline.c (edge_badness, inline_small_functions): Revert
      	accidental commit.
      
      From-SVN: r278307
      Jan Hubicka committed
    • [amdgcn] Unfix registers for frame pointer · 969089ff
      Allow the registers used for the frame pointer to be used for other purposes
      if the frame pointer is not being used.
      
      2019-11-15  Kwok Cheung Yeung  <kcy@codesourcery.com>
      
      	gcc/
      	* config/gcn/gcn.h (FIXED_REGISTERS): Unfix frame pointer.
      	(CALL_USED_REGISTERS): Make frame pointer callee-saved.
      
      From-SVN: r278306
      Kwok Cheung Yeung committed
    • [amdgcn] Update lower bounds for the number of registers in non-leaf kernels · 87fdbe69
      Reduce the lower limits on the number of registers requested by non-leaf
      kernels to help improve CU occupancy.
      
      2019-11-15  Kwok Cheung Yeung  <kcy@codesourcery.com>
      
      	gcc/
      	* config/gcn/gcn.c (MAX_NORMAL_SGPR_COUNT, MAX_NORMAL_VGPR_COUNT): New.
      	(gcn_conditional_register_usage): Use constants in place of hard-coded
      	values.
      	(gcn_hsa_declare_function_name): Set lower bound for number of
      	SGPRs/VGPRs in non-leaf kernels to MAX_NORMAL_SGPR_COUNT and
      	MAX_NORMAL_VGPR_COUNT.
      
      From-SVN: r278305
      Kwok Cheung Yeung committed
    • ipa: Remove stray declaration · 1ca59cbe
      2019-11-15  Martin Jambor  <mjambor@suse.cz>
      
      	* ipa-utils.h (ipa_remove_useless_jump_functions): Remove stray
      	declaration.
      
      From-SVN: r278303
      Martin Jambor committed
    • [amdgcn] Restrict registers available to non-kernel functions · 342f9464
      Restrict the number of SGPRs and VGPRs available to non-kernel functions
      to improve compute-unit occupancy with multiple threads.
      
      2019-11-15  Kwok Cheung Yeung  <kcy@codesourcery.com>
      
      	gcc/
      	* config/gcn/gcn.c (default_requested_args): New.
      	(gcn_parse_amdgpu_hsa_kernel_attribute): Initialize requested args
      	set with default_requested_args.
      	(gcn_conditional_register_usage): Limit register usage of non-kernel
      	functions.  Reassign fixed registers if a non-standard set of args is
      	requested.
      	* config/gcn/gcn.h (FIXED_REGISTERS): Fix registers according to ABI.
      
      From-SVN: r278301
      Kwok Cheung Yeung committed
    • re PR ipa/92528 (ICE in ipa_get_parm_lattices since r278219) · 1c3c3f45
      2019-11-15  Feng Xue  <fxue@os.amperecomputing.com>
      
              PR ipa/92528
              * ipa-prop.c (update_jump_functions_after_inlining): Invalidate
              aggregate jump function when inlined-to caller has no edge summary.
      
      From-SVN: r278300
      Feng Xue committed
    • [amdgcn] Reinitialize registers for every function · 3ed8f692
      gcn_conditional_register_usage needs to be called for every function
      to set the fixed registers depending on the kernel args currently
      requested.
      
      2019-11-15  Kwok Cheung Yeung  <kcy@codesourcery.com>
      
      	gcc/
      	* config/gcn/gcn.c (gcn_init_cumulative_args): Call reinit_regs.
      
      From-SVN: r278299
      Kwok Cheung Yeung committed
    • Implement P1816R0, class template argument deduction for aggregates. · 9b41ebbc
      Rather than reimplement brace elision here, we call reshape_init and then
      discard the result.  We needed to set CLASSTYPE_NON_AGGREGATE a bit more in
      this patch, since outside a template it's set in check_bases_and_members.
      
      	* pt.c (maybe_aggr_guide, collect_ctor_idx_types): New.
      	(is_spec_or_derived): Split out from do_class_deduction.
      	(build_deduction_guide): Handle aggregate guide.
      	* class.c (finish_struct): Set CLASSTYPE_NON_AGGREGATE in a
      	template.
      	* cp-tree.h (CP_AGGREGATE_TYPE_P): An incomplete class is not an
      	aggregate.
      
      From-SVN: r278298
      Jason Merrill committed
    • [amdgcn] Use first lane of v1 for zero offset · f6e20012
      Use v1 instead of v0 when a zero-valued VGPR is needed.  This frees up
      v0 for other purposes.
      
      2019-11-15  Kwok Cheung Yeung  <kcy@codesourcery.com>
      
      	gcc/
      	* config/gcn/gcn.c (gcn_expand_prologue): Remove initialization and
      	prologue use of v0.
      	(print_operand_address): Use v1 for zero vector offset.
      
      From-SVN: r278297
      Kwok Cheung Yeung committed
    • libstdc++: Fix definition of std::nostopstate object · a0e1dcd4
      Also add <stop_token> header to PCH and Doxygen config.
      
      	* doc/doxygen/user.cfg.in: Add <stop_token>.
      	* include/precompiled/stdc++.h: Likewise.
      	* include/std/stop_token: Fix definition of std::nostopstate.
      	* testsuite/30_threads/headers/stop_token/synopsis.cc: New test.
      	* testsuite/30_threads/headers/thread/types_std_c++20.cc: New test.
      	* testsuite/30_threads/stop_token/stop_source.cc: New test.
      	* testsuite/30_threads/stop_token/stop_token.cc: Remove unnecessary
      	dg-require directives. Remove I/O and inclusion of <iostream>.
      
      From-SVN: r278296
      Jonathan Wakely committed
    • Fix vector/scalar to vector/vector conversion (PR92515) · f31e515f
      r278235 broke conversions of vector/scalar shifts into vector/vector
      shifts on targets that only provide the latter.  We need to record
      whether a conversion is required in that case too.
      
      Also, the old useless_type_conversion_p condition seemed unnecessarily
      strong, since the shift amount can have a different signedness from
      the shifted value and its vector type is never assumed to be identical
      to vectype.  The patch therefore uses tree_nop_conversion_p instead.
      
      2019-11-15  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR tree-optimization/92515
      	* tree-vect-stmts.c (vectorizable_shift): Record incompatible op1
      	types when converting a vector/scalar shift into a vector/vector one,
      	using tree_nop_conversion_p instead of useless_type_conversion_p.
      	Move the conversion code to the transform block.
      
      From-SVN: r278295
      Richard Sandiford committed
    • [mid-end][__RTL] Account for column numbers in __RTL functions · 63841daf
      
      The documentation for __RTL tests (see "(gccint) RTL Tests" info node) has the
      following snippet.
      
      ```
       The parser expects the RTL body to be in the format emitted by this
      dumping function:
      
           DEBUG_FUNCTION void
           print_rtx_function (FILE *outfile, function *fn, bool compact);
      
       when "compact" is true.  So you can capture RTL in the correct format
      from the debugger using:
      
           (gdb) print_rtx_function (stderr, cfun, true);
      
       and copy and paste the output into the body of the C function.
      ```
      
      Since r264944 print_rtx_function prints column number information, which the
      __RTL function parsing does not handle.
      
      This patch handles column number information optionally, so pre-existing __RTL
      functions still work, and the above documentation quote still holds.
      
      Note: If people would prefer to require column information I could make a
      slightly neater code and update existing tests.
      I guess this would be OK since the intended use for __RTL functions is in these
      testcases so there is no worry about other existing code.
      
      bootstrapped and regtested on aarch64
      bootstrapped and regtested on x86_64
      
      Ok for trunk?
      
      Cheers,
      Matthew
      
      gcc/ChangeLog:
      
      2019-11-15  Matthew Malcomson  <matthew.malcomson@arm.com>
      
      	* read-rtl-function.c
      	(function_reader::add_fixup_source_location): Take additional
      	parameter of a column.
      	(function_reader::maybe_read_location): Optionally parse column
      	information and pass to add_fixup_source_location.
      
      gcc/testsuite/ChangeLog:
      
      2019-11-15  Matthew Malcomson  <matthew.malcomson@arm.com>
      
      	* gcc.dg/rtl/aarch64/rtl-handle-column-numbers.c: New test.
      
      From-SVN: r278294
      Matthew Malcomson committed
    • re PR tree-optimization/92512 (ICE in gimple_op, at gimple.h:2436) · b9f71c51
      2019-11-15  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92512
      	* tree-vect-loop.c (check_reduction_path): Fix operand index
      	computability check.  Add check for second use in COND_EXPRs.
      
      	* gcc.dg/torture/pr92512.c: New testcase.
      
      From-SVN: r278293
      Richard Biener committed
    • [rs6000] Use VIEW_CONVERT_EXPR to reinterpret vectors (PR 92515) · b6d53324
      The new tree-cfg.c checking in r278245 tripped on folds of
      ALTIVEC_BUILTIN_VPERM_*, which were using gimple_convert
      rather than VIEW_CONVERT_EXPR to reinterpret the contents
      of a vector as a different type.
      
      2019-11-15  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR target/92515
      	* config/rs6000/rs6000-call.c (rs6000_gimple_fold_builtin): Use
      	VIEW_CONVERT_EXPR to reinterpret vectors as different types.
      
      From-SVN: r278292
      Richard Sandiford committed
    • [amdgcn] Fix handling of VCC_CONDITIONAL_REG · 9ecf84e6
      Classify vcc_lo and vcc_hi into the VCC_CONDITIONAL_REG class,
      and spill them into SGPRs if necessary.
      
      2019-11-15  Kwok Cheung Yeung  <kcy@codesourcery.com>
      
      	gcc/
      	* config/gcn/gcn.c (gcn_regno_reg_class): Return VCC_CONDITIONAL_REG
      	register class for VCC_LO and VCC_HI.
      	(gcn_spill_class): Use SGPR_REGS to spill registers in
      	VCC_CONDITIONAL_REG.
      
      From-SVN: r278290
      Kwok Cheung Yeung committed
    • re PR tree-optimization/92324 (ICE in expand_direct_optab_fn, at internal-fn.c:2890) · d03431d0
      2019-11-15  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92324
      	* tree-vect-loop.c (vect_create_epilog_for_reduction): Fix
      	singedness of SLP reduction epilouge operations.  Also reduce
      	the vector width for SLP reductions before doing elementwise
      	operations if possible.
      
      	* gcc.dg/vect/pr92324-4.c: New testcase.
      
      From-SVN: r278289
      Richard Biener committed
    • re PR fortran/69654 (ICE in gfc_trans_structure_assign) · 8eea62d8
      2019-11-15  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/69654
      	* trans-expr.c (gfc_trans_structure_assign): Move assignment to
      	'cm' after treatment of C pointer types and test that the type
      	has been completely built before it. Add an assert that the
      	backend_decl for each component exists.
      
      2019-11-15  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/69654
      	* gfortran.dg/derived_init_6.f90: New test.
      
      From-SVN: r278287
      Paul Thomas committed
    • libstdc++: Fix changelog whitespace · 381835c8
      From-SVN: r278286
      Jonathan Wakely committed
    • [mid-end][__RTL] Set global epilogue_completed in skip_pass · 62396659
      Set global epilogue_completed when skipping pro_and_epilogue pass
      
      When compiling RTL functions marked to start at a pass after the reload
      pass, `skip_pass` is used to mark the reload pass as having completed
      since many patterns use the `reload_completed` variable to determine
      whether to run or not.
      
      Here we do the same for the `epilogue_completed` variable and the
      pro_and_epilogue pass.
      
      Also include a testcase that relies on the availability of a
      define_split in the aarch64 backend that is conditioned on this
      `epilogue_completed` variable.
      
      regtest done on native aarch64
      regtest done on native x64_86
      
      gcc/ChangeLog:
      
      2019-11-15  Matthew Malcomson  <matthew.malcomson@arm.com>
      
      	* passes.c (skip_pass): Set epilogue_completed if skipping the
      	pro_and_epilogue pass.
      
      gcc/testsuite/ChangeLog:
      
      2019-11-15  Matthew Malcomson  <matthew.malcomson@arm.com>
      
      	* gcc.dg/rtl/aarch64/test-epilogue-set.c: New test.
      
      From-SVN: r278285
      Matthew Malcomson committed
    • Add tests for print from offload target. · 8916ba87
      2019-11-15  Andrew Stubbs  <ams@codesourcery.com>
      
      	libgomp/
      	* testsuite/libgomp.c/target-print-1.c: New file.
      	* testsuite/libgomp.fortran/target-print-1.f90: New file.
      	* testsuite/libgomp.oacc-c/print-1.c: New file.
      	* testsuite/libgomp.oacc-fortran/print-1.f90: New file.
      
      From-SVN: r278284
      Andrew Stubbs committed
    • [mid-end][__RTL] Clean state despite invalid __RTL startwith passes · 3739bcc8
      
      Hi there,
      
      When compiling an __RTL function that has an invalid "startwith" pass we
      currently don't run the dfinish cleanup pass. This means we ICE on the next
      function.
      
      This change ensures that all state is cleaned up for the next function
      to run correctly.
      
      As an example, before this change the following code would ICE when compiling
      the function `foo2` because the "peephole2" pass is not run at optimisation
      level -O0.
      
      When compiled with
      ./aarch64-none-linux-gnu-gcc -O0 -S missed-pass-error.c -o test.s
      
      ```
      int __RTL (startwith ("peephole2")) badfoo ()
      {
      (function "badfoo"
        (insn-chain
          (block 2
            (edge-from entry (flags "FALLTHRU"))
            (cnote 3 [bb 2] NOTE_INSN_BASIC_BLOCK)
            (cinsn 101 (set (reg:DI x19) (reg:DI x0)))
            (cinsn 10 (use (reg/i:SI x19)))
            (edge-to exit (flags "FALLTHRU"))
          ) ;; block 2
        ) ;; insn-chain
      ) ;; function "foo2"
      }
      
      int __RTL (startwith ("final")) foo2 ()
      {
      (function "foo2"
        (insn-chain
          (block 2
            (edge-from entry (flags "FALLTHRU"))
            (cnote 3 [bb 2] NOTE_INSN_BASIC_BLOCK)
            (cinsn 101 (set (reg:DI x19) (reg:DI x0)))
            (cinsn 10 (use (reg/i:SI x19)))
            (edge-to exit (flags "FALLTHRU"))
          ) ;; block 2
        ) ;; insn-chain
      ) ;; function "foo2"
      }
      ```
      
      Now it silently ignores the __RTL function and successfully compiles foo2.
      
      regtest done on aarch64
      regtest done on x86_64
      
      OK for trunk?
      
      gcc/ChangeLog:
      
      2019-11-15  Matthew Malcomson  <matthew.malcomson@arm.com>
      
      	* passes.c (should_skip_pass_p): Always run "dfinish".
      
      gcc/testsuite/ChangeLog:
      
      2019-11-15  Matthew Malcomson  <matthew.malcomson@arm.com>
      
      	* gcc.dg/rtl/aarch64/missed-pass-error.c: New test.
      
      From-SVN: r278283
      Matthew Malcomson committed
    • ipa-inline.c (inline_small_functions): Move assignment to next before call destroying edge. · 2e98ac86
      2019-11-15  Richard Biener  <rguenther@suse.de>
      
      	* ipa-inline.c (inline_small_functions): Move assignment
      	to next before call destroying edge.
      
      From-SVN: r278282
      Richard Biener committed
    • re PR tree-optimization/92039 (Spurious -Warray-bounds warnings building 32-bit glibc) · f0af4848
      2019-11-15  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92039
      	PR tree-optimization/91975
      	* tree-ssa-loop-ivcanon.c (constant_after_peeling): Revert
      	previous change, treat invariants consistently as non-constant.
      	(tree_estimate_loop_size): Ternary ops with just the first op
      	constant are not optimized away.
      
      	* gcc.dg/tree-ssa/cunroll-2.c: Revert to state previous to
      	unroller adjustment.
      	* g++.dg/tree-ssa/ivopts-3.C: Likewise.
      
      From-SVN: r278281
      Richard Biener committed
    • gimplify.c (gimplify_call_expr): Don't call omp_resolve_declare_variant after gimplification. · 0227ffa9
      	* gimplify.c (gimplify_call_expr): Don't call
      	omp_resolve_declare_variant after gimplification.
      	* omp-general.c (omp_context_selector_matches): For isa that might
      	match in some other function, defer if in declare simd function.
      	(omp_context_compute_score): Don't look for " score" in construct
      	trait set.  Set *score to -1 if it can't ever match.
      	(omp_resolve_declare_variant): If any variants need to be deferred,
      	don't punt immediately, but compute scores of all variants and if
      	ther eis a score winner that doesn't need to be deferred, return that.
      
      	* c-c++-common/gomp/declare-variant-13.c: New test.
      
      From-SVN: r278280
      Jakub Jelinek committed
    • re PR testsuite/92520 (new test case gcc/testsuite/gcc.dg/ipa/inline-9.c in r278220 is unresolved) · 1c9676e2
      	PR testsuite/92520
      	* gcc.dg/ipa/inline-9.c: Fix template.
      
      From-SVN: r278279
      Jan Hubicka committed
    • Fix comments typo · 53dd3bcc
      gcc/ChangeLog:
      
      	2019-11-15  Luo Xiong Hu  <luoxhu@linux.ibm.com>
      
      	* ipa-comdats.c: Fix comments typo.
      	* ipa-profile.c: Fix comments typo.
      	* tree-profile.c (gimple_gen_ic_profiler): Use the new variable
      	__gcov_indirect_call.counters and __gcov_indirect_call.callee.
      	(gimple_gen_ic_func_profiler): Likewise.
      	(pass_ipa_tree_profile::gate): Fix comments typo.
      
      From-SVN: r278278
      Luo Xiong Hu committed
    • Update iterator of next · 2aae99f7
      next is initialized only in the loop before, it is never updated
      in it's own loop.
      
      gcc/ChangeLog:
      
      	2019-11-15  Xiong Hu Luo  <luoxhu@linux.ibm.com>
      
      	* ipa-inline.c (inline_small_functions): Update iterator of next.
      
      From-SVN: r278277
      Xiong Hu Luo committed
    • compiler: fix buglet in function inlining related to sink names · f543bdd3
          
          When the compiler writes an inlinable function to the export data,
          parameter names are written out (in Export::write_name) using the
          Gogo::message_name as opposed to a raw/encoded name. This means that
          sink parameters (those named "_") get created with the name "_"
          instead of "._" (the name created by the lexer/parser). This confuses
          Gogo::is_sink_name, which looks for the latter sequence and not just
          "_". This can cause issues later on if an inlinable function is
          imported and fed through the rest of the compiler (things that are
          sinks are no recognized as such). To fix these issues, change
          Gogo::is_sink_name to return true for either variants ("_" or "._").
          
          Fixes golang/go#35586.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/207259
      
      From-SVN: r278275
      Ian Lance Taylor committed
    • Support for jthread and stop_token · 942c4b32
              * include/Makefile.am: Add <stop_token> header.
              * include/Makefile.in: Regenerate.
              * include/std/condition_variable: Add overloads for stop_token support
              to condition_variable_any.
              * include/std/stop_token: New file.
              * include/std/thread: Add jthread type.
              * include/std/version (__cpp_lib_jthread): New value.
              * testsuite/30_threads/condition_variable_any/stop_token/1.cc: New test.
              * testsuite/30_threads/condition_variable_any/stop_token/2.cc: New test.
              * testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc: New test.
              * testsuite/30_threads/jthread/1.cc: New test.
              * testsuite/30_threads/jthread/2.cc: New test.
              * testsuite/30_threads/jthread/jthread.cc: New test.
              * testsuite/30_threads/stop_token/1.cc: New test.
              * testsuite/30_threads/stop_token/2.cc: New test.
              * testsuite/30_threads/stop_token/stop_token.cc: New test.
      
      From-SVN: r278274
      Thomas Rodgers committed
    • Improve checks on C2x fallthrough attribute. · f8aea5e3
      When adding C2x attribute support, some [[fallthrough]] support
      appeared as a side-effect because of code for that attribute going
      through separate paths from the normal attribute handling.
      
      However, going through those paths without the normal attribute
      handlers meant that certain checks, such as for the invalid usage
      [[fallthrough()]], did not operate.  This patch improves checks by
      adding this attribute to the standard attribute table, so that the
      parser knows it expects no arguments, along with adding an explicit
      check for "[[fallthrough]];" attribute-declarations at top level.  As
      with other attributes, there are still cases where warnings should be
      pedwarns because C2x constraints are violated, but this patch improves
      the attribute handling.
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu.
      
      gcc/c:
      	* c-decl.c (std_attribute_table): Add fallthrough.
      	* c-parser.c (c_parser_declaration_or_fndef): Diagnose fallthrough
      	attribute at top level.
      
      gcc/c-family:
      	* c-attribs.c (handle_fallthrough_attribute): Remove static.
      	* c-common.h (handle_fallthrough_attribute): Declare.
      
      gcc/testsuite:
      	* gcc.dg/c2x-attr-fallthrough-2.c,
      	gcc.dg/c2x-attr-fallthrough-3.c: New tests.
      
      From-SVN: r278273
      Joseph Myers committed
    • Daily bump. · d3cb8f00
      From-SVN: r278272
      GCC Administrator committed
    • Implement the <array> part of C++20 p1032 Misc constexpr bits. · 1c09b664
      2019-11-14  Edward Smith-Rowland  <3dw4rd@verizon.net>
      
      	Implement the <array> part of C++20 p1032 Misc constexpr bits.
      	* include/std/array (fill, swap): Make constexpr.
      	* testsuite/23_containers/array/requirements/constexpr_fill.cc: New.
      	* testsuite/23_containers/array/requirements/constexpr_swap.cc: New.
      
      From-SVN: r278269
      Edward Smith-Rowland committed
    • Support C2x [[deprecated]] attribute. · 2cc94aa8
      This patch adds support for the C2x [[deprecated]] attribute.  All the
      actual logic for generating warnings can be identical to the GNU
      __attribute__ ((deprecated)), as can the attribute handler, so this is
      just a matter of wiring things up appropriately and adding the checks
      specified in the standard.  Unlike for C++, this patch gives
      "deprecated" an entry in a table of standard attributes rather than
      remapping it internally to the GNU attribute, as that seems a cleaner
      approach to me.
      
      Specifically, the only form of arguments to the attribute permitted in
      the standard is (string-literal); empty parentheses are not permitted
      in the case of no arguments, and a string literal (which includes
      concatenated adjacent string literals, because concatenation is an
      earlier phase of translation) cannot have further redundant
      parentheses around it.  For the case of empty parentheses, this patch
      makes the C parser disallow them for all known attributes using the
      [[]] syntax, as done for C++.  For string literals (where the C++
      front end is missing the check to avoid redundant parentheses, 92521
      filed for that issue), a special case is inserted in the C parser.
      
      A known issue that I think can be addressed later as a bug fix is that
      the warnings for the attribute being ignored in certain cases
      (attribute declarations, statements, most uses on types) ought to be
      pedwarns, as those usages are constraint violations.
      
      Bad handling of wide string literals with this attribute is also a
      pre-existing bug (91182 - although that's filed as a C++ bug, the code
      in question is language-independent, in tree.c).
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu.
      
      gcc/c:
      	* c-decl.c (std_attribute_table): New.
      	(c_init_decl_processing): Register attributes from
      	std_attribute_table.
      	* c-parser.c (c_parser_attribute_arguments): Add arguments
      	require_string and allow_empty_args.  All callers changed.
      	(c_parser_std_attribute): Set require_string argument for
      	"deprecated" attribute.
      
      gcc/c-family:
      	* c-attribs.c (handle_deprecated_attribute): Remove static.
      	* c-common.h (handle_deprecated_attribute): Declare.
      
      gcc/testsuite:
      	* gcc.dg/c2x-attr-deprecated-1.c, gcc.dg/c2x-attr-deprecated-2.c,
      	gcc.dg/c2x-attr-deprecated-3.c: New tests.
      
      From-SVN: r278268
      Joseph Myers committed