Commit Graph

169137 Commits

Author SHA1 Message Date
Segher Boessenkool cd9346a157 rs6000: Simplify <VSa> for VSX_TI
When used in VSX_TI, <VSa> is always just "wa".


	* config/rs6000/vsx.md: Replace all <VSa> that are used with VSX_TI
	with just "wa".

From-SVN: r271933
2019-06-05 01:32:21 +02:00
Segher Boessenkool 72e3386e13 rs6000: ww -> wa
"ww" can always be "wa".


	* config/rs6000/constraints.md (define_register_constraint "ww"):
	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_ww.
	* config/rs6000/rs6000.md: Adjust.
	* config/rs6000/vsx.md: Adjust.
	* doc/md.texi (Machine Constraints): Adjust.

From-SVN: r271932
2019-06-05 01:31:32 +02:00
Segher Boessenkool 4c5d4de7b5 rs6000: Remove Ftrad, Fvsx, Fs; add s and sd
This removes the <Ftrad>, <Fvsx>, and <Fs> mode attributes, and creates
new <sd> and <s> mode attributes instead.  <sd> is either "s" or "d",
depending on whether the mode is single-precision or double-precision
floating point; and <s> is either "s" or nothing.


	* config/rs6000/rs6000.md (SFDF, SFDF2): Adjust comments.
	(define_mode_attr sd): New.
	(define_mode_attr s): New.
	(define_mode_attr Ftrad): Delete.
	(define_mode_attr Fvsx): Delete.
	(define_mode_attr Fs): Delete.
	(rest of file): Use the new mode attributes.
	* config.rs6000/vsx.md: Use the new mode attributes.

From-SVN: r271931
2019-06-05 01:30:43 +02:00
Segher Boessenkool 7858932efc rs6000: Simplify <VSa> for VSX_W
When used in VSX_W, <VSa> is always just "wa".


	* config/rs6000/vsx.md: Replace all <VSa> that are used with VSX_W
	with just "wa".

From-SVN: r271930
2019-06-05 01:29:31 +02:00
Segher Boessenkool 012f609e02 rs6000: Simplify VS[ra]* for VSX_[BDF]
When used in VSX_B, VSX_D, or VSX_F, both <VSr> and <VSa> are always
just "wa" now.  Similarly <VSr2> and <VSr3>.  The former of those is
always "wa", so we can remove the mode attribute completely.


	* config/rs6000/vsx.md (define_mode_attr VSr2): Delete.
	(rest of file): Replace all <VSa>, <VSr>, <VSr2>, and <VSr3> that are
	used with VSX_B, VSX_D, or VSX_F, with just "wa".

From-SVN: r271929
2019-06-05 01:27:57 +02:00
Paolo Carlini ad441c263d decl.c (grokdeclarator): Use declarator->id_loc in two additional places.
/cp
2019-06-04  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokdeclarator): Use declarator->id_loc in two
	additional places.

/testsuite
2019-06-04  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/concepts/pr60573.C: Test locations too.
	* g++.dg/cpp0x/deleted13.C: Likewise.
	* g++.dg/parse/error29.C: Likewise.
	* g++.dg/parse/qualified4.C: Likewise.
	* g++.dg/template/crash96.C Likewise.
	* g++.old-deja/g++.brendan/crash22.C Likewise.
	* g++.old-deja/g++.brendan/crash23.C Likewise.
	* g++.old-deja/g++.law/visibility10.C Likewise.
	* g++.old-deja/g++.other/decl5.C: Likewise.

From-SVN: r271928
2019-06-04 23:10:56 +00:00
Bill Schmidt e756e900e9 re PR target/78263 (Compile failure with AltiVec library on PPC64le and -std=c++11 flag)
[gcc]

2019-06-04  Bill Schmidt  <wschmidt@linux.ibm.com>

	PR target/78263
	* config/rs6000/altivec.h: Don't #define vector, pixel, bool for
	C++ with strict ANSI requirements.

[gcc/testsuite]

2019-06-04  Bill Schmidt  <wschmidt@linux.ibm.com>

	PR target/78263
	* g++.target/powerpc: New directory.
	* g++.target/powerpc/powerpc.exp: New test driver.
	* g++.target/powerpc/undef-bool-3.C: New.

From-SVN: r271927
2019-06-04 21:52:32 +00:00
Marc Glisse 4a28e1f113 Simplify loop size when step=1
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
2019-06-04 20:39:32 +00:00
Segher Boessenkool 8d3620baab rs6000: wf -> wa
"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
2019-06-04 18:51:53 +02:00
Andrew Pinski 10078f3e1d AARCH64: ILP32: Fix aarch64_asan_shadow_offset
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
2019-06-04 09:34:31 -07:00
Segher Boessenkool 85949949f2 rs6000: wd -> wa
"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
2019-06-04 18:32:25 +02:00
Segher Boessenkool 1598bfb078 rs6000: Delete Fv2
<Fv2> always is "wa".


	* config/rs6000/rs6000.md (define_mode_attr Fv2): Delete.
	(rest of file): Adjust.

