gcc.git
5 years agoDaily bump.
GCC Administrator [Wed, 6 Nov 2019 00:16:21 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r277870

5 years agodoc: Insn splitting by combine
Segher Boessenkool [Wed, 6 Nov 2019 00:06:23 +0000 (01:06 +0100)]
doc: Insn splitting by combine

The combine pass is perfectly happy if a splitter splits to just one
instruction (instead of two).

* doc/md.texi (Insn Splitting): Fix combiner documentation.

From-SVN: r277866

5 years agoImplement C++20 operator<=>.
Jason Merrill [Tue, 5 Nov 2019 23:56:18 +0000 (18:56 -0500)]
Implement C++20 operator<=>.

There are three major pieces to this support: scalar operator<=>,
synthesis of comparison operators, and rewritten/reversed overload
resolution (e.g. a < b becomes 0 > b <=> a).

Unlike other defaulted functions, where we use synthesized_method_walk to
semi-simulate what the definition of the function will be like, this patch
determines the characteristics of a comparison operator by trying to define
it.

My handling of non-dependent rewritten operators in templates can still use
some work: build_min_non_dep_op_overload can't understand the rewrites and
crashes, so I'm avoiding it for now by clearing *overload.  This means we'll
do name lookup again at instantiation time, which can incorrectly mean a
different result.  I'll poke at this more in stage 3.

I'm leaving out a fourth section ("strong structural equality") even though
I've implemented it, because it seems likely to change radically tomorrow.

Thanks to Tim van Deurzen and Jakub for implementing lexing of the <=>
operator, and Jonathan for the initial <compare> header.

gcc/cp/
* cp-tree.h (struct lang_decl_fn): Add maybe_deleted bitfield.
(DECL_MAYBE_DELETED): New.
(enum special_function_kind): Add sfk_comparison.
(LOOKUP_REWRITTEN, LOOKUP_REVERSED): New.
* call.c (struct z_candidate): Add rewritten and reversed methods.
(add_builtin_candidate): Handle SPACESHIP_EXPR.
(add_builtin_candidates): Likewise.
(add_candidates): Don't add a reversed candidate if the parms are
the same.
(add_operator_candidates): Split out from build_new_op_1.  Handle
rewritten and reversed candidates.
(add_candidate): Swap conversions of reversed candidate.
(build_new_op_1): Swap them back.  Build a second operation for
rewritten candidates.
(extract_call_expr): Handle rewritten calls.
(same_fn_or_template): New.
(joust): Handle rewritten and reversed candidates.
* class.c (add_implicitly_declared_members): Add implicit op==.
(classtype_has_op, classtype_has_defaulted_op): New.
* constexpr.c (cxx_eval_binary_expression): Handle SPACESHIP_EXPR.
(cxx_eval_constant_expression, potential_constant_expression_1):
Likewise.
* cp-gimplify.c (genericize_spaceship): New.
(cp_genericize_r): Use it.
* cp-objcp-common.c (cp_common_init_ts): Handle SPACESHIP_EXPR.
* decl.c (finish_function): Handle deleted function.
* decl2.c (grokfield): SET_DECL_FRIEND_CONTEXT on defaulted friend.
(mark_used): Check DECL_MAYBE_DELETED.  Remove assumption that
defaulted functions are non-static members.
* error.c (dump_expr): Handle SPACESHIP_EXPR.
* method.c (type_has_trivial_fn): False for sfk_comparison.
(enum comp_cat_tag, struct comp_cat_info_t): New types.
(comp_cat_cache): New array variable.
(lookup_comparison_result, lookup_comparison_category)
(is_cat, cat_tag_for, spaceship_comp_cat)
(spaceship_type, genericize_spaceship)
(common_comparison_type, early_check_defaulted_comparison)
(comp_info, build_comparison_op): New.
(synthesize_method): Handle sfk_comparison.  Handle deleted.
(get_defaulted_eh_spec, maybe_explain_implicit_delete)
(explain_implicit_non_constexpr, implicitly_declare_fn)
(defaulted_late_check, defaultable_fn_check): Handle sfk_comparison.
* name-lookup.c (get_std_name_hint): Add comparison categories.
* tree.c (special_function_p): Add sfk_comparison.
* typeck.c (cp_build_binary_op): Handle SPACESHIP_EXPR.

2019-11-05  Tim van Deurzen  <tim@kompiler.org>

Add new tree code for the spaceship operator.
gcc/cp/
* cp-tree.def: Add new tree code.
* operators.def: New binary operator.
* parser.c: Add new token and tree code.
libcpp/
* cpplib.h: Add spaceship operator for C++.
* lex.c: Implement conditional lexing of spaceship operator for C++20.

2019-11-05  Jonathan Wakely  <jwakely@redhat.com>

libstdc++-v3/
* libsupc++/compare: New header.
* libsupc++/Makefile.am (std_HEADERS): Add compare.
* include/std/version: Define __cpp_lib_three_way_comparison.
* include/std/functional: #include <compare>.

From-SVN: r277865

5 years agoFix conversions for built-in operator overloading candidates.
Jason Merrill [Tue, 5 Nov 2019 23:53:53 +0000 (18:53 -0500)]
Fix conversions for built-in operator overloading candidates.

While working on C++20 operator<=>, I noticed that build_new_op_1 was doing
too much conversion when a built-in candidate was selected; the standard
says it should only perform user-defined conversions, and then leave the
normal operator semantics to handle any standard conversions.  This is
important for operator<=> because a comparison of two different unscoped
enums is ill-formed; if we promote the enums to int here, cp_build_binary_op
never gets to see the original operand types, so we can't give the error.

I'm also disabling -Wmaybe-uninitialized for expmed.c to avoid the bootstrap
failure from the last time I applied this patch.

* call.c (build_new_op_1): Don't apply any standard conversions to
the operands of a built-in operator.  Don't suppress conversions in
cp_build_unary_op.
* typeck.c (cp_build_unary_op): Do integral promotions for enums.

PR tree-optimization/91825
* expmed.c: Reduce -Wmaybe-uninitialized to warning.

From-SVN: r277864

5 years agoUse vec instead of raw array for built-in candidates.
Jason Merrill [Tue, 5 Nov 2019 23:50:41 +0000 (18:50 -0500)]
Use vec instead of raw array for built-in candidates.

My operator<=> patch wants to split up build_new_op_1, which makes using a
tree array as well as the vec inconvenient.  build_new_op_1 already has a
vec, and build_conditional_expr_1 can release its vec right away, so this
doesn't increase garbage at all.

* call.c (build_builtin_candidate): Take args in a vec.
(add_builtin_candidate, add_builtin_candidates): Likewise.
(build_conditional_expr_1, build_new_op_1): Adjust.

From-SVN: r277863

5 years agoVarious small C++ changes.
Jason Merrill [Tue, 5 Nov 2019 23:50:08 +0000 (18:50 -0500)]
Various small C++ changes.

Wrappers for lookup_qualified_name and build_x_binary_op to make calling
them more convenient in places, and a function named contextual_conv_bool
for places that want contextual conversion to bool.

I noticed that we weren't showing the declaration location when we complain
about a call to a non-constexpr function where a constant expression is
required.

If maybe_instantiate_noexcept doesn't actually instantiate, there's no
reason for it to mess with clones.

* constexpr.c (explain_invalid_constexpr_fn): Show location of fn.

* pt.c (maybe_instantiate_noexcept): Only update clones if we
instantiated.

* typeck.c (contextual_conv_bool): New.

* name-lookup.c (lookup_qualified_name): Add wrapper overload taking
C string rather than identifier.
* parser.c (cp_parser_userdef_numeric_literal): Use it.
* rtti.c (emit_support_tinfos): Use it.
* cp-tree.h (ovl_op_identifier): Change to inline functions.
(build_x_binary_op): Add wrapper with fewer parms.

From-SVN: r277862

5 years agoAllow libcalls for complex memcpy when optimizing for size.
Jim Wilson [Tue, 5 Nov 2019 22:34:40 +0000 (22:34 +0000)]
Allow libcalls for complex memcpy when optimizing for size.

The RISC-V backend wants to use a libcall when optimizing for size if
more than 6 instructions are needed.  Emit_move_complex asks for no
libcalls.  This case requires 8 insns for rv64 and 16 insns for rv32,
so we get fallback code that emits a loop.  Commit_one_edge_insertion
doesn't allow code inserted for a phi node on an edge to end with a
branch, and so this triggers an assertion.  This problem goes away if
we allow libcalls when optimizing for size, which gives the code the
RISC-V backend wants, and avoids triggering the assert.

gcc/
PR middle-end/92263
* expr.c (emit_move_complex): Only use BLOCK_OP_NO_LIBCALL when
optimize_insn_for_speed_p is true.

gcc/testsuite/
PR middle-end/92263
* gcc.dg/pr92263.c: New.

From-SVN: r277861

5 years agoCatch missed uses of function with unsatisfied constraints.
Jason Merrill [Tue, 5 Nov 2019 20:36:09 +0000 (15:36 -0500)]
Catch missed uses of function with unsatisfied constraints.

While looking at CA378 I noticed that we weren't properly diagnosing two of
the three erroneous lines in the example.

* decl2.c (mark_used): Diagnose use of a function with unsatisfied
constraints here.
* typeck.c (cp_build_function_call_vec): Not here.

From-SVN: r277860

5 years agoMake -fconcepts-ts imply -fconcepts.
Jason Merrill [Tue, 5 Nov 2019 20:36:00 +0000 (15:36 -0500)]
Make -fconcepts-ts imply -fconcepts.

* c-opts.c (c_common_post_options): -fconcepts-ts implies
-fconcepts.

From-SVN: r277859

5 years agoPR middle-end/92333 - missing variable name referencing VLA in warnings
Martin Sebor [Tue, 5 Nov 2019 17:05:33 +0000 (17:05 +0000)]
PR middle-end/92333 - missing variable name referencing VLA in warnings

PR middle-end/92333 - missing variable name referencing VLA in warnings
PR middle-end/82608 - missing -Warray-bounds on an out-of-bounds VLA index

gcc/testsuite/ChangeLog:

PR middle-end/92333
PR middle-end/82608
* gcc.dg/Warray-bounds-51.c: New test.

gcc/ChangeLog:

PR middle-end/92333
PR middle-end/82608
* tree-vrp.c (vrp_prop::check_array_ref): Handle VLAs with constant
size.
* tree-ssa-ccp.c (fold_builtin_alloca_with_align): Use a meaninful
name and location for a temporary variable.

From-SVN: r277854

5 years ago[PR c++/92370] ICE with VC marker
Nathan Sidwell [Tue, 5 Nov 2019 16:59:41 +0000 (16:59 +0000)]
[PR c++/92370] ICE with VC marker

https://gcc.gnu.org/ml/gcc-patches/2019-11/msg00323.html
cp/
PR c++/92370
* parser.c (cp_parser_error_1): Check EOF and UNKNOWN_LOCATION
when skipping over version control marker.

testsuite/
PR c++/92370
* g++.dg/pr92370.C: New.

From-SVN: r277853

5 years agoFix indentation inconsistencies introduced by previous patch.
Aldy Hernandez [Tue, 5 Nov 2019 16:37:28 +0000 (16:37 +0000)]
Fix indentation inconsistencies introduced by previous patch.

From-SVN: r277852

5 years agoPR middle-end/92341 - missing -Warray-bounds indexing past the end of a compound...
Martin Sebor [Tue, 5 Nov 2019 16:20:44 +0000 (16:20 +0000)]
PR middle-end/92341 - missing -Warray-bounds indexing past the end of a compound literal

PR middle-end/92341 - missing -Warray-bounds indexing past the end of a compound literal
PR middle-end/82612 - missing -Warray-bounds on a non-zero offset from the address of a non-array object

gcc/testsuite/ChangeLog:

PR middle-end/92341
PR middle-end/82612
* g++.dg/warn/Warray-bounds-4.C: Adjust text of expected warning.
* gcc.dg/Warray-bounds-53.c: New test.
* gcc.dg/Warray-bounds-54.c: New test.

gcc/ChangeLog:

PR middle-end/92341
PR middle-end/82612
* tree-sra.c (get_access_for_expr): Fail for out-of-bounds offsets.
* tree-vrp.c (vrp_prop::check_array_ref): Correct index and text
of message printed in a warning for empty arrays.
(vrp_prop::check_mem_ref): Also handle function parameters and
empty arrays.

From-SVN: r277851

5 years agore PR tree-optimization/92371 (ICE in info_for_reduction, at tree-vect-loop.c:4106)
Richard Biener [Tue, 5 Nov 2019 16:12:07 +0000 (16:12 +0000)]
re PR tree-optimization/92371 (ICE in info_for_reduction, at tree-vect-loop.c:4106)

2019-11-05  Richard Biener  <rguenther@suse.de>

PR tree-optimization/92371
* tree-vect-loop.c (vectorizable_reduction): Set STMT_VINFO_REDUC_DEF
on the original stmt of live stmts in the chain.
(vectorizable_live_operation): Look at the original stmt when
checking STMT_VINFO_REDUC_DEF.

* gcc.dg/torture/pr92371.c: New testcase.

From-SVN: r277850

5 years agoFix <version> header for freestanding
Jonathan Wakely [Tue, 5 Nov 2019 15:56:57 +0000 (15:56 +0000)]
Fix <version> header for freestanding

* include/std/version [!_GLIBCXX_HOSTED]: Do not define feature test
macros for features that are only present in hosted builds.

From-SVN: r277849

5 years agoRemove incorrect comment
Jonathan Wakely [Tue, 5 Nov 2019 15:56:47 +0000 (15:56 +0000)]
Remove incorrect comment

The negative concept is required for subsumption to work, it's not a
bug.

* include/bits/iterator_concepts.h (__iter_without_nested_types):
Remove incorrect comment.

From-SVN: r277848

5 years agoThe base class for ranges is currently value_range_base, which is rather long and...
Aldy Hernandez [Tue, 5 Nov 2019 15:39:11 +0000 (15:39 +0000)]
The base class for ranges is currently value_range_base, which is rather long and cumbersome.

The base class for ranges is currently value_range_base, which is
rather long and cumbersome.  It also occurs more often than the derived
class of value_range.  To avoid confusion, and save typing, this
patch does a global rename from value_range to value_range_equiv,
and from value_range_base to value_range.

This way, the base class is simply value_range, and the derived
class is value_range_equiv which explicitly states what it does.

From-SVN: r277847

5 years ago[mid-end] Fix declared type of personality functions
Matthew Malcomson [Tue, 5 Nov 2019 15:36:20 +0000 (15:36 +0000)]
[mid-end] Fix declared type of personality functions

`build_personality_function` generates a declaration for a personality
function.  The type it declares for these functions doesn't match the
type of the actual personality functions that are defined by the C++
unwinding ABI.

This doesn't cause any crashes since the compiler never generates a call
to these decl's, and hence the type of the function is never used.
Nonetheless, for the sake of consistency and readability we update the
type of this declaration.

gcc/ChangeLog:

2019-11-05  Matthew Malcomson  <matthew.malcomson@arm.com>

* expr.c (build_personality_function): Fix generated type to
match actual personality functions.

From-SVN: r277846

5 years ago[aarch64] Allocate space for err_str in aarch64_handle_attr_branch_protection
Matthew Malcomson [Tue, 5 Nov 2019 15:35:15 +0000 (15:35 +0000)]
[aarch64] Allocate space for err_str in aarch64_handle_attr_branch_protection

-fsanitize=hwaddress found a one-byte overwrite when running the
testsuite here.  aarch64_handle_attr_branch_protection allocates
`strlen(str)` bytes for an error string, which is populated by
`strcpy(..., str)` in the case where the branch protection string is
completely invalid.

Not tested -- I don't want to re-build and it seems obvious.

gcc/ChangeLog:

2019-11-05  Matthew Malcomson  <matthew.malcomson@arm.com>

* config/aarch64/aarch64.c (aarch64_handle_attr_cpu): Allocate
enough bytes for the NULL character.

From-SVN: r277845

5 years agoUpdate LOCAL_PATCHES.
Martin Liska [Tue, 5 Nov 2019 13:56:51 +0000 (13:56 +0000)]
Update LOCAL_PATCHES.

From-SVN: r277839

5 years agoUpdate scanned patterns in a test-case.
Martin Liska [Tue, 5 Nov 2019 13:55:54 +0000 (14:55 +0100)]
Update scanned patterns in a test-case.

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

* c-c++-common/ubsan/ptr-overflow-2.c: Update based on changed
run-time reporting format.

From-SVN: r277838

5 years agoSet print_summary for UBSAN.
Martin Liska [Tue, 5 Nov 2019 13:55:44 +0000 (14:55 +0100)]
Set print_summary for UBSAN.

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

* ubsan/ubsan_flags.cpp (InitializeFlags): Trunk decided to print
summary for all sanitizers, but we want to have UBSAN without it.

From-SVN: r277837

5 years agoReapply all revisions mentioned in LOCAL_PATCHES.
Martin Liska [Tue, 5 Nov 2019 13:55:27 +0000 (14:55 +0100)]
Reapply all revisions mentioned in LOCAL_PATCHES.

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

* asan/asan_globals.cpp (CheckODRViolationViaIndicator): Reapply from
LOCAL_PATCHES.
(CheckODRViolationViaPoisoning): Likewise.
(RegisterGlobal): Likewise.
* asan/asan_interceptors.h (ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION): Likewise.
(defined): Likewise.
* asan/asan_mapping.h: Likewise.
* sanitizer_common/sanitizer_linux_libcdep.cpp (defined): Likewise.
* sanitizer_common/sanitizer_mac.cpp (defined): Likewise.
* sanitizer_common/sanitizer_platform_limits_linux.cpp (defined): Likewise.
* sanitizer_common/sanitizer_platform_limits_posix.h: Likewise.
* sanitizer_common/sanitizer_stacktrace.cpp (GetCanonicFrame): Likewise.
* tsan/tsan_rtl_ppc64.S: Likewise.
* ubsan/ubsan_handlers.cpp (__ubsan::__ubsan_handle_cfi_bad_icall): Likewise.
(__ubsan::__ubsan_handle_cfi_bad_icall_abort): Likewise.
* ubsan/ubsan_handlers.h (struct CFIBadIcallData): Likewise.
(struct CFICheckFailData): Likewise.
(RECOVERABLE): Likewise.
* ubsan/ubsan_platform.h: Likewise.

From-SVN: r277836

5 years agoUpdate Makefile.am.
Martin Liska [Tue, 5 Nov 2019 13:55:17 +0000 (14:55 +0100)]
Update Makefile.am.

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

* tsan/Makefile.am: Rename tsan_interceptors.cpp to
tsan_interceptors_posix.
* tsan/Makefile.in: Regenerate.

From-SVN: r277835

5 years agoLibsanitizer: merge from trunk with merge.sh.
Martin Liska [Tue, 5 Nov 2019 13:54:57 +0000 (14:54 +0100)]
Libsanitizer: merge from trunk with merge.sh.

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

* all source files: Merge from upstream r375507.

From-SVN: r277834

5 years agoIBM Z: gen-vect-26/28: Vectorizing without peeling is ok for Z
Andreas Krebbel [Tue, 5 Nov 2019 13:31:02 +0000 (13:31 +0000)]
IBM Z: gen-vect-26/28: Vectorizing without peeling is ok for Z

These tests check if loop peeling has been applied to avoid
having to vectorize unaligned loops.  On Z we do not have any
alignment requirements for vectorization so we also don't need want
the loop peeling here.

2019-11-05  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.dg/tree-ssa/gen-vect-26.c: Disable loop peeling check for
IBM Z.
* gcc.dg/tree-ssa/gen-vect-28.c: Likewise.

From-SVN: r277833

5 years agore PR target/92280 (gcc.target/i386/pr83008.c FAILs)
Richard Biener [Tue, 5 Nov 2019 13:29:52 +0000 (13:29 +0000)]
re PR target/92280 (gcc.target/i386/pr83008.c FAILs)

2019-11-05  Richard Biener  <rguenther@suse.de>

PR tree-optimization/92280
* match.pd (BIT_FIELD_REF of CTOR): Unless the original CTOR
had a single use do not create a new CTOR.
* tree-ssa-forwprop.c (simplify_bitfield_ref): Do not re-fold
BIT_FIELD_REF of a CTOR via GENERIC.

From-SVN: r277832

5 years agoIBM Z: gen-vect-11/32: Set min-vect-loop-bound param back to default
Andreas Krebbel [Tue, 5 Nov 2019 13:29:13 +0000 (13:29 +0000)]
IBM Z: gen-vect-11/32: Set min-vect-loop-bound param back to default

In the Z backend we still set min-vect-loop-bound to 2 to work around
corner cases where awkward epilogue code gets generated in the
vectorizer.  This has a particular bad impact when vectorizing loops
with a low iteration count.  Due to this we do not vectorize the loop
in gen-vect-11/32 - what actually is a pity.

The patch sets min-vect-loop-bound back to the default value of 0 in
order to enable vectorization.

2019-11-05  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.dg/tree-ssa/gen-vect-11.c: Add --param min-vect-loop-bound=0
for IBM Z.
* gcc.dg/tree-ssa/gen-vect-23.c: Likewise.

From-SVN: r277831

5 years agoIBM Z: Fix testsuite useable_hw check
Andreas Krebbel [Tue, 5 Nov 2019 13:27:59 +0000 (13:27 +0000)]
IBM Z: Fix testsuite useable_hw check

This fixes various issues with the useable_hw check in s390.exp.  The
check is supposed to verify whether a testcase can be run on the
current hardware.

- the test never returned true for -m31 because vzero is not available
  in ESA mode and -m31 defaults to -mesa
- the missing v0 clobber on the vzero instruction made the check fail
  if the stack pointer got saved in f0
- the lcbb instruction used for checking whether we are on a z13
  also requires vx.  Replace it with an instruction from the generic
  instruction set extensions.
- no support for z14 and z15 so far

gcc/testsuite/ChangeLog:

2019-11-05  Andreas Krebbel  <krebbel@linux.ibm.com>

* gcc.target/s390/s390.exp
(check_effective_target_s390_useable_hw): Add inline asm for z14
and z15. Replace instruction for z13 with lochiz. Add register
clobbers. Check also for __zarch__ when doing the __VX__ test.

From-SVN: r277830

5 years agoIBM Z: Use tree_fits_uhwi_p in vector_alignment hook
Andreas Krebbel [Tue, 5 Nov 2019 13:21:06 +0000 (13:21 +0000)]
IBM Z: Use tree_fits_uhwi_p in vector_alignment hook

This fixes an ICE in gcc.dg/attr-vector_size.c testcase.

gcc/ChangeLog:

2019-11-05  Andreas Krebbel  <krebbel@linux.ibm.com>

* config/s390/s390.c (s390_vector_alignment): Check if the value
fits into uhwi before using it.

From-SVN: r277829

5 years ago[ARM,testsuite] Skip tests incompatible with -mpure-code.
Christophe Lyon [Tue, 5 Nov 2019 13:18:36 +0000 (13:18 +0000)]
[ARM,testsuite] Skip tests incompatible with -mpure-code.

All these tests fail when using -mpure-code:
* some force A or R profile
* some use Neon
* some use -fpic/-fPIC
all of which are not supported by this option.

2019-11-05  Christophe Lyon  <christophe.lyon@linaro.org>

* gcc.target/arm/attr-crypto.c: Skip if -mpure-code is used.
* gcc.target/arm/attr-neon-fp16.c: Likewise.
* gcc.target/arm/combine-cmp-shift.c: Likewise.
* gcc.target/arm/data-rel-1.c: Likewise.
* gcc.target/arm/data-rel-2.c: Likewise.
* gcc.target/arm/data-rel-3.c: Likewise.
* gcc.target/arm/ftest-armv7a-arm.c: Likewise.
* gcc.target/arm/ftest-armv7a-thumb.c: Likewise.
* gcc.target/arm/ftest-armv7r-arm.c: Likewise.
* gcc.target/arm/ftest-armv7r-thumb.c: Likewise.
* gcc.target/arm/ftest-armv7ve-arm.c: Likewise.
* gcc.target/arm/ftest-armv7ve-thumb.c: Likewise.
* gcc.target/arm/ftest-armv8a-arm.c: Likewise.
* gcc.target/arm/ftest-armv8a-thumb.c: Likewise.
* gcc.target/arm/lceil-vcvt_1.c: Likewise.
* gcc.target/arm/lfloor-vcvt_1.c: Likewise.
* gcc.target/arm/lround-vcvt_1.c: Likewise.
* gcc.target/arm/memset-inline-10.c: Likewise.
* gcc.target/arm/mod_2.c: Likewise.
* gcc.target/arm/mod_256.c: Likewise.
* gcc.target/arm/pr40657-1.c: Likewise.
* gcc.target/arm/pr44788.c: Likewise.
* gcc.target/arm/pr50305.c: Likewise.
* gcc.target/arm/pr51835.c: Likewise.
* gcc.target/arm/pr51915.c: Likewise.
* gcc.target/arm/pr52006.c: Likewise.
* gcc.target/arm/pr53187.c: Likewise.
* gcc.target/arm/pr58784.c: Likewise.
* gcc.target/arm/pr59575.c: Likewise.
* gcc.target/arm/pr59923.c: Likewise.
* gcc.target/arm/pr60650-2.c: Likewise.
* gcc.target/arm/pr60657.c: Likewise.
* gcc.target/arm/pr60663.c: Likewise.
* gcc.target/arm/pr67439_1.c: Likewise.
* gcc.target/arm/pr68620.c: Likewise.
* gcc.target/arm/pr7676.c: Likewise.
* gcc.target/arm/pr79239.c: Likewise.
* gcc.target/arm/pr81863.c: Likewise.
* gcc.target/arm/pragma_attribute.c: Likewise.
* gcc.target/arm/pragma_cpp_fma.c: Likewise.
* gcc.target/arm/require-pic-register-loc.c: Likewise.
* gcc.target/arm/thumb-ltu.c: Likewise.
* gcc.target/arm/thumb1-pic-high-reg.c: Likewise.
* gcc.target/arm/thumb1-pic-single-base.c: Likewise.
* gcc.target/arm/tlscall.c: Likewise.
* gcc.target/arm/unsigned-float.c: Likewise.
* gcc.target/arm/vrinta-ce.c: Likewise.

From-SVN: r277828

5 years agoUse more ggc_delete.
Martin Liska [Tue, 5 Nov 2019 12:45:04 +0000 (13:45 +0100)]
Use more ggc_delete.

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

* symbol-summary.h: Use ggc_delete.

From-SVN: r277827

5 years ago[Aarch64] Fix vec_perm cost for thunderx2t99
Anton Youdkevitch [Tue, 5 Nov 2019 12:07:53 +0000 (12:07 +0000)]
[Aarch64] Fix vec_perm cost for thunderx2t99

Here is the one-liner that fixes the incorrect
vec_perm cost for thunderx2t99 chip.
With the patch applied 526.blender of CPU2017
gets ~5% improvement with no measurable changes
for other benchmarks.

2019-11-05  Anton Youdkevitch  <anton.youdkevitch@bell-sw.com>

* config/aarch64/aarch64.c (thunderx2t99_vector_cost):
Change vec_perm field to 10.

From-SVN: r277826

5 years ago* doc/install.texi: Further fix syntax for html generation
Arnaud Charlet [Tue, 5 Nov 2019 11:46:29 +0000 (11:46 +0000)]
* doc/install.texi: Further fix syntax for html generation

From-SVN: r277824

5 years agoUpdate coding style in symbol-summary.h.
Martin Liska [Tue, 5 Nov 2019 11:10:04 +0000 (12:10 +0100)]
Update coding style in symbol-summary.h.

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

* symbol-summary.h: Rename allocator to m_allocator and
add comment.

From-SVN: r277823

5 years agore PR tree-optimization/92324 (ICE in expand_direct_optab_fn, at internal-fn.c:2890)
Richard Biener [Tue, 5 Nov 2019 11:00:24 +0000 (11:00 +0000)]
re PR tree-optimization/92324 (ICE in expand_direct_optab_fn, at internal-fn.c:2890)

2019-11-05  Richard Biener  <rguenther@suse.de>

PR tree-optimization/92324
* tree-vect-loop.c (check_reduction_path): For MIN/MAX require
all signed or unsigned operations.

* gcc.dg/vect/pr92324-3.c: New testcase.

From-SVN: r277822

5 years agohsa-brig.c: Include alloc-pool.h
Jan Hubicka [Tue, 5 Nov 2019 10:38:02 +0000 (11:38 +0100)]
hsa-brig.c: Include alloc-pool.h

* hsa-brig.c: Include alloc-pool.h
* hsa-dump.c: Likewise.
* hsa-gen.c: Likewise.
* hse-regalloc.c: Likewise.
* ipa-hsa.c: Likewise.
* ipa-predicate.c: Likewise.
* ipa-reference.c: Likewise.
* ipa-sra.c: Likewise.
* omp-expand.c: Likewise.
* omp-general.c: Likewise.
* omp-low.c: Likewise.
* sumbol-summary.h (function_summary_base): Add allocator.
(function_summary<T *>::function_summary): Update construction.
(fast_function_summary<T *, V>::fast_function_summary): Likewise.
(call_summary_base): Add allcator.
(call_summary<T *>::call_summary): Update construction.
(fast_call_summary<T *, V>::fast_call_summary): Likewise.

From-SVN: r277821

5 years agore PR tree-optimization/91945 (ICE: tree check: expected integer_cst, have var_decl...
Jakub Jelinek [Tue, 5 Nov 2019 10:17:29 +0000 (11:17 +0100)]
re PR tree-optimization/91945 (ICE: tree check: expected integer_cst, have var_decl in get_len, at tree.h:5837 since r274997)

PR tree-optimization/91945
* builtins.c (compute_objsize): For ARRAY_REF, only multiply off
by tpsize if it is both non-NULL and INTEGER_CST, otherwise punt.
Formatting fix.

* gfortran.dg/pr91945.f90: New test.

From-SVN: r277820

5 years agore PR c++/92343 ([[likely]]/[[unlikely]] prevent method from being a constant expression)
Jakub Jelinek [Tue, 5 Nov 2019 10:16:39 +0000 (11:16 +0100)]
re PR c++/92343 ([[likely]]/[[unlikely]] prevent method from being a constant expression)

PR c++/92343
* constexpr.c (potential_constant_expression_1): Return true rather
than false for PREDICT_EXPR.

* g++.dg/cpp2a/attr-likely6.C: New test.

From-SVN: r277819

5 years agoMove vrp_set_zero_nonzero_bits from tree-vrp.c into vr-values.c, and make it use...
Aldy Hernandez [Tue, 5 Nov 2019 09:50:39 +0000 (09:50 +0000)]
Move vrp_set_zero_nonzero_bits from tree-vrp.c into vr-values.c, and make it use wi_set_zero_nonzero_bits.

Move vrp_set_zero_nonzero_bits from tree-vrp.c into vr-values.c, and
make it use wi_set_zero_nonzero_bits.  Remove the now redundant
wide_int_range_set_zero_nonzero_bits.

From-SVN: r277818

5 years agoReally add gcc/config/gcn/t-omp-device
Tobias Burnus [Tue, 5 Nov 2019 09:01:57 +0000 (10:01 +0100)]
Really add gcc/config/gcn/t-omp-device

        gcc/
        * config/gcn/t-omp-device: New.
        Should have been part of Rev. 277797.

From-SVN: r277817

5 years agoRemove FIELD_DECL leftover.
Martin Liska [Tue, 5 Nov 2019 08:39:14 +0000 (09:39 +0100)]
Remove FIELD_DECL leftover.

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

PR c++/92339
* fold-const.c (operand_compare::hash_operand): Remove
FIELD_DECL handling.
2019-11-05  Martin Liska  <mliska@suse.cz>

PR c++/92339
* g++.dg/pr92339.C: New test.

From-SVN: r277816

5 years agocrontab: Disable snapshots from gcc-7-branch.
Richard Biener [Tue, 5 Nov 2019 07:58:51 +0000 (07:58 +0000)]
crontab: Disable snapshots from gcc-7-branch.

2019-10-05  Richard Biener  <rguenther@suse.de>

        * crontab: Disable snapshots from gcc-7-branch.

From-SVN: r277815

5 years agodecl.c (omp_declare_variant_finalize_one): Call declare_simd_adjust_this not just...
Jakub Jelinek [Tue, 5 Nov 2019 07:46:03 +0000 (08:46 +0100)]
decl.c (omp_declare_variant_finalize_one): Call declare_simd_adjust_this not just on the context...

* decl.c (omp_declare_variant_finalize_one): Call
declare_simd_adjust_this not just on the context, but also on the
variant-id expression for methods.  Don't call
cp_get_callee_fndecl_nofold, call cp_get_callee and only if it is
safe cp_get_fndecl_from_callee.  Don't try to print as %qD
NULL in diagnostics.
* pt.c (tsubst_attribute): Handle "omp declare variant base"
attribute.
(tsubst_function_decl): Call omp_declare_variant_finalize
if there are any "omp declare variant base" attributes left.

* g++.dg/gomp/declare-variant-7.C: New test.
* g++.dg/gomp/declare-variant-8.C: New test.

From-SVN: r277814

5 years agoMove vrp_bitmap_equal_p above its only use and make it static.
Aldy Hernandez [Tue, 5 Nov 2019 04:14:40 +0000 (04:14 +0000)]
Move vrp_bitmap_equal_p above its only use and make it static.

From-SVN: r277813

5 years agoUse value_range_base::equal_p in value_range_base::operator== so we can handle
Aldy Hernandez [Tue, 5 Nov 2019 03:35:27 +0000 (03:35 +0000)]
Use value_range_base::equal_p in value_range_base::operator== so we can handle
symbolics without dying.

From-SVN: r277812

5 years agoDaily bump.
GCC Administrator [Tue, 5 Nov 2019 00:16:28 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r277810

5 years agoPR c++/91979 - mangling nullptr expression
Kamlesh Kumar [Mon, 4 Nov 2019 23:24:25 +0000 (23:24 +0000)]
PR c++/91979 - mangling nullptr expression

2019-11-04  Kamlesh Kumar  <kamleshbhalui@gmail.com>

gcc/cp
        * cp/mangle.c (write_template_arg_literal): Handle nullptr
        mangling.
gcc
* common.opt (-fabi-version): Document =14.
* doc/invoke.texi (C++ Dialect Options): Likewise.
gcc/c-family
        * c-opts.c (c_common_post_options): Update
        latest_abi_version.
libiberty
        * cp-demangle.c (d_expr_primary): Handle
        nullptr demangling.
        * testsuite/demangle-expected: Added test.

From-SVN: r277801

5 years agoDo not special case pointers in value_range_base::set.
Aldy Hernandez [Mon, 4 Nov 2019 22:57:51 +0000 (22:57 +0000)]
Do not special case pointers in value_range_base::set.

From-SVN: r277799

5 years ago* typeck.c (check_return_expr): Avoid redundant error.
Jason Merrill [Mon, 4 Nov 2019 22:34:59 +0000 (17:34 -0500)]
* typeck.c (check_return_expr): Avoid redundant error.

From-SVN: r277798

5 years agoAdd gcc/config/gcn/t-omp-device for OpenMP declare variant kind/arch/isa
Tobias Burnus [Mon, 4 Nov 2019 22:29:11 +0000 (22:29 +0000)]
Add gcc/config/gcn/t-omp-device for OpenMP declare variant kind/arch/isa

        gcc/
        * config/gcn/gcn.c (gcn_omp_device_kind_arch_isa): New function.
        (TARGET_OMP_DEVICE_KIND_ARCH_ISA): Redefine to
        gcn_omp_device_kind_arch_isa.
        * config/gcn/t-omp-device: New file.
        * configure.ac: Support gcn for omp_device_property.
        * configure: Regenerate.

From-SVN: r277797

5 years agoRemove handle_pointers argument from all the vrp_val*{min,max} functions.
Aldy Hernandez [Mon, 4 Nov 2019 22:05:26 +0000 (22:05 +0000)]
Remove handle_pointers argument from all the vrp_val*{min,max} functions.

Remove handle_pointers argument from all the vrp_val*{min,max} functions.  Always
assume pointers should be handled.

From-SVN: r277796

5 years agoipa-reference.c (init_function_info): Initialize info->global.statics_read.
Jan Hubicka [Mon, 4 Nov 2019 21:56:02 +0000 (22:56 +0100)]
ipa-reference.c (init_function_info): Initialize info->global.statics_read.

* ipa-reference.c (init_function_info): Initialize
info->global.statics_read.

From-SVN: r277795

5 years agoUse the value_range_base constructors in value_range_base::invert to
Aldy Hernandez [Mon, 4 Nov 2019 21:41:12 +0000 (21:41 +0000)]
Use the value_range_base constructors in value_range_base::invert to
make sure we build canonically correct ranges.

From-SVN: r277794

5 years ago[D] Remove unchecked to_constant in VECTOR_TYPE handling
Richard Sandiford [Mon, 4 Nov 2019 21:14:22 +0000 (21:14 +0000)]
[D] Remove unchecked to_constant in VECTOR_TYPE handling

The SVE port now tries to register variable-length VECTOR_TYPEs
at start-up, so it's no longer possible to use the asserting
to_constant on the number of vector elements.  This patch punts
on variable element counts instead, just like we do for other
things that the frontend doesn't recognise.

The brace indentation matches the surrounding style.

2019-11-04  Richard Sandiford  <richard.sandiford@arm.com>

gcc/d/
* d-builtins.cc (build_frontend_type): Cope with variable
TYPE_VECTOR_SUBPARTS.

From-SVN: r277793

5 years agoRemove unused range_int_cst_singleton_p.
Aldy Hernandez [Mon, 4 Nov 2019 19:52:24 +0000 (19:52 +0000)]
Remove unused range_int_cst_singleton_p.

From-SVN: r277792

5 years agoHandle VR_UNDEFINED in value_range_base::normalize_addresses().
Aldy Hernandez [Mon, 4 Nov 2019 19:52:15 +0000 (19:52 +0000)]
Handle VR_UNDEFINED in value_range_base::normalize_addresses().

From-SVN: r277791

5 years agoImplement debugging functions for assert_info's.
Aldy Hernandez [Mon, 4 Nov 2019 19:52:06 +0000 (19:52 +0000)]
Implement debugging functions for assert_info's.

From-SVN: r277790

5 years agoipa-inline-transform.c: Include ipa-utils.h
Jan Hubicka [Mon, 4 Nov 2019 19:39:52 +0000 (20:39 +0100)]
ipa-inline-transform.c: Include ipa-utils.h

* ipa-inline-transform.c: Include ipa-utils.h
(inline_call): Set thunk_expansion flag.
* ipa-utils.h (thunk_expansion): Declare.
* ipa-devirt.c (thunk_expansion): New global var.
(devirt_node_removal_hook): Do not invalidate cache while
doing thunk expansion.

From-SVN: r277789

5 years agoSLP: Initialize variable to fix bootstrap after r277784.
Tamar Christina [Mon, 4 Nov 2019 19:25:20 +0000 (19:25 +0000)]
SLP: Initialize variable to fix bootstrap after r277784.

This initializes the rstmt variable with NULL and adds an assert to
check that a value has been given by one of the if cases before use.

This fixes the bootstrap failure due to -Werror.

Committed under the gcc obvious rule.

gcc/ChangeLog:

* tree-vect-slp.c (vectorize_slp_instance_root_stmt): Initialize rstmt.

From-SVN: r277788

5 years agore PR testsuite/92302 (gcc.target/sparc/sparc-ret-3.c FAILs)
Eric Botcazou [Mon, 4 Nov 2019 18:30:23 +0000 (18:30 +0000)]
re PR testsuite/92302 (gcc.target/sparc/sparc-ret-3.c FAILs)

PR testsuite/92302
* gcc.target/sparc/sparc-ret-3.c: Accept more registers in address.

From-SVN: r277787

5 years agoPR tree-optimization/92349 - ICE in -Warray-bounds of a VLA member
Martin Sebor [Mon, 4 Nov 2019 18:15:43 +0000 (18:15 +0000)]
PR tree-optimization/92349 - ICE in -Warray-bounds of a VLA member

gcc/testsuite/ChangeLog:

PR tree-optimization/92349
* gcc.dg/Warray-bounds-50.c: New test.

gcc/ChangeLog:

PR tree-optimization/92349
* tree-vrp.c (vrp_prop::check_array_ref): Avoid assuming struct
memebers have constant sizes.

From-SVN: r277786

5 years ago[vect] Clean up orig_loop_vinfo from vect_analyze_loop
Andre Vieira [Mon, 4 Nov 2019 17:19:23 +0000 (17:19 +0000)]
[vect] Clean up orig_loop_vinfo from vect_analyze_loop

gcc/ChangeLog:
2019-11-04  Andre Vieira  <andre.simoesdiasvieira@arm.com>

* tree-vect-loop.c (vect_analyze_loop): Remove orig_loop_vinfo
parameter.
* tree-vectorizer.h (vect_analyze_loop): Update declaration.
* tree-vectorizer.c (try_vectorize_loop_1): Update calls to
vect_analyze_loop.

From-SVN: r277785

5 years ago[SLP] SLP vectorization: vectorize vector constructors
Joel Hutton [Mon, 4 Nov 2019 16:39:32 +0000 (16:39 +0000)]
[SLP] SLP vectorization: vectorize vector constructors

gcc/ChangeLog:
2019-11-04  Joel Hutton  <Joel.Hutton@arm.com>

* expr.c (store_constructor): Modify to handle single element vectors.
* tree-vect-slp.c (vect_analyze_slp_instance): Add case for vector
constructors.
(vect_slp_check_for_constructors): New function.
(vect_slp_analyze_bb_1): Call new function to check for vector
constructors.
(vectorize_slp_instance_root_stmt): New function.
(vect_schedule_slp): Call new function to vectorize root stmt of vector
constructors.
* tree-vectorizer.h (SLP_INSTANCE_ROOT_STMT): New field.

gcc/testsuite/ChangeLog:
2019-11-04  Joel Hutton  <Joel.Hutton@arm.com>

* gcc.dg/vect/bb-slp-40.c: New test.
* gcc.dg/vect/bb-slp-41.c: New test.

From-SVN: r277784

5 years agore PR tree-optimization/92345 (ICE in vec<_stmt_vec_info*, va_heap, vl_embed>::space...
Richard Biener [Mon, 4 Nov 2019 14:50:11 +0000 (14:50 +0000)]
re PR tree-optimization/92345 (ICE in vec<_stmt_vec_info*, va_heap, vl_embed>::space (vect_get_and_check_slp_defs))

2019-11-04  Richard Biener  <rguenther@suse.de>

PR tree-optimization/92345
* tree-vect-loop.c (vect_is_simple_reduction): Return whether
we produced a reduction chain.
(vect_analyze_scalar_cycles_1): Do not add reduction chains to
LOOP_VINFO_REDUCTIONS.

* gcc.dg/torture/pr92345.c: New testcase.

From-SVN: r277782

5 years agocgraphclones.c (cgraph_node::create_version_clone): Do not duplicate summaries.
Jan Hubicka [Mon, 4 Nov 2019 14:07:09 +0000 (15:07 +0100)]
cgraphclones.c (cgraph_node::create_version_clone): Do not duplicate summaries.

* cgraphclones.c (cgraph_node::create_version_clone): Do not
duplicate summaries.
* ipa-fnsummary.c (ipa_fn_summary_alloc): Allocate size summary
first.
(ipa_fn_summary_t::duplicate): Use get instead of get_create to
access call summaries.
(dump_ipa_call_summary): Be ready for missing edge summaries.
(analyze_function_body): Use get instead of get_create to access
edge summary.
(estimate_calls_size_and_time): Do not access summaries of
inlined edges; sanity check they are missing.
(ipa_call_context::estimate_size_and_time): Use get instead
of get_create to access node summary.
(inline_update_callee_summaries): Do not update depth of
inlined edge.
(ipa_merge_fn_summary_after_inlining): Remove inline edge from
growth caches.
(ipa_merge_fn_summary_after_inlining): Use get instead
of get_create.
* ipa-fnsummary.h (ipa_remove_from_growth_caches): Declare.
* ipa-inline-analyssi.c (edge_growth_cache): Turn to
fast summary.
(initialize_growth_caches): Update.
(do_estimate_edge_time): Remove redundant copy of context.
(ipa_remove_from_growth_caches): New function.
* ipa-inline.c (flatten_function): Update overall summary
only when optimizing.
(inline_to_all_callers): Update overall summary of function
inlined to.
* ipa-inline.h (edge_growth_cache): Turn to fast summary.
* symbol-summary.h (call_summary_base): Set m_initialize_when_cloning
to false.

From-SVN: r277780

5 years agosystem.h: Include malloc.h if INCLUDE_MALLOC_H and HAVE_MALLINFO.
Richard Biener [Mon, 4 Nov 2019 14:05:24 +0000 (14:05 +0000)]
system.h: Include malloc.h if INCLUDE_MALLOC_H and HAVE_MALLINFO.

2019-11-04  Richard Biener  <rguenther@suse.de>

* system.h: Include malloc.h if INCLUDE_MALLOC_H and HAVE_MALLINFO.
* ggc-common.c: Remove inclusion of malloc.h, define INCLUDE_MALLOC_H.

From-SVN: r277779

5 years ago* ggc-common.c: Include system.h before malloc.h.
David Edelsohn [Mon, 4 Nov 2019 13:52:46 +0000 (13:52 +0000)]
* ggc-common.c: Include system.h before malloc.h.

From-SVN: r277778

5 years agopass --enable-obsolete down to gcc/configure for auto-build.h
Alexandre Oliva [Mon, 4 Nov 2019 13:40:12 +0000 (13:40 +0000)]
pass --enable-obsolete down to gcc/configure for auto-build.h

Configuring GCC for obsolete targets works as long as build = host.
When it isn't, --enable-obsolete is not passed down to the additional
build configure started by gcc/configure, used to generate
auto-build.h.  The build configure fails and we end up without a
auto-build.h, but the host configure proceeds, so we only get a fatal
failure much later, when make realizes auto-build.h is not there and
there's no rule to create it.

This patch gets the host configure to fail when the build configure
does, leaving the temporary build configure dir behind for
investigation.  It also arranges for --eanble-obsolete to be passed
down to the build configure.

Alas, the latter triggered a warning in the build configure because
--enable-obsolete is not a recognized configure option.  That's not
reported in the host configure because of the
--disable-option-checking passed by the top-level configure, so I
arranged for that to be passed down to the build configure as well.

Finally, since my initial suspicion when investigating this failure
was that auto-build.h had been removed after configuration and there
was no rule to rebuild it, I'm adding rules to gcc/Makefile to get it
created or updated as needed.  Since it is configure that creates it,
as run by e.g. config.status --recheck, and config.status is created
after auto-build.h, I've made config.status depend on auto-build.h,
and added a dummy rule to create auto-build.h.  This would normally
not be enough to create a header when needed, but since Makefile
depends on config.status, and make first updates Makefile, it ends up
working, as long as nothing else that Makefile depends on requires
auto-build.h but not config.status.  The config.status dependency and
the auto-build.h rule are only enabled in the cases in which
auto-build.h is actually used, namely when build != host.

for  gcc/ChangeLog

* configure.ac: Pass --enable-obsolete=* and
--enable-option-checking=* down to build configure, and fail
if it fails.  AC_SUBST HAVE_AUTO_BUILD.
* configure: Rebuild.
* Makefile.in [HAVE_AUTO_BUILD] (auto-build.h): New rule.
[HAVE_AUTO_BUILD] (config.status): Depend on auto-build.h.

From-SVN: r277777

5 years agolibgomp - remove dg-run if dg-options O2 is used
Tobias Burnus [Mon, 4 Nov 2019 13:18:50 +0000 (13:18 +0000)]
libgomp - remove dg-run if dg-options O2 is used

* testsuite/libgomp.fortran/pr66199-1.f90: Remove
'dg-do run' (implies torture test) as 'dg-options "O2"' is used.
* testsuite/libgomp.fortran/pr66199-2.f90: Ditto.
* testsuite/libgomp.fortran/taskloop2.f90: Ditto.
* testsuite/libgomp.fortran/taskloop3.f90: Ditto.
* testsuite/libgomp.fortran/taskloop4.f90: Ditto.

From-SVN: r277776

5 years agolibgcc: Fix incorrect use of USE_TM_CLONE_REGISTRY
Jozef Lawrynowicz [Mon, 4 Nov 2019 12:41:56 +0000 (12:41 +0000)]
libgcc: Fix incorrect use of USE_TM_CLONE_REGISTRY

2019-11-04  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

* crtstuff.c: Define USE_TM_CLONE_REGISTRY to 0 if it's undefined and
the target output object format is not ELF.
s/defined(USE_TM_CLONE_REGISTRY)/USE_TM_CLONE_REGISTRY.

From-SVN: r277775

5 years agoMSP430: Add -mtiny-printf option
Jozef Lawrynowicz [Mon, 4 Nov 2019 11:23:46 +0000 (11:23 +0000)]
MSP430: Add -mtiny-printf option

2019-11-04  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

gcc/
* config.in: Regenerate.
* config/msp430/msp430.c (msp430_option_override): Emit an error if
-mtiny-printf is used without GCC being configured with
--enable-newlib-nano-formatted-io.
* config/msp430/msp430.h (LINK_SPEC): Pass
"--wrap puts --wrap printf" when -mtiny-printf is used.
* config/msp430/msp430.opt: Document -mtiny-printf.
* configure: Regenerate.
* configure.ac: Enable --enable-newlib-nano-formatted-io flag.
Define HAVE_NEWLIB_NANO_FORMATTED_IO if
--enable-newlib-nano-formatted-io is passed.
* doc/invoke.texi: Document -mtiny-printf.

gcc/testsuite/
* gcc.target/msp430/tiny-printf.c: New test.

From-SVN: r277774

5 years agoRegenerate gcc/configure
Jozef Lawrynowicz [Mon, 4 Nov 2019 11:18:24 +0000 (11:18 +0000)]
Regenerate gcc/configure

From-SVN: r277773

5 years agoMSP430: Add new methods of finding external MCU data file
Jozef Lawrynowicz [Mon, 4 Nov 2019 11:01:03 +0000 (11:01 +0000)]
MSP430: Add new methods of finding external MCU data file

MCU data file can now be specified with an environment variable or installed
into a toolchain subdirectory.

2019-11-04  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

gcc/
* config/msp430/driver-msp430.c
(msp430_get_linker_devices_include_path): New spec function.
* config/msp430/msp430-devices.c (msp430_dirname): New function.
(extract_devices_dir_from_exec_prefix): New function.
(extract_devices_dir_from_collect_gcc): New function.
(msp430_check_env_var_for_devices): New function.
(msp430_check_path_for_devices): Use xstrdup instead of ASTRDUP.
(parse_devices_csv): Call msp430_check_env_var_for_devices if
devices.csv was not found using other methods.
* config/msp430/msp430-devices.h (msp430_check_env_var_for_devices):
New prototype.
(msp430_dirname): Likewise.
* config/msp430/msp430.c (msp430_register_pre_includes): New function.
* config/msp430/msp430.h (EXTRA_SPEC_FUNCTIONS): Add
msp430_get_linker_devices_include_path.
(TARGET_EXTRA_PRE_INCLUDES): Define.
* doc/invoke.texi: Document new ways of searching for support files.

gcc/testsuite/
* gcc.target/msp430/devices/csv-using-env-var.c: New test.
* gcc.target/msp430/devices/csv-using-installed.c: New test.
* gcc.target/msp430/devices/csv-using-option.c: New test.
* gcc.target/msp430/devices/devices-main.c: New test source file.
* gcc.target/msp430/devices/msp430-devices.h: New test.
* gcc.target/msp430/msp430.exp (msp430_device_permutations_runtest):
Add special cases for csv-using* tests.
Define TESTING_HARD_DATA when running tests that use hard-coded device
data.
(get_installed_device_data_path): New.
(msp430_hide_installed_devices_data): New.
(msp430_restore_installed_devices_data): New.
(msp430_test_installed_device_data): New.
(msp430_install_device_data): New.

From-SVN: r277772

5 years agore PR bootstrap/92301 (Wrong vectorizer code since r277566)
Richard Biener [Mon, 4 Nov 2019 10:08:22 +0000 (10:08 +0000)]
re PR bootstrap/92301 (Wrong vectorizer code since  r277566)

2019-11-04  Richard Biener  <rguenther@suse.de>

PR tree-optimization/92301
* tree-vect-stmts.c (process_use): Force reduction PHI defs live
as required by epilogue generation

* gcc.dg/pr92301.c: New testcase.

From-SVN: r277771

5 years agolibgomp/testsuite - use unique numbers with Fortran's 'stop'
Tobias Burnus [Mon, 4 Nov 2019 10:01:22 +0000 (10:01 +0000)]
libgomp/testsuite - use unique numbers with Fortran's 'stop'

        PR fortran/92305
        * testsuite/libgomp.fortran/allocatable2.f90: Use
        unique numbers with 'stop'.
        * testsuite/libgomp.fortran/use_device_addr-1.f90: Ditto.
        * testsuite/libgomp.fortran/use_device_addr-2.f90: Ditto.
        * testsuite/libgomp.fortran/use_device_ptr-1.f90: Ditto.
        * testsuite/libgomp.oacc-fortran/lib-15.f90: Ditto.
        * testsuite/libgomp.oacc-fortran/pset-1.f90: Ditto.

From-SVN: r277769

5 years agoFix hash_operand for fields of a CONSTRUCTOR.
Martin Liska [Mon, 4 Nov 2019 09:11:26 +0000 (10:11 +0100)]
Fix hash_operand for fields of a CONSTRUCTOR.

2019-11-04  Martin Liska  <mliska@suse.cz>

PR ipa/92304
* fold-const.c (operand_compare::hash_operand): Fix field
hashing of CONSTRUCTOR.

From-SVN: r277768

5 years agoCome up with ggc_delete.
Martin Liska [Mon, 4 Nov 2019 09:11:14 +0000 (10:11 +0100)]
Come up with ggc_delete.

2019-11-04  Martin Liska  <mliska@suse.cz>

* ggc.h (ggc_delete): New function.
* ipa-fnsummary.c (ipa_free_fn_summary): Use it.
* ipa-prop.c (ipa_free_all_edge_args): Likewise.
(ipa_free_all_node_params): Likewise.
* ipa-sra.c (ipa_sra_analysis): Likewise.

From-SVN: r277767

5 years agore PR fortran/92113 (r276673 causes segfault in gfortran.dg/pr51434.f90)
Thomas Koenig [Mon, 4 Nov 2019 07:39:21 +0000 (07:39 +0000)]
re PR fortran/92113 (r276673 causes segfault in gfortran.dg/pr51434.f90)

2019-11-04  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/92113
    * ChangeLog: Fix PR number

From-SVN: r277766

5 years agoDaily bump.
GCC Administrator [Mon, 4 Nov 2019 00:16:17 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r277764

5 years agore PR fortran/92113 (r276673 causes segfault in gfortran.dg/pr51434.f90)
Thomas Koenig [Sun, 3 Nov 2019 22:33:53 +0000 (22:33 +0000)]
re PR fortran/92113 (r276673 causes segfault in gfortran.dg/pr51434.f90)

2019-11-03  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/92133
    * trans-decl.c (gfc_get_symbol_decl): If __def_init actually
    contains a value, put it into  the read-only section.

From-SVN: r277760

5 years agoImprove effectivity of ipa_polymorphi_context cache.
Jan Hubicka [Sun, 3 Nov 2019 22:32:56 +0000 (23:32 +0100)]
Improve effectivity of ipa_polymorphi_context cache.

        * ipa-fnsummary.c (set_cond_stmt_execution_predicate,
set_switch_stmt_execution_predicate, compute_bb_predicates,
will_be_nonconstant_expr_predicate,
phi_result_unknown_predicate,
analyze_function_body): Pass arround params summary.
(ipa_call_context::duplicate_from): New comment;
only duplicate useful values.
(ipa_call_context::equal_to): Only compare useful values.
(remap_edge_summaries): Pass params_summary.
(remap_hint_predicate): Likewise.
(ipa_merge_fn_summary_after_inlining): Likewise.
(inline_read_section): Initialize params summary used flags.
* ipa-predicate.c (predicate::remap_after_inlining): Pass
around param_summary.
(add_condition): Initialized used params summary flags.
* ipa-predicate.h (inline_param_summary::equals_to): Make const.
(inline_param_summary::useless_p): New predicate.
(remap_after_inlining, add_condition): Update prototype
* ipa-prop.c (ipa_populate_param_decls): Watch overflow in
move_cost.
(ipa_note_param_call): Add parameter POLYMORPHIC; update params
summaries.
(ipa_analyze_indirect_call_uses): Update use of ipa_note_param_call.
(ipa_analyze_virtual_call_uses): Likewise.
(update_indirect_edges_after_inlining): Update param summaries.
(ipa_print_node_params): Print used flags.
(ipa_read_indirect_edge_info): Update param summareis.
* ipa-prop.h (ipa_param_descriptor): Add
used_by_ipa_predicates, used_by_indirect_call
and used_by_polymorphic_call.
(ipa_set_param_used_by_ipa_predicates,
ipa_set_param_used_by_indirect_call,
ipa_set_param_used_by_polymorphic_call,
ipa_is_param_used_by_ipa_predicates,
ipa_is_param_used_by_indirect_call,
ipa_is_param_used_by_polymorphic_call): New inline functions.

From-SVN: r277759

5 years agoPR c++/88565 - enhance -Warray-bounds for C++ trailing class member arrays
Martin Sebor [Sun, 3 Nov 2019 22:11:37 +0000 (22:11 +0000)]
PR c++/88565 - enhance -Warray-bounds for C++ trailing class member arrays

gcc/testsuite/ChangeLog:

* g++.dg/warn/Warray-bounds-9.C: New test.

From-SVN: r277758

5 years agoipa-fnsummary.c (ipa_call_context::duplicate_from): New member function.
Jan Hubicka [Sun, 3 Nov 2019 16:37:45 +0000 (17:37 +0100)]
ipa-fnsummary.c (ipa_call_context::duplicate_from): New member function.

* ipa-fnsummary.c (ipa_call_context::duplicate_from): New
member function.
(ipa_call_context::release): Add ALL parameter.
(ipa_call_context::equal_to): New member function.
* ipa-fnsummary.h (ipa_call_context): Add empty constructor;
duplicate_form, release, equal_to and exists_p member functoins.
* ipa-inline-analysis.c (node_context_cache_entry): New
class.
(node_context_summary): Likewise.
(node_context_cache, node_context_cache_hit, node_context_cache_miss,
node_context_clear): New static vars.
(initialize_growth_caches): New function.
(free_growth_caches): Also delete node_context_cache; output stats.
(do_estimate_edge_time): Cache contexts.
(reset_node_cache): New function.
* ipa-inline.c (reset_edge_caches): Reset also node cache.
(inline_small_functions): Initialize growth caches.
* ipa-inline.h (reset_node_cache, initialize_growth_caches):
Declare.
* ipa-predicate.h (inline_param_summary::equal_to): New.
* ipa-prop.c (ipa_agg_jf_item::equal_to): New.
* ipa-prop.h (ipa_agg_jf_item): Declare equal_to member function.
(ipa_agg_jump_function): Implement equal_to member function.

From-SVN: r277757

5 years agoipa-fnsummary.c (inline_read_section): Set vector size ahead of time.
Jan Hubicka [Sun, 3 Nov 2019 15:58:43 +0000 (16:58 +0100)]
ipa-fnsummary.c (inline_read_section): Set vector size ahead of time.

* ipa-fnsummary.c (inline_read_section): Set vector size
ahead of time.

From-SVN: r277756

5 years agoipa-fnsummary.c (ipa_call_context): New constructor.
Jan Hubicka [Sun, 3 Nov 2019 13:52:59 +0000 (14:52 +0100)]
ipa-fnsummary.c (ipa_call_context): New constructor.

* ipa-fnsummary.c (ipa_call_context): New constructor.
(estimate_node_size_and_time): Turn to ...
(ipa_call_context::estimate_size_and_time): ... this one.
(ipa_call_context::release): New.
* ipa-fnsummary.h (ipa_call_context): New class.
(estimate_node_size_and_time): Remove.
* ipa-inline-analysis.c (do_estimate_edge_time, do_estimate_edge_size,
do_estimate_edge_hints): Update.

From-SVN: r277755

5 years agoconfig.in: Regenerate.
Jan Hubicka [Sun, 3 Nov 2019 12:50:22 +0000 (12:50 +0000)]
config.in: Regenerate.

* config.in: Regenerate.
* configure: Regenerate.
* configure.ac: Check for mallinfo.
* ggc-common.c: Include malloc.h if available;
include options.h
(report_heap_memory_use): New functoin.
* ggc-page.c (ggc_grow): Do not print "start".
* ggc.h (report_heap_memory_use): Declare.
* pases.c (execute_one_pass): Report memory after IPA passes.
(ipa_read_summaries_1): Likewise.
(ipa_read_optimization_summaries_1): Likewise.

From-SVN: r277754

5 years agoconfig.in: Regenerate.
Jan Hubicka [Sun, 3 Nov 2019 12:48:43 +0000 (13:48 +0100)]
config.in: Regenerate.

  * config.in: Regenerate.
* configure: Regenerate.
* configure.ac: Check for mallinfo.
* ggc-common.c: Include malloc.h if available;
include options.h
(report_heap_memory_use): New functoin.
* ggc-page.c (ggc_grow): Do not print "start".
* ggc.h (report_heap_memory_use): Declare.
* pases.c (execute_one_pass): Report memory after IPA passes.
(ipa_read_summaries_1): Likewise.
(ipa_read_optimization_summaries_1): Likewise.

* lto/lto-common.c (read_cgraph_and_symbols): Improve -Q reporting.
* lto.c (lto_wpa_write_files): Likewise.

From-SVN: r277753

5 years agore PR libgcc/78804 ([RX] -m64bit-doubles does not work)
Oleg Endo [Sun, 3 Nov 2019 12:09:26 +0000 (12:09 +0000)]
re PR libgcc/78804 ([RX] -m64bit-doubles does not work)

libgcc/
PR libgcc/78804
* fp-bit.h: Remove FLOAT_BIT_ORDER_MISMATCH.
* fp-bit.c (pack_d, unpack_d): Remove special cases for
FLOAT_BIT_ORDER_MISMATCH.
* config/arc/t-arc: Remove FLOAT_BIT_ORDER_MISMATCH.

From-SVN: r277752

5 years agoDaily bump.
GCC Administrator [Sun, 3 Nov 2019 00:16:16 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r277749

5 years agotypeck.c (composite_pointer_type): Add a const op_location_t& parameter and use it...
Paolo Carlini [Sat, 2 Nov 2019 09:13:37 +0000 (09:13 +0000)]
typeck.c (composite_pointer_type): Add a const op_location_t& parameter and use it in diagnostics.

/cp
2019-11-02  Paolo Carlini  <paolo.carlini@oracle.com>

* typeck.c (composite_pointer_type): Add a const op_location_t&
parameter and use it in diagnostics.
(composite_pointer_error): Likewise.
(composite_pointer_type_r): Add a const op_location_t&
parameter and forward it.
(cp_build_binary_op): Adjust calls.
(common_pointer_type): Likewise.
* call.c (add_builtin_candidate): Likewise.
(build_conditional_expr_1): Likewise.
* cp-tree.h (composite_pointer_type): Update declaration.

* typeck.c (cxx_sizeof_expr): Use cp_expr_loc_or_input_loc
in permerror.
(cxx_alignof_expr): Likewise.
(lvalue_or_else): Likewise.

/testsuite
2019-11-02  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/conversion/ptrmem9.C: Check location.
* g++.dg/expr/cond2.C: Likewise.
* g++.dg/warn/Waddress-1.C: Check locations.
* g++.old-deja/g++.bugs/900324_02.C: Check location.
* g++.old-deja/g++.jason/rfg20.C: Likewise.
* g++.old-deja/g++.law/typeck1.C: Likewise.
* g++.old-deja/g++.rfg/00321_01-.C: Likewise.
* g++.old-deja/g++.rfg/00324_02-.C: Likewise.

* g++.dg/diagnostic/alignof1.C: New.
* g++.dg/expr/sizeof1.C: Check location.
* g++.dg/cpp0x/rv-lvalue-req.C: Check locations.

From-SVN: r277743

5 years agogimplify.h (omp_construct_selector_matches): Change return type to int, add a new...
Jakub Jelinek [Sat, 2 Nov 2019 09:02:21 +0000 (10:02 +0100)]
gimplify.h (omp_construct_selector_matches): Change return type to int, add a new SCORES argument.

* gimplify.h (omp_construct_selector_matches): Change return
type to int, add a new SCORES argument.
* gimplify.c (omp_construct_selector_matches): Likewise.  If
SCORES is non-NULL, compute scores of each construct.
* omp-general.h (omp_get_context_selector): Declare.
* omp-general.c (omp_maybe_offloaded, omp_context_selector_matches):
Adjust omp_construct_selector_matches callers.
(omp_get_context_selector): New function, moved from c-family/c-omp.c.
(omp_context_compute_score): New function.
(omp_resolve_declare_variant): Compute scores and decide based on
that.
c-family/
* c-common.h (c_omp_get_context_selector): Remove.
* c-omp.c (c_omp_get_context_selector): Moved to omp-general.c
and renamed to omp_get_context_selector.
c/
* c-parser.c (c_finish_omp_declare_variant): Use
omp_get_context_selector instead of c_omp_get_context_selector.
cp/
* decl.c (omp_declare_variant_finalize_one): Use
omp_get_context_selector instead of c_omp_get_context_selector.
testsuite/
* c-c++-common/gomp/declare-variant-12.c: New test.

From-SVN: r277742

5 years agore PR c++/89640 (g++ chokes on lambda with __attribute__)
Jakub Jelinek [Sat, 2 Nov 2019 06:53:53 +0000 (07:53 +0100)]
re PR c++/89640 (g++ chokes on lambda with __attribute__)

PR c++/89640
* parser.c (cp_parser_decl_specifier_seq): Don't parse attributes
if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.

* g++.dg/cpp1z/attr-lambda1.C: New test.
* g++.dg/ext/attr-lambda2.C: New test.

From-SVN: r277741

5 years agoDaily bump.
GCC Administrator [Sat, 2 Nov 2019 00:16:23 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r277740

5 years agore PR bootstrap/92314 (missing omp-device-properties', needed by 's-omp-device-proper...
Jakub Jelinek [Fri, 1 Nov 2019 23:34:21 +0000 (00:34 +0100)]
re PR bootstrap/92314 (missing omp-device-properties', needed by 's-omp-device-properties-h')

PR bootstrap/92314
* configure.ac: Don't look for omp-device-properties files from
installed offloading compilers.  Instead add tmake_file snippets
for configured offloading targets and use files they generate.
* Makefile.in (install): Don't depend on
install-omp-device-properties.
(install-omp-device-properties): Remove goal.
* config/i386/t-omp-device: New file.
* config/i386/t-intelmic (omp-device-properties): Remove goal.
* config/nvptx/t-omp-device: New file.
* config/nvptx/t-nvptx (omp-device-properties): Remove goal.
* configure: Regenerated.

From-SVN: r277735

5 years agoomp-general.h (omp_context_selector_set_compare): Declare.
Jakub Jelinek [Fri, 1 Nov 2019 23:30:55 +0000 (00:30 +0100)]
omp-general.h (omp_context_selector_set_compare): Declare.

* omp-general.h (omp_context_selector_set_compare): Declare.
* omp-general.c (omp_construct_simd_compare,
omp_context_selector_props_compare, omp_context_selector_set_compare,
omp_context_selector_compare): New functions.
(omp_resolve_declare_variant): Prune variants that are strict subset
of another variant.
c-family/
* c-omp.c (c_omp_mark_declare_variant): Use
omp_context_selector_set_compare.
testsuite/
* c-c++-common/gomp/declare-variant-6.c: Expect construct rather than
constructor in diagnostic messages.
* c-c++-common/gomp/declare-variant-7.c: Likewise.
* c-c++-common/gomp/declare-variant-11.c: New test.

From-SVN: r277734

5 years agoPR c++/88335 - Implement P1073R3: Immediate functions
Jakub Jelinek [Fri, 1 Nov 2019 23:28:20 +0000 (00:28 +0100)]
PR c++/88335 - Implement P1073R3: Immediate functions

PR c++/88335 - Implement P1073R3: Immediate functions
c-family/
* c-common.h (enum rid): Add RID_CONSTEVAL.
* c-common.c (c_common_reswords): Add consteval.
cp/
* cp-tree.h (struct lang_decl_fn): Add immediate_fn_p bit.
(DECL_IMMEDIATE_FUNCTION_P, SET_DECL_IMMEDIATE_FUNCTION_P): Define.
(enum cp_decl_spec): Add ds_consteval.
(fold_non_dependent_expr): Add another tree argument defaulted to
NULL_TREE.
* name-lookup.h (struct cp_binding_level): Add immediate_fn_ctx_p
member.
* parser.c (cp_keyword_starts_decl_specifier_p): Adjust comments
for C++11 and C++20 specifiers.  Handle RID_CONSTEVAL.
(CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR): Adjust comment.
(CP_PARSER_FLAGS_CONSTEVAL): New.
(cp_parser_skip_balanced_tokens): New forward declaration.
(cp_parser_lambda_declarator_opt): Handle ds_consteval.  Set
current_binding_level->immediate_fn_ctx_p before parsing parameter
list if decl-specifier-seq contains consteval specifier.
(cp_parser_decl_specifier_seq): Handle RID_CONSTEVAL.
(cp_parser_explicit_instantiation): Diagnose explicit instantiation
with consteval specifier.
(cp_parser_init_declarator): For consteval or into flags
CP_PARSER_FLAGS_CONSTEVAL.
(cp_parser_direct_declarator): If CP_PARSER_FLAGS_CONSTEVAL, set
current_binding_level->immediate_fn_ctx_p in the sk_function_parms
scope.
(set_and_check_decl_spec_loc): Add consteval entry, formatting fix.
* call.c (build_addr_func): For direct calls to immediate functions
use build_address rather than decay_conversion.
(build_over_call): Evaluate immediate function invocations.
* error.c (dump_function_decl): Handle DECL_IMMEDIATE_FUNCTION_P.
* semantics.c (expand_or_defer_fn_1): Use tentative linkage and don't
call mark_needed for immediate functions.
* typeck.c (cxx_sizeof_or_alignof_expr): Likewise.  Formatting fix.
(cp_build_addr_expr_1): Reject taking address of immediate function
outside of immediate function.
* decl.c (validate_constexpr_redeclaration): Diagnose consteval
vs. non-consteval or vice versa redeclaration.  Use
SET_DECL_IMMEDIATE_FUNCTION_P if new_decl is immediate function.
(check_tag_decl): Use %qs with keyword string to simplify translation.
Handle ds_consteval.
(start_decl): Adjust diagnostics for static or thread_local variables
in immediate functions.
(grokfndecl): Call sorry_at on virtual consteval.  Use %qs with keyword
to string to simplify translation.  Diagnose consteval main.  Use
SET_DECL_IMMEDIATE_FUNCTION_P for consteval.
(grokdeclarator): Handle consteval.  Use %qs with keyword strings to
simplify translation.  Use separate ifs instead of chained else if
for invalid specifiers.  For constinit clear constinit_p rather than
constexpr_p.
* constexpr.c (find_immediate_fndecl): New function.
(cxx_eval_outermost_constant_expr): Allow consteval calls returning
void.  Diagnose returning address of immediate function from consteval
evaluation.
(fold_non_dependent_expr_template): Add OBJECT argument, pass it
through to cxx_eval_outermost_constant_expr.
(fold_non_dependent_expr): Add OBJECT argument, pass it through to
fold_non_dependent_expr_template.
(fold_non_dependent_init): Adjust fold_non_dependent_expr_template
caller.
* method.c (defaulted_late_check): Adjust diagnostics for consteval.
* lambda.c (maybe_add_lambda_conv_op): Copy over
DECL_DECLARED_CONSTEXPR_P and DECL_IMMEDIATE_FUNCTION_P bits from
callop to both artificial functions.
* init.c (build_value_init): Don't do further processing if
build_special_member_call returned a TREE_CONSTANT.  Formatting fix.
testsuite/
* g++.dg/cpp2a/consteval1.C: New test.
* g++.dg/cpp2a/consteval2.C: New test.
* g++.dg/cpp2a/consteval3.C: New test.
* g++.dg/cpp2a/consteval4.C: New test.
* g++.dg/cpp2a/consteval5.C: New test.
* g++.dg/cpp2a/consteval6.C: New test.
* g++.dg/cpp2a/consteval7.C: New test.
* g++.dg/cpp2a/consteval8.C: New test.
* g++.dg/cpp2a/consteval9.C: New test.
* g++.dg/cpp2a/consteval10.C: New test.
* g++.dg/cpp2a/consteval11.C: New test.
* g++.dg/cpp2a/consteval12.C: New test.
* g++.dg/cpp2a/consteval13.C: New test.
* g++.dg/cpp2a/consteval14.C: New test.
* g++.dg/ext/consteval1.C: New test.

From-SVN: r277733

5 years agoPR c++/91369 - Implement P0784R7: constexpr new
Jakub Jelinek [Fri, 1 Nov 2019 23:26:17 +0000 (00:26 +0100)]
PR c++/91369 - Implement P0784R7: constexpr new

PR c++/91369 - Implement P0784R7: constexpr new
* cp-tree.h (CALL_FROM_NEW_OR_DELETE_P): Define.
* init.c (build_new_1, build_vec_delete_1, build_delete): Set
CALL_FROM_NEW_OR_DELETE_P on the CALL_EXPR to allocator functions.
* constexpr.c (is_std_allocator_allocate): Only allow
global replaceable allocator functions if CALL_FROM_NEW_OR_DELETE_P
or in std::allocate<T>::{,de}allocate.
(potential_constant_expression_1): Likewise.

* g++.dg/cpp2a/constexpr-new6.C: New test.
* g++.dg/cpp2a/constexpr-new7.C: New test.

From-SVN: r277732

5 years ago* gcc.dg/pr36902.c: Terminate dg-warning regexp string.
Jakub Jelinek [Fri, 1 Nov 2019 23:22:57 +0000 (00:22 +0100)]
* gcc.dg/pr36902.c: Terminate dg-warning regexp string.

From-SVN: r277730

5 years agoPR middle-end/91679 - missing -Warray-bounds accessing a member array in a local...
Martin Sebor [Fri, 1 Nov 2019 21:09:20 +0000 (21:09 +0000)]
PR middle-end/91679 - missing -Warray-bounds accessing a member array in a local buffer

PR middle-end/91679 - missing -Warray-bounds accessing a member array in a local buffer
PR middle-end/91647 - new FAILs for Warray-bounds-8 and Wstringop-overflow-3.C
PR middle-end/91463 - missing -Warray-bounds accessing past the end of a statically initialized flexible array member
PR middle-end/92312 - bogus -Wstringop-overflow storing into a trailing array backed by larger buffer

gcc/ChangeLog:

PR middle-end/91679
PR middle-end/91647
PR middle-end/91463
PR middle-end/92312
* c-family/c-pretty-print.c (direct_abstract_declarator): Print
bound in zero-length arrays.
* gcc/c-family/c.opt (-Wzero-length-bounds): New option.
* gcc/doc/invoke.texi (-Wzero-length-bounds): Document.
* gimple-match-head.c (try_conditional_simplification): Use memcpy
instead of a hand-rolled loop to avoid PR 92323.
* tree-vrp.c (vrp_prop::check_array_ref): Handle trailing arrays
with initializers.
(vrp_prop::check_mem_ref): Handle declared struct objects.
* tree.c (last_field): New function.
(array_at_struct_end_p): Handle MEM_REF.
(get_initializer_for): New helper.
(component_ref_size): Add argument.  Rename locals.  Call
get_initializer_for instead of fold_ctor_reference.  Correct handling
of flexible array members.
* wide-int.h (generic_wide_int <storage>::sign_mask): Assert invariant.

gcc/testsuite/ChangeLog:

PR middle-end/91679
PR middle-end/91647
PR middle-end/91463
PR middle-end/92312
* c-c++-common/Warray-bounds-2.c: Disable VRP.  Adjust expected messages.
* g++.dg/warn/Warray-bounds-8.C: Remove xfails.
* gcc.dg/Warray-bounds-48.c: New test.
* gcc.dg/Warray-bounds-49.c: New test.
* gcc.dg/Wstringop-overflow-16.c: Adjust text of expected messages.
* gcc.dg/Wstringop-overflow-21.c: New test.
* gcc.dg/Wzero-length-array-bounds.c: New test.
* gcc.dg/pr36902.c: Remove xfail.
* gcc.dg/strlenopt-57.c: Add an expected warning.

From-SVN: r277728