1. 04 Jun, 2019 22 commits
    • Simplify loop size when step=1 · 4a28e1f1
      2019-06-04  Marc Glisse  <marc.glisse@inria.fr>
      
      	* tree-ssa-loop-niter.c (number_of_iterations_ne): Skip
      	computations when step is 1.
      
      From-SVN: r271926
      Marc Glisse committed
    • rs6000: wf -> wa · 8d3620ba
      "wf" is just "wa".
      
      
      	* config/rs6000/constraints.md (define_register_constraint "wf"):
      	Delete.
      	* config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
      	(rs6000_init_hard_regno_mode_ok): Adjust.
      	* config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
      	RS6000_CONSTRAINT_wf.
      	* config/rs6000/rs6000.md: Adjust.
      	* config/rs6000/vsx.md: Adjust.
      	* doc/md.texi (Machine Constraints): Adjust.
      
      From-SVN: r271921
      Segher Boessenkool committed
    • AARCH64: ILP32: Fix aarch64_asan_shadow_offset · 10078f3e
      aarch64_asan_shadow_offset is using the wrong
      offset for ILP32.  Change it to be a decent one.
      
      ChangeLog:
      * config/aarch64/aarch64.c (aarch64_asan_shadow_offset):
      Fix ILP32 value.
      
      From-SVN: r271920
      Andrew Pinski committed
    • rs6000: wd -> wa · 85949949
      "wd" is just "wa".
      
      
      	* config/rs6000/constraints.md (define_register_constraint "wd"):
      	Delete.
      	* config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
      	(rs6000_init_hard_regno_mode_ok): Adjust.
      	* config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
      	RS6000_CONSTRAINT_wd.
      	* config/rs6000/rs6000.md: Adjust.
      	* config/rs6000/vsx.md: Adjust.
      	* doc/md.texi (Machine Constraints): Adjust.
      
      From-SVN: r271919
      Segher Boessenkool committed
    • rs6000: Delete Fv2 · 1598bfb0
      <Fv2> always is "wa".
      
      
      	* config/rs6000/rs6000.md (define_mode_attr Fv2): Delete.
      	(rest of file): Adjust.
      
      From-SVN: r271918
      Segher Boessenkool committed
    • rs6000: Delete VS_64reg · 11d7bd36
      <VS_64reg> now always is "wa".  Make that simplification.
      
      
      	* config/rs6000/vsx.md (define_mode_attr VS_64reg): Delete.
      	(*vsx_extract_<P:mode>_<VSX_D:mode>_load): Adjust.
      	(vsx_splat_<mode>_reg): Adjust.
      
      From-SVN: r271917
      Segher Boessenkool committed
    • rs6000: ws -> wa · cc998fd5
      "ws" is just "wa".
      
      
      	* config/rs6000/constraints.md (define_register_constraint "ws"):
      	Delete.
      	* config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
      	(rs6000_init_hard_regno_mode_ok): Adjust.
      	* config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
      	RS6000_CONSTRAINT_ws.
      	* config/rs6000/rs6000.md: Adjust.
      	* config/rs6000/vsx.md: Adjust.
      	* doc/md.texi (Machine Constraints): Adjust.
      
      From-SVN: r271916
      Segher Boessenkool committed
    • rs6000: wv -> v+p7v · 208a0405
      "wv" is "v", but only if VSX is enabled (otherwise it's NO_REGS).  So
      this patch sets "isa" "p7v" to all alternatives that used "wv" before
      (and that do not already need a later ISA), and changes the constraint.
      
      
      	* config/rs6000/constraints.md (define_register_constraint "wv"):
      	Delete.
      	* config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
      	(rs6000_init_hard_regno_mode_ok): Adjust.
      	* config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
      	RS6000_CONSTRAINT_wv.
      	* config/rs6000/rs6000.md: Adjust.
      	* config/rs6000/vsx.md: Adjust.
      	* doc/md.texi (Machine Constraints): Adjust.
      
      From-SVN: r271915
      Segher Boessenkool committed
    • rs6000: wi->wa, wt->wa · e670418f
      "wi" and "wt" mean just the same as "wa" these days.  Change them to
      the simpler name.
      
      
      	* config/rs6000/constraints.md (define_register_constraint "wi"):
      	Delete.
      	(define_register_constraint "wt"): Delete.
      	* config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
      	(rs6000_init_hard_regno_mode_ok): Adjust.
      	* config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
      	RS6000_CONSTRAINT_wi and RS6000_CONSTRAINT_wt.
      	* config/rs6000/rs6000.md: Adjust.
      	* config/rs6000/vsx.md: Adjust.
      	* doc/md.texi (Machine Constraints): Adjust.
      
      From-SVN: r271914
      Segher Boessenkool committed
    • aarch64: fix asm visibility for extern symbols · e8c47069
      Commit r271869 broke visibility declarations in asm for extern symbols, because
      the new ASM_OUTPUT_EXTERNAL hook failed to call the default hook for elf.
      
      gcc/ChangeLog:
      
      	* config/aarch64/aarch64-protos.h (aarch64_asm_output_external): Remove
      	const.
      	* config/aarch64/aarch64.c (aarch64_asm_output_external): Call
      	default_elf_asm_output_external.
      
      From-SVN: r271913
      Szabolcs Nagy committed
    • [C++ PATCH] structure tag lookup · 4ebcf1c2
      https://gcc.gnu.org/ml/gcc-patches/2019-06/msg00179.html
      	* name-lookup.c (lookup_type_scope_1): Reimplement, handle local
      	and namespace scopes separately.
      
      From-SVN: r271912
      Nathan Sidwell committed
    • PR c++/60531 - Wrong error about unresolved overloaded function · 7b9202ea
      For PR60531, GCC wrongly rejects function templates with explicitly
      specified template arguments as overloaded. They are resolved by
      resolve_nondeduced_context, which is normally called by
      cp_default_conversion through decay_conversion, but the latter have
      extra effects making them unusable here. Calling the former directly
      does work.
      
      	* typeck.c (cp_build_binary_op): See if overload can be resolved.
      	(cp_build_unary_op): Ditto.
      
      	* g++.dg/template/operator15.C: New test.
      
      From-SVN: r271910
      Harald van Dijk committed
    • Reduce accumulated garbage in constexpr evaluation. · ecdcd560
      We want to evaluate the arguments to a call before looking into the cache so
      that we have constant values, but if we then find the call in the cache we
      end up with a TREE_LIST that we don't end up using; in highly recursive
      constexpr evaluation this ends up being a large proportion of the garbage
      generated.
      
      The cxx_eval_increment_expression hunk is less important, but it's an easy
      tweak; we only use the MODIFY_EXPR to evaluate it, so after that it's
      garbage.
      
      	* constexpr.c (cxx_eval_call_expression): ggc_free any bindings we
      	don't save.
      	(cxx_eval_increment_expression): ggc_free the MODIFY_EXPR after
      	evaluating it.
      
      From-SVN: r271909
      Jason Merrill committed
    • Remove dead code in IPA ICF. · c790e3ec
      2019-06-04  Martin Liska  <mliska@suse.cz>
      
      	* ipa-icf.c (INCLUDE_LIST): Remove.
      	(sem_item_optimizer::execute): Remove call to init_wpa.
      	* ipa-icf.h (init_wpa): Remove.
      
      From-SVN: r271908
      Martin Liska committed
    • gimplify.c (gimplify_scan_omp_clauses): Don't sorry_at on lastprivate… · 7855700e
      gimplify.c (gimplify_scan_omp_clauses): Don't sorry_at on lastprivate conditional on combined for simd.
      
      	* gimplify.c (gimplify_scan_omp_clauses): Don't sorry_at on lastprivate
      	conditional on combined for simd.
      	* omp-low.c (struct omp_context): Add combined_into_simd_safelen0
      	member.
      	(lower_rec_input_clauses): For gimple_omp_for_combined_into_p max_vf 1
      	constructs, don't remove lastprivate_conditional_map, but instead set
      	ctx->combined_into_simd_safelen0 and adjust hash_map, so that it points
      	to parent construct temporaries.
      	(lower_lastprivate_clauses): Handle ctx->combined_into_simd_safelen0
      	like !ctx->lastprivate_conditional_map.
      	(lower_omp_1) <case GIMPLE_ASSIGN>: If up->combined_into_simd_safelen0,
      	use up->outer context instead of up.
      	* omp-expand.c (expand_omp_for_generic): Perform cond_var bump even if
      	gimple_omp_for_combined_p.
      	(expand_omp_for_static_nochunk): Likewise.
      	(expand_omp_for_static_chunk): Add forgotten cond_var bump that was
      	probably moved over into expand_omp_for_generic rather than being copied
      	there.
      gcc/cp/
      	* cp-tree.h (CP_OMP_CLAUSE_INFO): Allow for any clauses up to _condvar_
      	instead of only up to linear.
      gcc/testsuite/
      	* c-c++-common/gomp/lastprivate-conditional-2.c (foo): Don't expect
      	a sorry_at on any of the clauses.
      libgomp/
      	* testsuite/libgomp.c-c++-common/lastprivate-conditional-7.c: New test.
      	* testsuite/libgomp.c-c++-common/lastprivate-conditional-8.c: New test.
      	* testsuite/libgomp.c-c++-common/lastprivate-conditional-9.c: New test.
      	* testsuite/libgomp.c-c++-common/lastprivate-conditional-10.c: New test.
      
      From-SVN: r271907
      Jakub Jelinek committed
    • Fix typo in tests. · 0697ecea
      2019-06-04  Martin Liska  <mliska@suse.cz>
      
      	* value-prof.c (dump_histogram_value): Fix typo.
      	(gimple_mod_subtract_transform): Likewise.
      
      From-SVN: r271904
      Martin Liska committed
    • re PR middle-end/90726 (exponential behavior on SCEV results everywhere) · 5fd8a9cb
      2019-06-04  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/90726
      	* tree-chrec.c (chrec_contains_symbols): Add to visited.
      	(tree_contains_chrecs): Likewise.
      	(chrec_contains_symbols_defined_in_loop): Move here and avoid
      	exponential behaivor from ...
      	* tree-scalar-evolution.c (chrec_contains_symbols_defined_in_loop):
      	... here.
      	(expression_expensive_p): Avoid exponential behavior and compute
      	expanded size, rejecting any expansion.
      	* tree-ssa-loop-ivopts.c (abnormal_ssa_name_p): Remove.
      	(idx_contains_abnormal_ssa_name_p): Likewise.
      	(contains_abnormal_ssa_name_p_1): New helper for walk_tree.
      	(contains_abnormal_ssa_name_p): Simplify and use
      	walk_tree_without_duplicates.
      
      	* gcc.dg/pr90726.c: New testcase.
      
      From-SVN: r271903
      Richard Biener committed
    • re PR fortran/90738 (gfortran.dg/pointer_array_10.f90 etc. FAIL) · d62887a4
      2019-06-04  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/90738
      	Revert
      	2019-06-03  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-sccvn.c (ao_ref_init_from_vn_reference): Get original
      	full reference tree and record in ref->ref.
      	(vn_reference_lookup_3): Pass in original ref to
      	ao_ref_init_from_vn_reference.
      	(vn_reference_lookup): Likewise.
      	* tree-ssa-sccvn.h (ao_ref_init_from_vn_reference): Adjust prototype.
      	* tree-ssa-alias.c (nonoverlapping_component_refs_of_decl_p):
      	Handle non-decl bases in the original reference.
      
      	* gcc.dg/tree-ssa/alias-access-path-1.c: Scan fre1.
      
      	* gcc.dg/torture/pr90738.c: New testcase.
      
      From-SVN: r271902
      Richard Biener committed
    • IPA ICF: use fibonacci heap instead of list as a worklist. · c3af5442
      2019-06-04  Martin Liska  <mliska@suse.cz>
      
      	* ipa-icf.c (sem_item_optimizer::add_item_to_class): Count
      	number of references.
      	(sem_item_optimizer::do_congruence_step):
      	(sem_item_optimizer::worklist_push): Dump how references
      	a class has.
      	(sem_item_optimizer::worklist_pop): Use heap.
      	(sem_item_optimizer::process_cong_reduction): Likewise.
      	* ipa-icf.h: Use fibonacci_heap insteam of std::list.
      
      From-SVN: r271901
      Martin Liska committed
    • IPA ICF: rewrite references into a hash_map. · a9fae4b4
      2019-06-04  Martin Liska  <mliska@suse.cz>
      
      	* ipa-icf.h (struct sem_usage_pair_hash): New.
      	(sem_usage_pair_hash::hash): Likewise.
      	(sem_usage_pair_hash::equal): Likewise.
      	(struct sem_usage_hash): Likewise.
      	* ipa-icf.c (sem_item::sem_item): Initialize
      	referenced_by_count.
      	(sem_item::add_reference): Register a reference
      	in ref_map and not in target->usages.
      	(sem_item::setup): Remove initialization of
      	dead vectors.
      	(sem_item::~sem_item): Remove usage of dead vectors.
      	(sem_item::dump): Remove dump of references.
      	(sem_item_optimizer::sem_item_optimizer): Initialize
      	m_references.
      	(sem_item_optimizer::read_section): Remove useless
      	dump.
      	(sem_item_optimizer::parse_funcs_and_vars): Likewise here.
      	(sem_item_optimizer::build_graph): Pass m_references
      	to ::add_reference.
      	(sem_item_optimizer::verify_classes): Remove usage of dead
      	vectors.
      	(sem_item_optimizer::traverse_congruence_split): Return true
      	when a class is split.
      	(sem_item_optimizer::do_congruence_step_for_index): Use
      	hash_map for look up of (sem_item *, index). That brings
      	significant speed up.
      	(sem_item_optimizer::do_congruence_step): Return true
      	when a split is done.
      	(congruence_class::is_class_used): Use referenced_by_count.
      2019-06-04  Martin Liska  <mliska@suse.cz>
      
      	* c-c++-common/goacc/acc-icf.c: Change scanned pattern.
      	* gfortran.dg/goacc/pr78027.f90: Likewise.
      
      From-SVN: r271900
      Martin Liska committed
    • Daily bump. · 498be9cd
      From-SVN: r271899
      GCC Administrator committed
    • PR90689, ICE in extract_insn on ppc64le · c5e5536e
      	PR target/90689
      	* config/rs6000/rs6000.c (rs6000_call_aix): Correct r271753 merge
      	error.
      
      From-SVN: r271895
      Alan Modra committed
  2. 03 Jun, 2019 18 commits
    • compiler, runtime, reflect: generate unique type descriptors · 39c0aa5f
          
          Currently, the compiler already generates common symbols for type
          descriptors, so the type descriptors are unique. However, when a
          type is created through reflection, it is not deduplicated with
          compiler-generated types. As a consequence, we cannot assume type
          descriptors are unique, and cannot use pointer equality to
          compare them. Also, when constructing a reflect.Type, it has to
          go through a canonicalization map, which introduces overhead to
          reflect.TypeOf, and lock contentions in concurrent programs.
          
          In order for the reflect package to deduplicate types with
          compiler-created types, we register all the compiler-created type
          descriptors at startup time. The reflect package, when it needs
          to create a type, looks up the registry of compiler-created types
          before creates a new one. There is no lock contention since the
          registry is read-only after initialization.
          
          This lets us get rid of the canonicalization map, and also makes
          it possible to compare type descriptors with pointer equality.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/179598
      
      From-SVN: r271894
      Ian Lance Taylor committed
    • parser.c (cp_parser_unqualified_id): Use build_min_nt_loc in five places. · 8535d5aa
      2019-06-03  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* parser.c (cp_parser_unqualified_id): Use build_min_nt_loc in
            	five places.
      
      From-SVN: r271893
      Paolo Carlini committed
    • libgo: delay applying profile stack-frame skip until fixup · c533ffe0
          
          When the runtime collects a stack trace to associate it with some
          profiling event (mem alloc, mutex, etc) there is a skip count passed
          to runtime.Callers (or equivalent) to skip some known count of frames
          in order to get to the "interesting" frame corresponding to the
          profile event. Now that the profiling mechanism uses lazy fixup (when
          removing compiler artifacts like thunks, morestack calls etc), we also
          need to move the frame skipping logic after the fixup, so as to insure
          that the skip count isn't thrown off by these artifacts.
          
          Fixes golang/go#32290.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/179740
      
      From-SVN: r271892
      Ian Lance Taylor committed
    • compiler: permit inlining references to global variables · 3e6f8fe1
          
          This requires tracking all references to unexported variables, so that
          we can make them global symbols in the object file, and can export
          them so that other compilations can see the right definition for their
          own inline bodies.
          
          This introduces a syntax for referencing names defined in other
          packages: a <pNN> prefix, where NN is the package index.  This will
          need to be added to gccgoimporter, but I didn't do it yet since it
          isn't yet possible to create an object for which gccgoimporter will
          see a <pNN> prefix.
          
          This increases the number of inlinable functions in the standard
          library from 181 to 215, adding functions like context.Background.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/177920
      
      From-SVN: r271891
      Ian Lance Taylor committed
    • runtime: remove unnecessary functions calling between C and Go · a920eb0c
          
          These functions were needed during the transition of the runtime from
          C to Go, but are no longer necessary.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/179879
      
      From-SVN: r271890
      Ian Lance Taylor committed
    • rs6000: Delete -mmfpgpr · fbd4b7f3
      This patch makes the -mmfpgpr option not do anything except warn that
      the option is deprecated.
      
      
      	* config/rs6000/rs6000.h (MASK_MFPGPR): Delete.
      	* config/rs6000/rs6000.c (direct_move_p): Adjust.
      	(rs6000_secondary_reload_simple_move): Adjust.
      	(rs6000_opt_masks): Neuter the "mfpgpr" option.
      	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Adjust.
      	* config/rs6000/rs6000-cpus.def (ISA_2_5_MASKS_EMBEDDED): Adjust
      	comment.
      	(power6x): Adjust.
      	* config/rs6000/rs6000.md (floatsi<mode>2_lfiwax): Adjust.
      	(floatunssi<mode>2_lfiwzx): Adjust.
      	(fix_trunc<mode>si2_stfiwx): Adjust.
      	(fixuns_trunc<mode>si2_stfiwx): Adjust.
      	* config/rs6000/rs6000.opt (mno-mfpgpr): New.
      	(mfpgpr): Mark as deprecated.
      	* doc/extend.texi (PowerPC Function Attributes): Delete mfpgpr.
      	(Basic PowerPC Built-in Functions Available on ISA 2.05): Adjust.
      	* doc/invoke.texi (RS/6000 and PowerPC Options): Delete -mmfpgpr.
      
      gcc/testsuite/
      	* gcc.target/powerpc/mmfpgpr.c: Delete.
      
      From-SVN: r271889
      Segher Boessenkool committed
    • rs6000: Delete wg · ec7fd780
      The "wg" constraint is used for the floating point side on mfpgpr
      instructions.  Those instructions do not exist on any relevant
      hardware.  This patch deletes the constraint and the insns using it.
      
      
      	* config/rs6000/constraints.md (define_register_constraint "wg"):
      	Delete.
      	* config/rs6000/rs6000.h (enum r6000_reg_class_enum): Delete
      	RS6000_CONSTRAINT_wg.
      	* config/rs6000/rs6000.c (rs6000_debug_reg_global): Adjust.
      	(rs6000_init_hard_regno_mode_ok): Adjust.
      	* config/rs6000/rs6000.md (*mov<mode>_softfloat32, *movdi_internal64):
      	Delete "wg" alternatives.
      	* doc/md.texi (Machine Constraints): Adjust.
      
      From-SVN: r271888
      Segher Boessenkool committed
    • * sv.po: Update. · 51b2b05a
      From-SVN: r271885
      Joseph Myers committed
    • Fix uses of static_assert not guarded by C++11 check · ffef1e30
      	* include/bits/stl_map.h (map): Disable static assert for C++98 mode.
      	* include/bits/stl_multimap.h (multimap): Likewise.
      
      From-SVN: r271884
      Jonathan Wakely committed
    • runtime: fix assembly syntax · fdb1849a
          
          Some assembler doesn't accept ULL suffix. In fact the suffix
          is not really necessary. Drop it.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/180217
      
      From-SVN: r271883
      Ian Lance Taylor committed
    • bb-reorder.c (copy_bb_p): Don't overflow size calculation. · a0d87c29
      	* bb-reorder.c (copy_bb_p): Don't overflow size calculation.
      	(get_uncond_jump_length): Assert length less than INT_MAX and
      	non-negative.
      
      From-SVN: r271877
      Alan Modra committed
    • Rename variables and cleanup comments. · 7cfe71d1
      2019-06-03  François Dumont  <fdumont@gcc.gnu.org>
      
      	Rename variables and cleanup comments.
      	* include/bits/hashtable_policy.h
      	* include/bits/hashtable.h
      
      From-SVN: r271876
      François Dumont committed
    • enum-1.c: Add -fno-eliminate-unused-debug-symbols on AIX. · dff0e6f3
              * gcc.dg/debug/enum-1.c: Add -fno-eliminate-unused-debug-symbols
              on AIX.
              * g++.dg/debug/enum-1.C: Same.
      
      From-SVN: r271873
      David Edelsohn committed
    • Fix PR64242 - Longjmp expansion incorrect · 511ed59d
      Improve the fix for PR64242.  Various optimizations can change a memory
      reference into a frame access.  Given there are multiple virtual frame pointers
      which may be replaced by multiple hard frame pointers, there are no checks for
      writes to the various frame pointers.  So updates to a frame pointer tends to
      generate incorrect code.  Improve the previous fix to also add clobbers of
      several frame pointers and add a scheduling barrier.  This should work in most
      cases until GCC supports a generic "don't optimize across this instruction"
      feature.
      
      Bootstrap OK. Testcase passes on AArch64 and x86-64.  Inspected x86, Arm,
      Thumb-1 and Thumb-2 assembler which looks correct. 
      
          gcc/
      	PR middle-end/64242
      	* builtins.c (expand_builtin_longjmp): Add frame clobbers and schedule
      	block.
      	(expand_builtin_nonlocal_goto): Likewise.
      
          testsuite/
      	PR middle-end/64242
      	* gcc.c-torture/execute/pr64242.c: Update test.
      
      From-SVN: r271870
      Wilco Dijkstra committed
    • aarch64: emit .variant_pcs for aarch64_vector_pcs symbol references · b07fc91c
      A dynamic linker with lazy binding support may need to handle vector PCS
      function symbols specially, so an ELF symbol table marking was
      introduced for such symbols.
      
      Function symbol references and definitions that follow the vector PCS
      are marked in the generated assembly with .variant_pcs and then the
      STO_AARCH64_VARIANT_PCS st_other flag is set on the symbol in the object
      file.  The marking is propagated to the dynamic symbol table by the
      static linker so a dynamic linker can handle such symbols specially.
      
      For this to work, the assembler, the static linker and the dynamic
      linker has to be updated on a system.  Old assembler does not support
      the new .variant_pcs directive, so a toolchain with old binutils won't
      be able to compile code that references vector PCS symbols.
      
      gcc/ChangeLog:
      
      	* config/aarch64/aarch64-protos.h (aarch64_asm_output_alias): Declare.
      	(aarch64_asm_output_external): Declare.
      	* config/aarch64/aarch64.c (aarch64_asm_output_variant_pcs): New.
      	(aarch64_declare_function_name): Call aarch64_asm_output_variant_pcs.
      	(aarch64_asm_output_alias): New.
      	(aarch64_asm_output_external): New.
      	* config/aarch64/aarch64.h (ASM_OUTPUT_DEF_FROM_DECLS): Define.
      	(ASM_OUTPUT_EXTERNAL): Define.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/aarch64/pcs_attribute-2.c: New test.
      	* gcc.target/aarch64/torture/simd-abi-4.c: Check .variant_pcs support.
      	* lib/target-supports.exp (check_effective_target_aarch64_variant_pcs):
      	New.
      
      From-SVN: r271869
      Szabolcs Nagy committed
    • Corrections for C++2a library status table · bf5824f9
      	* doc/xml/manual/status_cxx2020.xml: Add missing row for P0920R2.
      	Fix bgcolor for P0340R3.
      	* doc/html/*: Regenerate.
      
      From-SVN: r271868
      Jonathan Wakely committed
    • PR libstdc++/90686 update C++2a library status docs · 512a80ec
      	PR libstdc++/90686
      	* doc/xml/manual/status_cxx2014.xml: Document what's missing from
      	<experimental/memory_resource>.
      	* doc/xml/manual/status_cxx2020.xml: Document status of P1285R0,
      	P0339R6, P0340R3, P1164R1 and P1357R1.
      	* doc/html/*: Regenerate.
      
      From-SVN: r271867
      Jonathan Wakely committed
    • Enforce allocator::value_type consistency for containers in C++2a · ebaf3659
      In previous standards it is undefined for a container and its allocator
      to have a different value_type. Libstdc++ has traditionally allowed it
      as an extension, automatically rebinding the allocator to the
      container's value_type. Since GCC 8.1 that extension has been disabled
      for C++11 and later when __STRICT_ANSI__ is defined (i.e. for
      -std=c++11, -std=c++14, -std=c++17 and -std=c++2a).
      
      Since the acceptance of P1463R1 into the C++2a draft an incorrect
      allocator::value_type now requires a diagnostic. This patch implements
      that by enabling the static_assert for -std=gnu++2a as well.
      
      	* doc/xml/manual/status_cxx2020.xml: Document P1463R1 status.
      	* include/bits/forward_list.h [__cplusplus > 201703]: Enable
      	allocator::value_type assertion for C++2a.
      	* include/bits/hashtable.h: Likewise.
      	* include/bits/stl_deque.h: Likewise.
      	* include/bits/stl_list.h: Likewise.
      	* include/bits/stl_map.h: Likewise.
      	* include/bits/stl_multimap.h: Likewise.
      	* include/bits/stl_multiset.h: Likewise.
      	* include/bits/stl_set.h: Likewise.
      	* include/bits/stl_vector.h: Likewise.
      	* testsuite/23_containers/deque/48101-3_neg.cc: New test.
      	* testsuite/23_containers/forward_list/48101-3_neg.cc: New test.
      	* testsuite/23_containers/list/48101-3_neg.cc: New test.
      	* testsuite/23_containers/map/48101-3_neg.cc: New test.
      	* testsuite/23_containers/multimap/48101-3_neg.cc: New test.
      	* testsuite/23_containers/multiset/48101-3_neg.cc: New test.
      	* testsuite/23_containers/set/48101-3_neg.cc: New test.
      	* testsuite/23_containers/unordered_map/48101-3_neg.cc: New test.
      	* testsuite/23_containers/unordered_multimap/48101-3_neg.cc: New test.
      	* testsuite/23_containers/unordered_multiset/48101-3_neg.cc: New test.
      	* testsuite/23_containers/unordered_set/48101-3_neg.cc: New test.
      	* testsuite/23_containers/vector/48101-3_neg.cc: New test.
      
      From-SVN: r271866
      Jonathan Wakely committed