From-SVN: r271918
2019-06-04 18:31:34 +02:00
Segher Boessenkool 11d7bd360e rs6000: Delete VS_64reg
<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
2019-06-04 18:30:47 +02:00
Segher Boessenkool cc998fd5f4 rs6000: ws -> wa
"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
2019-06-04 18:29:33 +02:00
Segher Boessenkool 208a040511 rs6000: wv -> v+p7v
"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
2019-06-04 18:28:46 +02:00
Segher Boessenkool e670418ff1 rs6000: wi->wa, wt->wa
"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
2019-06-04 18:27:45 +02:00
Szabolcs Nagy e8c470690a aarch64: fix asm visibility for extern symbols
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
2019-06-04 16:16:52 +00:00
Nathan Sidwell 4ebcf1c219 [C++ PATCH] structure tag lookup
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
2019-06-04 15:17:29 +00:00
Harald van Dijk 7b9202ea9e PR c++/60531 - Wrong error about unresolved overloaded function
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
2019-06-04 10:48:38 -04:00
Jason Merrill ecdcd56094 Reduce accumulated garbage in constexpr evaluation.
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
2019-06-04 10:47:40 -04:00
Martin Liska c790e3ece6 Remove dead code in IPA ICF.
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
2019-06-04 14:39:47 +00:00
Jakub Jelinek 7855700e63 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
2019-06-04 14:49:03 +02:00
Martin Liska 0697ecea7c Fix typo in tests.
2019-06-04  Martin Liska  <mliska@suse.cz>

	* value-prof.c (dump_histogram_value): Fix typo.
	(gimple_mod_subtract_transform): Likewise.

From-SVN: r271904
2019-06-04 09:39:05 +00:00
Richard Biener 5fd8a9cb5b re PR middle-end/90726 (exponential behavior on SCEV results everywhere)
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
2019-06-04 09:05:10 +00:00
Richard Biener d62887a42b re PR fortran/90738 (gfortran.dg/pointer_array_10.f90 etc. FAIL)
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
2019-06-04 08:09:16 +00:00
Martin Liska c3af544289 IPA ICF: use fibonacci heap instead of list as a worklist.
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
2019-06-04 07:53:08 +00:00
Martin Liska a9fae4b47f IPA ICF: rewrite references into a hash_map.
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
2019-06-04 07:52:51 +00:00
GCC Administrator 498be9cd46 Daily bump.
From-SVN: r271899
2019-06-04 00:16:16 +00:00
Alan Modra c5e5536e3b PR90689, ICE in extract_insn on ppc64le
PR target/90689
	* config/rs6000/rs6000.c (rs6000_call_aix): Correct r271753 merge
	error.

From-SVN: r271895
2019-06-04 09:43:07 +09:30
Ian Lance Taylor 39c0aa5f74 compiler, runtime, reflect: generate unique type descriptors
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
2019-06-03 23:37:04 +00:00
Paolo Carlini 8535d5aa16 parser.c (cp_parser_unqualified_id): Use build_min_nt_loc in five places.
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
2019-06-03 23:17:09 +00:00
Ian Lance Taylor c533ffe04d libgo: delay applying profile stack-frame skip until fixup
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
2019-06-03 23:07:54 +00:00
Ian Lance Taylor 3e6f8fe1bc compiler: permit inlining references to global variables
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
2019-06-03 23:04:23 +00:00
Ian Lance Taylor a920eb0cb0 runtime: remove unnecessary functions calling between C and Go
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
2019-06-03 23:02:43 +00:00
Segher Boessenkool fbd4b7f39e rs6000: Delete -mmfpgpr
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
2019-06-04 00:36:24 +02:00
Segher Boessenkool ec7fd7807d rs6000: Delete wg
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
2019-06-04 00:33:11 +02:00
Joseph Myers 51b2b05a85 * sv.po: Update.
From-SVN: r271885
2019-06-03 23:21:39 +01:00
Jonathan Wakely ffef1e30a7 Fix uses of static_assert not guarded by C++11 check
* include/bits/stl_map.h (map): Disable static assert for C++98 mode.
	* include/bits/stl_multimap.h (multimap): Likewise.

From-SVN: r271884
2019-06-03 23:18:31 +01:00
Ian Lance Taylor fdb1849a6c runtime: fix assembly syntax
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
2019-06-03 20:06:50 +00:00
Alan Modra a0d87c29e2 bb-reorder.c (copy_bb_p): Don't overflow size calculation.
* 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
2019-06-03 11:35:47 -06:00
François Dumont 7cfe71d1d2 Rename variables and cleanup comments.
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
2019-06-03 17:08:34 +00:00
David Edelsohn dff0e6f3cd enum-1.c: Add -fno-eliminate-unused-debug-symbols on AIX.
* gcc.dg/debug/enum-1.c: Add -fno-eliminate-unused-debug-symbols
        on AIX.
        * g++.dg/debug/enum-1.C: Same.

