]> git.ipfire.org Git - thirdparty/gcc.git/log
thirdparty/gcc.git
5 years ago[gcc]
wschmidt [Tue, 4 Jun 2019 21:52:32 +0000 (21:52 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271927 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoSimplify loop size when step=1
glisse [Tue, 4 Jun 2019 20:39:32 +0000 (20:39 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271926 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agors6000: wf -> wa
segher [Tue, 4 Jun 2019 16:51:53 +0000 (16:51 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271921 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoAARCH64: ILP32: Fix aarch64_asan_shadow_offset
pinskia [Tue, 4 Jun 2019 16:34:31 +0000 (16:34 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271920 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agors6000: wd -> wa
segher [Tue, 4 Jun 2019 16:32:25 +0000 (16:32 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271919 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agors6000: Delete Fv2
segher [Tue, 4 Jun 2019 16:31:34 +0000 (16:31 +0000)] 
rs6000: Delete Fv2

<Fv2> always is "wa".

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271918 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agors6000: Delete VS_64reg
segher [Tue, 4 Jun 2019 16:30:47 +0000 (16:30 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271917 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agors6000: ws -> wa
segher [Tue, 4 Jun 2019 16:29:33 +0000 (16:29 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271916 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agors6000: wv -> v+p7v
segher [Tue, 4 Jun 2019 16:28:46 +0000 (16:28 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271915 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agors6000: wi->wa, wt->wa
segher [Tue, 4 Jun 2019 16:27:45 +0000 (16:27 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271914 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoaarch64: fix asm visibility for extern symbols
nsz [Tue, 4 Jun 2019 16:16:52 +0000 (16:16 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271913 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[C++ PATCH] structure tag lookup
nathan [Tue, 4 Jun 2019 15:17:29 +0000 (15:17 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271912 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoPR c++/60531 - Wrong error about unresolved overloaded function
jason [Tue, 4 Jun 2019 14:48:38 +0000 (14:48 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271910 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago Reduce accumulated garbage in constexpr evaluation.
jason [Tue, 4 Jun 2019 14:47:40 +0000 (14:47 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271909 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoRemove dead code in IPA ICF.
marxin [Tue, 4 Jun 2019 14:39:47 +0000 (14:39 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271908 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * gimplify.c (gimplify_scan_omp_clauses): Don't sorry_at on lastprivate
jakub [Tue, 4 Jun 2019 12:49:03 +0000 (12:49 +0000)] 
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271907 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoFix typo in tests.
marxin [Tue, 4 Jun 2019 09:39:05 +0000 (09:39 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271904 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2019-06-04 Richard Biener <rguenther@suse.de>
rguenth [Tue, 4 Jun 2019 09:05:10 +0000 (09:05 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271903 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2019-06-04 Richard Biener <rguenther@suse.de>
rguenth [Tue, 4 Jun 2019 08:09:16 +0000 (08:09 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271902 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoIPA ICF: use fibonacci heap instead of list as a worklist.
marxin [Tue, 4 Jun 2019 07:53:08 +0000 (07:53 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271901 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoIPA ICF: rewrite references into a hash_map.
marxin [Tue, 4 Jun 2019 07:52:51 +0000 (07:52 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271900 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoDaily bump.
gccadmin [Tue, 4 Jun 2019 00:16:16 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271899 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoPR90689, ICE in extract_insn on ppc64le
amodra [Tue, 4 Jun 2019 00:13:07 +0000 (00:13 +0000)] 
PR90689, ICE in extract_insn on ppc64le

PR target/90689
* config/rs6000/rs6000.c (rs6000_call_aix): Correct r271753 merge
error.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271895 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago compiler, runtime, reflect: generate unique type descriptors
ian [Mon, 3 Jun 2019 23:37:04 +0000 (23:37 +0000)] 
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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271894 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2019-06-03 Paolo Carlini <paolo.carlini@oracle.com>
paolo [Mon, 3 Jun 2019 23:17:09 +0000 (23:17 +0000)] 
2019-06-03  Paolo Carlini  <paolo.carlini@oracle.com>

* parser.c (cp_parser_unqualified_id): Use build_min_nt_loc in
       five places.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271893 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago libgo: delay applying profile stack-frame skip until fixup
ian [Mon, 3 Jun 2019 23:07:54 +0000 (23:07 +0000)] 
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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271892 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago compiler: permit inlining references to global variables
ian [Mon, 3 Jun 2019 23:04:23 +0000 (23:04 +0000)] 
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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271891 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago runtime: remove unnecessary functions calling between C and Go
ian [Mon, 3 Jun 2019 23:02:43 +0000 (23:02 +0000)] 
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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271890 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agors6000: Delete -mmfpgpr
segher [Mon, 3 Jun 2019 22:36:24 +0000 (22:36 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271889 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agors6000: Delete wg
segher [Mon, 3 Jun 2019 22:33:11 +0000 (22:33 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271888 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * sv.po: Update.
jsm28 [Mon, 3 Jun 2019 22:21:39 +0000 (22:21 +0000)] 
* sv.po: Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271885 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoFix uses of static_assert not guarded by C++11 check
redi [Mon, 3 Jun 2019 22:18:31 +0000 (22:18 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271884 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago runtime: fix assembly syntax
ian [Mon, 3 Jun 2019 20:06:50 +0000 (20:06 +0000)] 
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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271883 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * bb-reorder.c (copy_bb_p): Don't overflow size calculation.
law [Mon, 3 Jun 2019 17:35:47 +0000 (17:35 +0000)] 
* bb-reorder.c (copy_bb_p): Don't overflow size calculation.
(get_uncond_jump_length): Assert length less than INT_MAX and
non-negative.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271877 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2019-06-03 François Dumont <fdumont@gcc.gnu.org>
fdumont [Mon, 3 Jun 2019 17:08:34 +0000 (17:08 +0000)] 
2019-06-03  François Dumont  <fdumont@gcc.gnu.org>

Rename variables and cleanup comments.
* include/bits/hashtable_policy.h
* include/bits/hashtable.h

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271876 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * gcc.dg/debug/enum-1.c: Add -fno-eliminate-unused-debug-symbols
dje [Mon, 3 Jun 2019 14:10:47 +0000 (14:10 +0000)] 
    * gcc.dg/debug/enum-1.c: Add -fno-eliminate-unused-debug-symbols
        on AIX.
        * g++.dg/debug/enum-1.C: Same.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271873 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoFix PR64242 - Longjmp expansion incorrect
wilco [Mon, 3 Jun 2019 13:55:15 +0000 (13:55 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271870 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoaarch64: emit .variant_pcs for aarch64_vector_pcs symbol references
nsz [Mon, 3 Jun 2019 13:50:53 +0000 (13:50 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271869 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoCorrections for C++2a library status table
redi [Mon, 3 Jun 2019 13:32:17 +0000 (13:32 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271868 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoPR libstdc++/90686 update C++2a library status docs
redi [Mon, 3 Jun 2019 13:23:03 +0000 (13:23 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271867 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoEnforce allocator::value_type consistency for containers in C++2a
redi [Mon, 3 Jun 2019 13:22:59 +0000 (13:22 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271866 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * tree-vrp.h (value_range_base::nonzero_p): New.
aldyh [Mon, 3 Jun 2019 11:28:28 +0000 (11:28 +0000)] 
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271865 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoFix alignment option parser (PR90684)
wilco [Mon, 3 Jun 2019 11:27:50 +0000 (11:27 +0000)] 
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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271864 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[AArch64] Emit TARGET_DOTPROD-specific sequence for <us>sadv16qi
ktkachov [Mon, 3 Jun 2019 11:20:58 +0000 (11:20 +0000)] 
[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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271863 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2019-06-03 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
prathamesh3492 [Mon, 3 Jun 2019 11:09:41 +0000 (11:09 +0000)] 
2019-06-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

* lib/target-supports.exp (add_options_for_aarch64_sve): New procedure.
(aarch64_sve_hw_bits): Call add_options_for_aarch64_sve.
(check_effective_target_aarch64_sve_hw): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271862 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoRemove Java Trees from GENERIC manual.
marxin [Mon, 3 Jun 2019 11:09:05 +0000 (11:09 +0000)] 
Remove Java Trees from GENERIC manual.

2019-06-03  Martin Liska  <mliska@suse.cz>

* doc/generic.texi: Remove Java Trees.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271861 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2019-06-03 Richard Biener <rguenther@suse.de>
rguenth [Mon, 3 Jun 2019 10:45:38 +0000 (10:45 +0000)] 
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271860 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoFix typo in index comparison of CONSTRUCTOR.
marxin [Mon, 3 Jun 2019 10:42:14 +0000 (10:42 +0000)] 
Fix typo in index comparison of CONSTRUCTOR.

2019-06-03  Martin Liska  <mliska@suse.cz>

* fold-const.c (operand_equal_p): Fix typo as compare_tree_int
returns 0 when operands are equal.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271859 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2019-06-03 Richard Biener <rguenther@suse.de>
rguenth [Mon, 3 Jun 2019 10:17:16 +0000 (10:17 +0000)] 
2019-06-03  Richard Biener  <rguenther@suse.de>

PR tree-optimization/90716
* tree-loop-distribution.c (destroy_loop): Process blocks in
correct order.

* gcc.dg/guality/pr90716.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271858 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2019-06-03 Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
prathamesh3492 [Mon, 3 Jun 2019 09:35:37 +0000 (09:35 +0000)] 
2019-06-03  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

PR target/88837
* vector-builder.h (vector_builder::count_dups): New method.
* config/aarch64/aarch64-protos.h (aarch64_expand_sve_vector_init):
Declare prototype.
* config/aarch64/aarch64/sve.md (aarch64_sve_rev64<mode>): Use @.
(vec_init<mode><Vel>): New pattern.
* config/aarch64/aarch64.c (emit_insr): New function.
(aarch64_sve_expand_vector_init_handle_trailing_constants): Likewise.
(aarch64_sve_expand_vector_init_insert_elems): Likewise.
(aarch64_sve_expand_vector_init_handle_trailing_same_elem): Likewise.
(aarch64_sve_expand_vector_init): Define two overloaded functions.

testsuite/
* gcc.target/aarch64/sve/init_1.c: New test.
* gcc.target/aarch64/sve/init_1_run.c: Likewise.
* gcc.target/aarch64/sve/init_2.c: Likewise.
* gcc.target/aarch64/sve/init_2_run.c: Likewise.
* gcc.target/aarch64/sve/init_3.c: Likewise.
* gcc.target/aarch64/sve/init_3_run.c: Likewise.
* gcc.target/aarch64/sve/init_4.c: Likewise.
* gcc.target/aarch64/sve/init_4_run.c: Likewise.
* gcc.target/aarch64/sve/init_5.c: Likewise.
* gcc.target/aarch64/sve/init_5_run.c: Likewise.
* gcc.target/aarch64/sve/init_6.c: Likewise.
* gcc.target/aarch64/sve/init_6_run.c: Likewise.
* gcc.target/aarch64/sve/init_7.c: Likewise.
* gcc.target/aarch64/sve/init_7_run.c: Likewise.
* gcc.target/aarch64/sve/init_8.c: Likewise.
* gcc.target/aarch64/sve/init_8_run.c: Likewise.
* gcc.target/aarch64/sve/init_9.c: Likewise.
* gcc.target/aarch64/sve/init_9_run.c: Likewise.
* gcc.target/aarch64/sve/init_10.c: Likewise.
* gcc.target/aarch64/sve/init_10_run.c: Likewise.
* gcc.target/aarch64/sve/init_11.c: Likewise.
* gcc.target/aarch64/sve/init_11_run.c: Likewise.
* gcc.target/aarch64/sve/init_12.c: Likewise.
* gcc.target/aarch64/sve/init_12_run.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271857 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoFix ICE in vect_slp_analyze_node_operations_1
alejandro [Mon, 3 Jun 2019 09:13:32 +0000 (09:13 +0000)] 
Fix ICE in vect_slp_analyze_node_operations_1

This patch fixes bug 90681.  It was caused by trying to SLP vectorize a non
groupped load.  We've fixed it by tweaking a bit the implementation: mark
masked loads as not vectorizable, but support them as an special case.  Then
the detect them in the test for normal non-groupped loads that was already
there.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271856 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2019-06-03 Richard Biener <rguenther@suse.de>
rguenth [Mon, 3 Jun 2019 09:03:48 +0000 (09:03 +0000)] 
2019-06-03  Richard Biener  <rguenther@suse.de>

PR testsuite/90713
* gcc.dg/gimplefe-40.c: Add -maltivec for powerpc.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271855 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoMake debug(edge) more verbose.
marxin [Mon, 3 Jun 2019 07:00:33 +0000 (07:00 +0000)] 
Make debug(edge) more verbose.

2019-06-03  Martin Liska  <mliska@suse.cz>

* cfg.c (debug): Use TDF_DETAILS for debug and
print edge info only once.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271854 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2019-05-06 H.J. Lu <hongjiu.lu@intel.com>
liuhongt [Mon, 3 Jun 2019 02:20:33 +0000 (02:20 +0000)] 
2019-05-06  H.J. Lu  <hongjiu.lu@intel.com>
    Hongtao Liu  <hongtao.liu@intel.com>

PR target/89750
PR target/86444
* config/i386/i386-expand.c (ix86_expand_sse_comi_round):
Modified, original implementation isn't correct.

2019-05-06  H.J. Lu  <hongjiu.lu@intel.com>
    Hongtao Liu  <hongtao.liu@intel.com>

PR target/89750
PR target/86444
* gcc.target/i386/avx512f-vcomisd-2.c: New.
* gcc.target/i386/avx512f-vcomisd-2.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271853 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoDaily bump.
gccadmin [Mon, 3 Jun 2019 00:16:18 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271852 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2019-06-02 Thomas Koenig <tkoenig@gcc.gnu.org>
tkoenig [Sun, 2 Jun 2019 15:18:22 +0000 (15:18 +0000)] 
2019-06-02  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/90539
* trans-expr.c (gfc_conv_subref_array_arg): If the size of the
expression can be determined to be one, treat it as contiguous.
Set likelyhood of presence of an actual argument according to
PRED_FORTRAN_ABSENT_DUMMY and likelyhood of being contiguous
according to PRED_FORTRAN_CONTIGUOUS.

2019-06-02  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/90539
* predict.def (PRED_FORTRAN_CONTIGUOUS): New predictor.

2019-06-02  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/90539
* gfortran.dg/internal_pack_24.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271844 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoDaily bump.
gccadmin [Sun, 2 Jun 2019 00:16:22 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271843 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoDarwin, x86, testsuite - adjust tests for Darwin PR90698.
iains [Sat, 1 Jun 2019 19:59:30 +0000 (19:59 +0000)] 
Darwin, x86, testsuite - adjust tests for Darwin PR90698.

We don't have support for -mcmodel={medium, large, kernel} so don't
expect tests for those things to work.

For now mark them as xfail where possible and skip where that isn't.
These changes will be logged onto the PR and therefore can be backed
out when the facility is implemented.

gcc/testsuite/ChangeLog:

2019-06-01  Iain Sandoe  <iain@sandoe.co.uk>

PR target/90698
* gcc.target/i386/pr49866.c: XFAIL for Darwin.
* gcc.target/i386/pr63538.c: Likewise.
* gcc.target/i386/pr61599-1.c: Skip for Darwin.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271839 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoPR middle-end/90694 - incorrect representation of ADDR_EXPR involving a pointer to...
msebor [Sat, 1 Jun 2019 17:27:20 +0000 (17:27 +0000)] 
PR middle-end/90694 - incorrect representation of ADDR_EXPR involving a pointer to array

gcc/ChangeLog:

PR middle-end/90694
* tree-pretty-print.c (dump_generic_node): Add parentheses.

gcc/testsuite/ChangeLog:

PR middle-end/90694
* gcc.dg/tree-ssa/dump-5.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271838 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * alias.c: Include ipa-utils.h.
hubicka [Sat, 1 Jun 2019 16:36:49 +0000 (16:36 +0000)] 
* alias.c: Include ipa-utils.h.
(get_alias_set): Try to complete ODR type via ODR type hash lookup.
* ipa-devirt.c (prevailing_odr_type): New.
* ipa-utils.h (previaling_odr_type): Declare.

* g++.dg/lto/alias-1_0.C: New testcase.
* g++.dg/lto/alias-1_1.C: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271837 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoFix changelog
ville [Sat, 1 Jun 2019 11:52:33 +0000 (11:52 +0000)] 
Fix changelog

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271836 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoPR c++/85254
ville [Sat, 1 Jun 2019 10:57:12 +0000 (10:57 +0000)] 
PR c++/85254

gcc/cp

PR c++/85254
* class.c (fixup_type_variants): Handle CLASSTYPE_FINAL.

testsuite/

PR c++/85254
* g++.dg/ext/is_final.C: Amend.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271835 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoDaily bump.
gccadmin [Sat, 1 Jun 2019 00:16:17 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271832 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoi386: Don't insert ENDBR after NOTE_INSN_DELETED_LABEL
hjl [Fri, 31 May 2019 23:59:16 +0000 (23:59 +0000)] 
i386: Don't insert ENDBR after NOTE_INSN_DELETED_LABEL

NOTE_INSN_DELETED_LABEL is used to mark what used to be a 'code_label',
but was not used for other purposes than taking its address which cannot
be used as target for indirect jumps.

Tested on Linux/x86-64 with -fcf-protection.

For x86-64 libc.so on glibc master branch (commit f43b8dd55588c3),

Before: 2961 endbr64
After:  2943 endbr64

gcc/

PR target/89355
* config/i386/i386-features.c (rest_of_insert_endbranch): Remove
NOTE_INSN_DELETED_LABEL check.

gcc/testsuite/

PR target/89355
* gcc.target/i386/cet-label-3.c: New test.
* gcc.target/i386/cet-label-4.c: Likewise.
* gcc.target/i386/cet-label-5.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271828 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * doc/xml/manual/allocator.xml: Move hoard.org back to http.
gerald [Fri, 31 May 2019 22:26:55 +0000 (22:26 +0000)] 
* doc/xml/manual/allocator.xml: Move hoard.org back to http.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271827 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * config/mips/mips.c (mips_expand_builtin_insn): Swap the 1st
law [Fri, 31 May 2019 21:40:25 +0000 (21:40 +0000)] 
* config/mips/mips.c (mips_expand_builtin_insn): Swap the 1st
and 3rd operands of the fmadd/fmsub/maddv builtin.

* gcc.target/mips/msa-fmadd.c: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271826 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * tree.h (OMP_CLAUSE__CONDTEMP__ITER): Define.
jakub [Fri, 31 May 2019 21:38:35 +0000 (21:38 +0000)] 
* tree.h (OMP_CLAUSE__CONDTEMP__ITER): Define.
* gimplify.c (gimplify_scan_omp_clauses): Allow lastprivate conditional
on OMP_SIMD if not nested inside of worksharing loop that also has
lastprivate conditional clause for the same decl.
(gimplify_omp_for): Add _condtemp_ clauses to OMP_SIMD if needed.
* omp-low.c (scan_sharing_clauses): Handle OMP_CLAUSE__CONDTEMP_ also
on simd.
(lower_rec_input_clauses): Likewise.  Handle lastprivate conditional
on simd construct.
(lower_lastprivate_conditional_clauses): Handle lastprivate conditional
on simd construct.
(lower_lastprivate_clauses): Likewise.
(lower_omp_sections): Call lower_lastprivate_conditional_clauses before
calling lower_rec_input_clauses.
(lower_omp_for): Likewise.
(lower_omp_1): Use first rather than second OMP_CLAUSE__CONDTEMP_
clause on simd construct.
* omp-expand.c (expand_omp_simd): Initialize cond_var if
OMP_CLAUSE__CONDTEMP_ clause is present.

* c-c++-common/gomp/lastprivate-conditional-2.c (foo): Don't expect
a sorry on lastprivate conditional on simd construct.
* gcc.dg/vect/vect-simd-6.c: New test.
* gcc.dg/vect/vect-simd-7.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271825 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * omp-low.c (lower_rec_simd_input_clauses): Set TREE_THIS_NOTRAP on
jakub [Fri, 31 May 2019 21:37:10 +0000 (21:37 +0000)] 
* omp-low.c (lower_rec_simd_input_clauses): Set TREE_THIS_NOTRAP on
ivar and lvar.

* gcc.dg/vect/vect-simd-5.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271824 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago runtime: drop unused C type reflection code
ian [Fri, 31 May 2019 21:32:47 +0000 (21:32 +0000)] 
runtime: drop unused C type reflection code

    In particular, drop __go_type_descriptors_equal, which is no longer
    used, and will be made obsolete by CL 179598.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/179858

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271823 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago compiler: optimize append of make
ian [Fri, 31 May 2019 21:18:39 +0000 (21:18 +0000)] 
compiler: optimize append of make

    The gc compiler recognizes append(s, make([]T, n)...), and
    generates code to directly zero the tail instead of allocating a
    new slice and copying. This CL lets the Go frontend do basically
    the same.

    The difficulty is that at the point we handle append, there may
    already be temporaries introduced (e.g. in order_evaluations),
    which makes it hard to find the append-of-make pattern. The
    compiler could "see through" the value of a temporary, but it is
    only safe to do if the temporary is not assigned multiple times.
    For this, we add tracking of assignments and uses for temporaries.

    This also helps in optimizing non-escape slice make. We already
    optimize non-escape slice make with constant len/cap to stack
    allocation. But it failed to handle things like f(make([]T, n))
    (where the slice doesn't escape and n is constant), because of
    the temporary. With tracking of temporary assignments and uses,
    it can handle this now as well.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/179597

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271822 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago compiler: handle int-to-string conversion with large integer constant
ian [Fri, 31 May 2019 19:45:37 +0000 (19:45 +0000)] 
compiler: handle int-to-string conversion with large integer constant

    Currently, Type_conversion_expression::do_is_constant thinks the
    int-to-string conversion is constant if the integer operand is
    constant, but Type_conversion_expression::do_get_backend actually
    generates a call to runtime.intstring if the integer does not fit
    in a "ushort", which makes it not suitable in constant context,
    such as static initializer.

    This CL makes it handle all constant integer input as constant,
    generating constant string.

    Fixes golang/go#32347.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/179777

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271821 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago PR c/43673
law [Fri, 31 May 2019 18:46:02 +0000 (18:46 +0000)] 
PR c/43673
* c-format.c (print_char_table, scanf_char_table): Replace BADLEN with
TEX_D32, TEX_D64 or TEX_D128.

PR c/43673
* gcc.dg/format-dfp-printf-1.c: New test.
* gcc.dg/format-dfp-scanf-1.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271820 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * cp-demangle.c: Don't define CP_DYNAMIC_ARRAYS if __STDC_NO_VLA__
law [Fri, 31 May 2019 18:25:48 +0000 (18:25 +0000)] 
* cp-demangle.c: Don't define CP_DYNAMIC_ARRAYS if __STDC_NO_VLA__
is non-zero.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271819 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago runtime: implement cheaper context switch on Linux/AMD64
ian [Fri, 31 May 2019 17:56:36 +0000 (17:56 +0000)] 
runtime: implement cheaper context switch on Linux/AMD64

    Currently, goroutine switches are implemented with libc
    getcontext/setcontext functions, which saves/restores the machine
    register states and also the signal context. This does more than
    what we need, and performs an expensive syscall.

    This CL implements a simplified version of getcontext/setcontext,
    in assembly, that only saves/restores the necessary part, i.e.
    the callee-save registers, and the PC, SP. A simplified version
    of makecontext, written in C, is also added. Currently this is
    only implemented on Linux/AMD64.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/178298

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271818 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoapply unary op to both sides of (vec_cond x cst1 cst2)
glisse [Fri, 31 May 2019 17:04:20 +0000 (17:04 +0000)] 
apply unary op to both sides of (vec_cond x cst1 cst2)

2019-05-31  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* match.pd (~(vec?cst1:cst2)): New transformation.

gcc/testsuite/
* g++.dg/tree-ssa/cprop-vcond.C: New file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271817 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoSimplify more EXACT_DIV_EXPR comparisons
glisse [Fri, 31 May 2019 16:54:30 +0000 (16:54 +0000)] 
Simplify more EXACT_DIV_EXPR comparisons

2019-05-31  Marc Glisse  <marc.glisse@inria.fr>

gcc/
* match.pd (X/[ex]D<Y/[ex]D): Handle negative denominator.
((size_t)(A /[ex] B) CMP C): New transformation.

gcc/testsuite/
* gcc.dg/tree-ssa/cmpexactdiv-3.c: New file.
* gcc.dg/tree-ssa/cmpexactdiv-4.c: New file.
* gcc.dg/Walloca-13.c: Xfail.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271816 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoNew .md construct: define_insn_and_rewrite
rsandifo [Fri, 31 May 2019 16:27:49 +0000 (16:27 +0000)] 
New .md construct: define_insn_and_rewrite

Several SVE patterns need define_insn_and_splits that generate the
same insn_code, but with different operands.  That's probably a
niche requirement, but it's cropping up often enough on the ACLE
branch that I think it would be good to have a syntactic sugar for it.

This patch therefore adds a new construct called define_insn_and_rewrite.
It's basically a define_insn_and_split with an implicit split pattern,
obtained by copying the insn pattern and replacing match_operands with
match_dups and match_operators with match_op_dups.

2019-05-31  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* doc/md.texi: Document define_insn_and_rewrite.
* rtl.def (DEFINE_INSN_AND_REWRITE): New rtx code.
* gensupport.c (queue_elem): Update comment.
(replace_operands_with_dups): New function.
(gen_rewrite_sequence): Likewise.
(process_rtx): Handle DEFINE_INSN_AND_REWRITE.
* read-rtl.c (apply_subst_iterator): Likewise.
(add_condition_to_rtx, named_rtx_p): Likewise.
(rtx_reader::read_rtx_operand): Likewise.
* config/aarch64/aarch64-sve.md
(while_ult<GPI:mode><PRED_ALL:mode>_cc): Rename to...
(*while_ult<GPI:mode><PRED_ALL:mode>_cc): ...this and use
define_insn_and_rewrite.
(*cond_<optab><mode>_any): Turn into define_insn_and_rewrites.
Remove separate define_split.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271815 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoAdd noexcept to tuple<> and simplify tuple<T1,T2> noexcept-specifiers
redi [Fri, 31 May 2019 14:58:05 +0000 (14:58 +0000)] 
Add noexcept to tuple<> and simplify tuple<T1,T2> noexcept-specifiers

* include/std/tuple (tuple<>): Add noexcept to allocator-extended
constructors.
(tuple<T1, T2>::__nothrow_default_constructible()): New helper
function.
(tuple<T1, T2>::tuple(), explicit tuple<T1, T2>::tuple()): Use helper.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271814 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * tree-ssa-alias.c (type_has_components_p): New function.
hubicka [Fri, 31 May 2019 14:16:27 +0000 (14:16 +0000)] 
* tree-ssa-alias.c (type_has_components_p): New function.
(aliasing_component_refs_p): Use it.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271813 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoFix breakage due to removing __gnu_cxx::size_t declaration
redi [Fri, 31 May 2019 13:59:19 +0000 (13:59 +0000)] 
Fix breakage due to removing __gnu_cxx::size_t declaration

Restore the using-declaration but locally in the source file, not in the
header.

* src/c++98/bitmap_allocator.cc: Add using-declaration for size_t.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271812 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago[C++PATCH] Lambda names are anonymous
nathan [Fri, 31 May 2019 13:25:46 +0000 (13:25 +0000)] 
[C++PATCH] Lambda names are anonymous

https://gcc.gnu.org/ml/gcc-patches/2019-05/msg02126.html
* cp-tree.h (IDENTIFIER_LAMBDA_P): New.
(TYPE_ANON_P): New.
(LAMBDA_TYPE_P, TYPE_UNNAMED_P):  Likewise.
(LAMBDANAME_PREFIX, LAMBDANAME_FORMAT): Delete.
(make_lambda_name): Don't declare.
* error.c (dump_aggr_type): Check for lambdas before other
anonymous names.
* lambda.c (begin_lambda_type): Use make_anon_name.
* cp-lang.c (cxx_dwarf_name): Lambda names smell anonymous.
* mangle.c (write_local_name): Likewise.
* name-lookup.c (lambda_cnt, make_lambda_name): Delete.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271811 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2019-05-31 Bill Schmidt <wschmidt@linux.ibm.com>
wschmidt [Fri, 31 May 2019 12:22:52 +0000 (12:22 +0000)] 
2019-05-31  Bill Schmidt  <wschmidt@linux.ibm.com>
    Michael Meissner  <meissner@linux.ibm.com>

* gcc.target/powerpc/cpu-future.c: Require powerpc_future_ok.
* gcc.target/powerpc/localentry-1.c: Likewise.
* gcc.target/powerpc/localentry-direct-1.c: Likewise.
* gcc.target/powerpc/notoc-direct-1.c: Likewise.
* gcc.target/powerpc/pcrel-sibcall-1.c: Likewise.
* lib/target-supports.exp (check_powerpc_future_hw_available): New.
(check_effective_target_powerpc_future_ok): New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271810 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoPR libstdc++/90682 allow set_terminate(0) and set_unexpected(0)
redi [Fri, 31 May 2019 10:35:11 +0000 (10:35 +0000)] 
PR libstdc++/90682 allow set_terminate(0) and set_unexpected(0)

Make these functions restore the default handlers when passed a null
pointer. This is consistent with std::pmr::set_default_resource(0), and
also matches the current behaviour of libc++.

In order to avoid duplicating the preprocessor condition from
eh_term_handler.cc more that into a new eh_term_handler.h header and
define a macro that can be used in both eh_term_handler.cc and
eh_terminate.cc.

PR libstdc++/90682
* libsupc++/eh_term_handler.cc: Include eh_term_handler.h to get
definition of _GLIBCXX_DEFAULT_TERM_HANDLER.
* libsupc++/eh_term_handler.h: New header defining
_GLIBCXX_DEFAULT_TERM_HANDLER.
* libsupc++/eh_terminate.cc: Include eh_term_handler.h.
(set_terminate): Restore default handler when argument is null.
(set_unexpected): Likewise.
* testsuite/18_support/set_terminate.cc: New test.
* testsuite/18_support/set_unexpected.cc: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271808 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoRemove using-declarations that add std names to __gnu_cxx
redi [Fri, 31 May 2019 10:35:07 +0000 (10:35 +0000)] 
Remove using-declarations that add std names to __gnu_cxx

These using-declarations appear to have been added for simplicity when
moving the non-standard extensions from namespace std to namespace
__gnu_cxx. Dumping all these names into namespace __gnu_cxx allows
unportable uses like __gnu_cxx::size_t and __gnu_cxx::pair, which serve
no useful purpose.

This patch removes most of the using-declarations from namespace scope,
then either qualifies names as needed or adds using-declarations at
block scope or typedefs at class scope.

* include/backward/hashtable.h (size_t, ptrdiff_t)
(forward_iterator_tag, input_iterator_tag, _Construct, _Destroy)
(distance, vector, pair, __iterator_category): Remove
using-declarations that add these names to namespace __gnu_cxx.
* include/ext/bitmap_allocator.h (size_t, ptrdiff_t): Likewise.
* include/ext/debug_allocator.h (size_t): Likewise.
* include/ext/functional (size_t, unary_function, binary_function)
(mem_fun1_t, const_mem_fun1_t, mem_fun1_ref_t, const_mem_fun1_ref_t):
Likewise.
* include/ext/malloc_allocator.h (size_t, ptrdiff_t): Likewise.
* include/ext/memory (ptrdiff_t, pair, __iterator_category): Likewise.
* include/ext/mt_allocator.h (size_t, ptrdiff_t): Likewise.
* include/ext/new_allocator.h (size_t, ptrdiff_t): Likewise.
* include/ext/numeric (iota): Fix outdated comment.
* include/ext/pool_allocator.h (size_t, ptrdiff_t): Likewise.
* include/ext/rb_tree (_Rb_tree, allocator): Likewise.
* include/ext/rope (size_t, ptrdiff_t, allocator, _Destroy): Likewise.
* include/ext/ropeimpl.h (size_t, printf, basic_ostream)
(__throw_length_error, _Destroy, std::__uninitialized_fill_n_a):
Likewise.
* include/ext/slist (size_t, ptrdiff_t, _Construct, _Destroy)
(allocator, __true_type, __false_type): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271807 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoPR libstdc++/71579 assert that type traits are not misused with incomplete types
redi [Fri, 31 May 2019 10:35:03 +0000 (10:35 +0000)] 
PR libstdc++/71579 assert that type traits are not misused with incomplete types

This patch adds static asserts for type traits misuse with incomplete
classes and unions. This gives a nice readable error message instead
of an UB and odr-violations.

Some features of the patch:
* each type trait has it's own static_assert inside. This gives better
diagnostics than the approach with putting the assert into a helper
structure and using it in each trait.
* the result of completeness check is not memorized by the compiler.
This gives no false positive after the first failed check.
* some of the compiler builtins already implement the check. But not
all of them! So the asserts are in all the type_traits that may
benefit from the check. This also makes the behavior of libstdc++ more
consistent across different (non GCC) compilers.
* std::is_base_of does not have the assert as it works well in many
cases with incomplete types

2019-05-31  Antony Polukhin  <antoshkka@gmail.com>

PR libstdc++/71579
* include/std/type_traits __type_identity, __is_complete_or_unbounded):
New helpers for checking preconditions in traits.
(is_trivial, is_trivially_copyable, is_standard_layout, is_pod)
(is_literal_type, is_empty, is_polymorphic, is_final, is_abstract)
(is_destructible, is_nothrow_destructible, is_constructible)
(is_default_constructible, is_copy_constructible)
(is_move_constructible, is_nothrow_default_constructible)
(is_nothrow_constructible, is_nothrow_copy_constructible)
(is_nothrow_move_constructible, is_copy_assignable, is_move_assignable)
(is_nothrow_assignable, is_nothrow_copy_assignable)
(is_nothrow_move_assignable, is_trivially_constructible)
(is_trivially_copy_constructible, is_trivially_move_constructible)
is_trivially_assignable, is_trivially_copy_assignable)
(is_trivially_move_assignable, is_trivially_destructible)
(alignment_of, is_swappable, is_nothrow_swappable, is_invocable)
(is_invocable_r, is_nothrow_invocable)
(has_unique_object_representations, is_aggregate): Add static_asserts
to make sure that type traits are not misused with incomplete types.
(__is_constructible_impl, __is_nothrow_default_constructible_impl)
(__is_nothrow_constructible_impl, __is_nothrow_assignable_impl): New
base characteristics without assertions that can be reused in other
traits.
* testsuite/20_util/is_complete_or_unbounded/memoization.cc: New test.
* testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc: New
test.
* testsuite/20_util/is_complete_or_unbounded/value.cc: New test.
* testsuite/20_util/is_abstract/incomplete_neg.cc: New test.
* testsuite/20_util/is_aggregate/incomplete_neg.cc: New test.
* testsuite/20_util/is_class/value.cc: Check incomplete type.
* testsuite/20_util/is_function/value.cc: Likewise.
* testsuite/20_util/is_move_constructible/incomplete_neg.cc: New test.
* testsuite/20_util/is_nothrow_move_assignable/incomplete_neg.cc: New
test.
* testsuite/20_util/is_polymorphic/incomplete_neg.cc: New test.
* testsuite/20_util/is_reference/value.cc: Check incomplete types.
* testsuite/20_util/is_unbounded_array/value.cc: Likewise.
* testsuite/20_util/is_union/value.cc: Likewise.
* testsuite/20_util/is_void/value.cc: Likewise.
* testsuite/util/testsuite_tr1.h: Add incomplete union type.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271806 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoFix random_device to work with COW strings again
redi [Fri, 31 May 2019 10:34:53 +0000 (10:34 +0000)] 
Fix random_device to work with COW strings again

Instead of duplicating the initialization functions that take string,
add a new member taking a raw pointer that can be used to convert the
constructor token from the old string to the new.

Also fix "mt19337" typos in a testcase.

* include/bits/random.h (random_device::_M_init(const char*, size_t)):
Add new private member function.
* src/c++11/cow-string-inst.cc (random_device::_M_init(const string&))
(random_device::_M_init_pretr1(const string&)): Call new private
member with string data.
* src/c++11/random.cc (random_device::_M_init(const char*, size_t)):
Define.
* testsuite/26_numerics/random/random_device/cons/default-cow.cc: New
test using COW strings.
* testsuite/26_numerics/random/random_device/cons/default.cc: Generate
a value from the device.
* testsuite/26_numerics/random/random_device/cons/token.cc: Likewise.
Fix typo in token string.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271805 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoAdd pretty print for const_tree.
marxin [Fri, 31 May 2019 10:33:14 +0000 (10:33 +0000)] 
Add pretty print for const_tree.

2019-05-31  Martin Liska  <mliska@suse.cz>

* gdbhooks.py: Add const_tree to TreePrinter.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271804 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2019-05-31 Thomas De Schampheleire <thomas.de_schampheleire@nokia.com>
rguenth [Fri, 31 May 2019 08:22:14 +0000 (08:22 +0000)] 
2019-05-31  Thomas De Schampheleire  <thomas.de_schampheleire@nokia.com>

PR debug/86964
* common.opt (feliminate-unused-debug-symbols): Enable by default.
* doc/invoke.texi (Debugging Options): Document new default of
-feliminate-unused-debug-symbols and remove restriction to 'stabs'.

* g++.dg/debug/dwarf2/fesd-any.C: Use
-fno-eliminate-unused-debug-symbols.
* g++.dg/debug/dwarf2/fesd-baseonly.C: Likewise.
* g++.dg/debug/dwarf2/fesd-none.C: Likewise.
* g++.dg/debug/dwarf2/fesd-reduced.C: Likewise.
* g++.dg/debug/dwarf2/fesd-sys.C: Likewise.
* g++.dg/debug/dwarf2/inline-var-1.C: Likewise.
* g++.dg/debug/enum-2.C: Likewise.
* gcc.dg/debug/dwarf2/fesd-any.c: Likewise.
* gcc.dg/debug/dwarf2/fesd-baseonly.c: Likewise.
* gcc.dg/debug/dwarf2/fesd-none.c: Likewise.
* gcc.dg/debug/dwarf2/fesd-reduced.c: Likewise.
* gcc.dg/debug/dwarf2/fesd-sys.c: Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271803 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago PR tree-optimization/90671
jakub [Fri, 31 May 2019 07:53:48 +0000 (07:53 +0000)] 
PR tree-optimization/90671
* tree-ssa-threadupdate.c (ssa_create_duplicates): If
template_block used to be empty on the first call, don't use
gsi_split_seq_after and gsi_insert_seq_after, but remember whole
seq with bb_seq and set it with set_bb_seq.

* gcc.dg/torture/pr90671.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271802 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoc++, testsuite - require alias support for a test.
iains [Fri, 31 May 2019 07:23:14 +0000 (07:23 +0000)] 
c++, testsuite - require alias support for a test.

The test for pr84497 uses a facility that requires alias support from
the target, and therefore fails on targets without.  Add a suitable
dg-require statement.

2019-05-31  Iain Sandoe  <iain@sandoe.co.uk>

* g++.dg/cpp0x/pr84497.C: Require alias support.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271801 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoDarwin, x86, testsuite - adjust tests for Darwin's align syntax.
iains [Fri, 31 May 2019 07:17:11 +0000 (07:17 +0000)] 
Darwin, x86, testsuite - adjust tests for Darwin's align syntax.

Darwin has a .align taking a power of 2 by default, so that some
tests expecting a byte count are failing, fixed thus.

gcc/testsuite/

2019-05-31  Iain Sandoe  <iain@sandoe.co.uk>

* gcc.target/i386/falign-functions-3.c: Adjust align syntax
and label for Darwin.
* gcc.target/i386/attr-aligned-2.c: Adjust align syntax for
Darwin.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271800 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoDarwin, x86 - We have .p2align, so declare its use.
iains [Fri, 31 May 2019 07:13:46 +0000 (07:13 +0000)] 
Darwin, x86 - We have .p2align, so declare its use.

.p2align support is present in all x86 assemblers on released
Darwin systems.

gcc/

2019-05-29  Iain Sandoe  <iain@sandoe.co.uk>

* config/i386/darwin.h (ASM_OUTPUT_MAX_SKIP_ALIGN): New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271799 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2019-05-30 Bill Schmidt <wschmidt@linux.ibm.com>
wschmidt [Fri, 31 May 2019 00:38:35 +0000 (00:38 +0000)] 
2019-05-30  Bill Schmidt  <wschmidt@linux.ibm.com>
    Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/predicates.md (pcrel_address): New define_predicate.
(prefixed_mem_operand): Likewise.
(non_prefixed_mem_operand): Likewise.
* config/rs6000/rs6000-protos.h (rs6000_prefixed_address): New
prototype.
* config/rs6000/rs6000.c (print_operand_address): Handle
PC-relative addresses.
(mode_supports_prefixed_address_p): New function.
(rs6000_prefixed_address): New function.
* config/rs6000/rs6000.h (SYMBOL_FLAG_PCREL): New #define.
(SYMBOL_REF_PCREL_P): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271798 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * fi.po, sv.po: Update.
jsm28 [Fri, 31 May 2019 00:28:14 +0000 (00:28 +0000)] 
* fi.po, sv.po: Update.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271796 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoDaily bump.
gccadmin [Fri, 31 May 2019 00:16:16 +0000 (00:16 +0000)] 
Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271795 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * gimplify.c (enum gimplify_omp_var_data): Add GOVD_CONDTEMP.
jakub [Thu, 30 May 2019 21:19:39 +0000 (21:19 +0000)] 
* gimplify.c (enum gimplify_omp_var_data): Add GOVD_CONDTEMP.
(gimplify_adjust_omp_clauses_1): Handle GOVD_CONDTEMP.
(gimplify_omp_for): If worksharing loop with lastprivate conditional
is nested inside of parallel region, add _condtemp_ clause to both.
* tree-nested.c (convert_nonlocal_omp_clauses,
convert_local_omp_clauses): Ignore OMP_CLAUSE__CONDTEMP_ instead of
assertion failure.
* omp-general.h (struct omp_for_data): Add have_pointer_condtemp
member.
* omp-general.c (omp_extract_for_data): Compute it.
* omp-low.c (scan_sharing_clauses): Handle OMP_CLAUSE__CONDTEMP_.
(lower_rec_input_clauses): Likewise.
(lower_lastprivate_conditional_clauses): If OMP_CLAUSE__CONDTEMP_
clause is already present, just add one further one after it.
(lower_lastprivate_clauses): Handle cond_ptr with array type.
(lower_send_shared_vars): Clear _condtemp_ vars.
(lower_omp_1) <case GIMPLE_ASSIGN>: Handle target data like critical
or section or taskgroup.
* omp-expand.c (determine_parallel_type): Disallow combining only if
first OMP_CLAUSE__CONDTEMP_ has pointer type.  Disallow combining
of parallel sections if OMP_CLAUSE__CONDTEMP_ is present.
(expand_omp_for_generic, expand_omp_for_static_nochunk,
expand_omp_for_static_chunk, expand_omp_for): Use
fd->have_pointer_condtemp instead of fd->lastprivate_conditional to
determine if a special set of API routines are needed and if condtemp
needs to be initialized, while always initialize cond_var if
fd->lastprivate_conditional is non-zero.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271791 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoFix RISC-V build failure for go language.
wilson [Thu, 30 May 2019 20:47:12 +0000 (20:47 +0000)] 
Fix RISC-V build failure for go language.

gcc/go/
* go-gcc.cc (Gcc_backend::Gcc_backend): Add BUILT_IN_ATOMIC_FETCH_AND_1
and BUILT_IN_ATOMIC_FETCH_OR_1.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271790 138bc75d-0d04-0410-961f-82ee72b054a4

5 years agoLWG2788 basic_string spurious use of a default constructible allocator
redi [Thu, 30 May 2019 19:48:48 +0000 (19:48 +0000)] 
LWG2788 basic_string spurious use of a default constructible allocator

This only change the cxx11 basic_string, because COW strings don't
correctly propagate allocators anyway.

2019-05-30  Nina Dinka Ranns  <dinka.ranns@gmail.com>

LWG2788 basic_string spurious use of a default constructible allocator
* include/bits/basic_string.tcc [_GLIBCXX_USE_CXX11_ABI]
(basic_string::_M_replace_dispatch): Construct temporary string with
the current allocator.
* testsuite/21_strings/basic_string/allocator/char/lwg2788.cc: New.
* testsuite/21_strings/basic_string/allocator/wchar_t/lwg2788.cc: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271789 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago * cp-tree.h (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Fix a typo.
mpolacek [Thu, 30 May 2019 18:40:17 +0000 (18:40 +0000)] 
* cp-tree.h (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Fix a typo.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271788 138bc75d-0d04-0410-961f-82ee72b054a4

5 years ago2019-05-30 Bill Schmidt <wschmidt@linux.ibm.com>
wschmidt [Thu, 30 May 2019 18:13:06 +0000 (18:13 +0000)] 
2019-05-30  Bill Schmidt  <wschmidt@linux.ibm.com>
    Michael Meissner  <meissner@linux.ibm.com>

* config/rs6000/constraints.md (eI): New constraint.
* config/rs6000/predicates.md (cint34_operand): New predicate.
* config/rs6000/rs6000.h (SIGNED_16BIT_OFFSET_P): New #define.
(SIGNED_34BIT_OFFSET_P): Likewise.
* doc/md.texi (eI): Document constraint.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@271787 138bc75d-0d04-0410-961f-82ee72b054a4