From-SVN: r271873
2019-06-03 10:10:47 -04:00
Wilco Dijkstra 511ed59d0b Fix PR64242 - Longjmp expansion incorrect
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
2019-06-03 13:55:15 +00:00
Szabolcs Nagy b07fc91cc4 aarch64: emit .variant_pcs for aarch64_vector_pcs symbol references
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
2019-06-03 13:50:53 +00:00
Jonathan Wakely bf5824f928 Corrections for C++2a library status table
* doc/xml/manual/status_cxx2020.xml: Add missing row for P0920R2.
	Fix bgcolor for P0340R3.
	* doc/html/*: Regenerate.

From-SVN: r271868
2019-06-03 14:32:17 +01:00
Jonathan Wakely 512a80ec49 PR libstdc++/90686 update C++2a library status docs
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
2019-06-03 14:23:03 +01:00
Jonathan Wakely ebaf365963 Enforce allocator::value_type consistency for containers in C++2a
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
2019-06-03 14:22:59 +01:00
Aldy Hernandez f2b00d2ba4 tree-vrp.h (value_range_base::nonzero_p): New.
* tree-vrp.h (value_range_base::nonzero_p): New.
	(value_range_base::set_nonnull): Rename to...
	(value_range_base::set_nonzero): ...this.
	(value_range_base::set_null): Rename to...
	(value_range_base::set_zero): ...this.
	(value_range::set_nonnull): Remove.
	(value_range::set_null): Remove.
	* tree-vrp.c (range_is_null): Remove.
	(range_is_nonnull): Remove.
	(extract_range_from_binary_expr): Use value_range_base::*zero_p
	instead of range_is_*null.
	(extract_range_from_unary_expr): Same.
	(value_range_base::set_nonnull): Rename to...
	(value_range_base::set_nonzero): ...this.
	(value_range::set_nonnull): Remove.
	(value_range_base::set_null): Rename to...
	(value_range_base::set_zero): ...this.
	(value_range::set_null): Remove.
	(extract_range_from_binary_expr): Rename set_*null uses to
	set_*zero.
	(extract_range_from_unary_expr): Same.
	(union_helper): Same.
	* vr-values.c (get_value_range): Use set_*zero instead of
	set_*null.
	(vr_values::extract_range_from_binary_expr): Same.
	(vr_values::extract_range_basic): Same.

From-SVN: r271865
2019-06-03 11:28:28 +00:00
Wilco Dijkstra 49f3f45004 Fix alignment option parser (PR90684)
Fix the alignment option parser to always allow up to 4 alignments.
Now -falign-functions=16:8:8:8 no longer reports an error.

    gcc/
	PR driver/90684
	* opts.c (parse_and_check_align_values): Allow 4 alignment values.
M    gcc/ChangeLog
M    gcc/opts.c

From-SVN: r271864
2019-06-03 11:27:50 +00:00
Kyrylo Tkachov 72215009a9 [AArch64] Emit TARGET_DOTPROD-specific sequence for <us>sadv16qi
Wilco pointed out that when the Dot Product instructions are available we can use them
to generate an even more efficient expansion for the [us]sadv16qi optab.
Instead of the current:
        uabdl2  v0.8h, v1.16b, v2.16b
        uabal   v0.8h, v1.8b, v2.8b
        uadalp  v3.4s, v0.8h

we can generate:
      (1)  mov    v4.16b, 1
      (2)  uabd    v0.16b, v1.16b, v2.16b
      (3)  udot    v3.4s, v0.16b, v4.16b

Instruction (1) can be CSEd across multiple such expansions and even hoisted outside of loops,
so when this sequence appears frequently back-to-back (like in x264_r) we essentially only have 2 instructions
per sum. Also, the UDOT instruction does the byte-to-word accumulation in one step, which allows us to use
the much simpler UABD instruction before it.

This makes it a shorter and lower-latency sequence overall for targets that support it.

	* config/aarch64/iterators.md (MAX_OPP): New code attr.
	* config/aarch64/aarch64-simd.md (*aarch64_<su>abd<mode>_3): Rename to...
	(aarch64_<su>abd<mode>_3): ... This.
	(<sur>sadv16qi): Add TARGET_DOTPROD expansion.

	* gcc.target/aarch64/ssadv16qi.c: Add +nodotprod to pragma.
	* gcc.target/aarch64/usadv16qi.c: Likewise.
	* gcc.target/aarch64/ssadv16qi-dotprod.c: New test.
	* gcc.target/aarch64/usadv16qi-dotprod.c: Likewise.

From-SVN: r271863
2019-06-03 11:20:58 +00:00