gcc.git
3 years agoc++: Add stdlib module test cases
Nathan Sidwell [Mon, 4 Jan 2021 15:45:36 +0000 (07:45 -0800)]
c++: Add stdlib module test cases

The remaining modules tests use the std library.  These are those.

gcc/testsuite/
* g++.dg/modules/binding-1_a.H: New.
* g++.dg/modules/binding-1_b.H: New.
* g++.dg/modules/binding-1_c.C: New.
* g++.dg/modules/binding-2.H: New.
* g++.dg/modules/builtin-3_a.C: New.
* g++.dg/modules/global-2_a.C: New.
* g++.dg/modules/global-2_b.C: New.
* g++.dg/modules/global-3_a.C: New.
* g++.dg/modules/global-3_b.C: New.
* g++.dg/modules/hello-1_a.C: New.
* g++.dg/modules/hello-1_b.C: New.
* g++.dg/modules/iostream-1_a.H: New.
* g++.dg/modules/iostream-1_b.C: New.
* g++.dg/modules/part-5_a.C: New.
* g++.dg/modules/part-5_b.C: New.
* g++.dg/modules/part-5_c.C: New.
* g++.dg/modules/stdio-1_a.H: New.
* g++.dg/modules/stdio-1_b.C: New.
* g++.dg/modules/string-1_a.H: New.
* g++.dg/modules/string-1_b.C: New.
* g++.dg/modules/string-view1.C: New.
* g++.dg/modules/string-view2.C: New.
* g++.dg/modules/tinfo-1.C: New.
* g++.dg/modules/tinfo-2_a.H: New.
* g++.dg/modules/tinfo-2_b.C: New.
* g++.dg/modules/tname-spec-1_a.H: New.
* g++.dg/modules/tname-spec-1_b.C: New.
* g++.dg/modules/xtreme-header-1.h: New.
* g++.dg/modules/xtreme-header-1_a.H: New.
* g++.dg/modules/xtreme-header-1_b.C: New.
* g++.dg/modules/xtreme-header-1_c.C: New.
* g++.dg/modules/xtreme-header-2.h: New.
* g++.dg/modules/xtreme-header-2_a.H: New.
* g++.dg/modules/xtreme-header-2_b.C: New.
* g++.dg/modules/xtreme-header-2_c.C: New.
* g++.dg/modules/xtreme-header-3.h: New.
* g++.dg/modules/xtreme-header-3_a.H: New.
* g++.dg/modules/xtreme-header-3_b.C: New.
* g++.dg/modules/xtreme-header-3_c.C: New.
* g++.dg/modules/xtreme-header-4.h: New.
* g++.dg/modules/xtreme-header-4_a.H: New.
* g++.dg/modules/xtreme-header-4_b.C: New.
* g++.dg/modules/xtreme-header-4_c.C: New.
* g++.dg/modules/xtreme-header-5.h: New.
* g++.dg/modules/xtreme-header-5_a.H: New.
* g++.dg/modules/xtreme-header-5_b.C: New.
* g++.dg/modules/xtreme-header-5_c.C: New.
* g++.dg/modules/xtreme-header-6.h: New.
* g++.dg/modules/xtreme-header-6_a.H: New.
* g++.dg/modules/xtreme-header-6_b.C: New.
* g++.dg/modules/xtreme-header-6_c.C: New.
* g++.dg/modules/xtreme-header.h: New.
* g++.dg/modules/xtreme-header_a.H: New.
* g++.dg/modules/xtreme-header_b.C: New.
* g++.dg/modules/xtreme-tr1.h: New.
* g++.dg/modules/xtreme-tr1_a.H: New.
* g++.dg/modules/xtreme-tr1_b.C: New.

3 years agovect, aarch64: Fix alignment units for IFN_MASK* [PR95401]
Richard Sandiford [Mon, 4 Jan 2021 14:44:21 +0000 (14:44 +0000)]
vect, aarch64: Fix alignment units for IFN_MASK* [PR95401]

The IFN_MASK* functions take two leading arguments: a load or
store pointer and a “cookie”.  The type of the cookie is the
type of the access for TBAA purposes (like for MEM_REFs)
while the value of the cookie is the alignment of the access.
This PR was caused by a disagreement about whether the alignment
is measured in bits or bytes.

It looks like this goes back to PR68786, which made the
vectoriser create its own cookie argument rather than reusing
the one created by ifcvt.  The alignment value of the new cookie
was measured in bytes (as needed by set_ptr_info_alignment)
while the existing code expected it to be measured in bits.
The folds I added for IFN_MASK_LOAD and STORE then made
things worse.

gcc/
PR tree-optimization/95401
* config/aarch64/aarch64-sve-builtins.cc
(gimple_folder::load_store_cookie): Use bits rather than bytes
for the alignment argument to IFN_MASK_LOAD and IFN_MASK_STORE.
* gimple-fold.c (gimple_fold_mask_load_store_mem_ref): Likewise.
* tree-vect-stmts.c (vectorizable_store): Likewise.
(vectorizable_load): Likewise.

gcc/testsuite/
PR tree-optimization/95401
* g++.dg/vect/pr95401.cc: New test.
* g++.dg/vect/pr95401a.cc: Likewise.

3 years ago[libcody] Remove some std::move [PR 98368]
Nathan Sidwell [Mon, 4 Jan 2021 14:38:52 +0000 (06:38 -0800)]
[libcody] Remove some std::move [PR 98368]

Compiling on clang showed a couple of pessimizations.  Fixed thusly.

libcody/
* client.cc (Client::ProcessResponse): Remove std::move
inside ?:
c++tools/
* resolver.cc (module_resolver::cmi_response): Remove
std::move of temporary.

3 years ago[libcody] Windows absdir fix
Mateusz Wajchęprzełóż [Mon, 4 Jan 2021 13:59:10 +0000 (08:59 -0500)]
[libcody]  Windows absdir fix

An obvious thinko in dirve name check :(

libcody/
* resolver.cc (IsAbsDir): Fix string indexing.

Signed-off-by: Nathan Sidwell <nathan@acm.org>
3 years agotree-optimization/98308 - set vector type for mask of masked load
Richard Biener [Mon, 4 Jan 2021 12:25:35 +0000 (13:25 +0100)]
tree-optimization/98308 - set vector type for mask of masked load

This makes sure to set the vector type on an invariant mask argument
for a masked load and SLP.

2021-01-04  Richard Biener  <rguenther@suse.de>

PR tree-optimization/98308
* tree-vect-stmts.c (vectorizable_load): Set invariant mask
SLP vectype.

* gcc.dg/vect/pr98308.c: New testcase.

3 years agoloop-niter: Recognize popcount idioms even with char, short and __int128 [PR95771]
Jakub Jelinek [Mon, 4 Jan 2021 13:36:06 +0000 (14:36 +0100)]
loop-niter: Recognize popcount idioms even with char, short and __int128 [PR95771]

As the testcase shows, we punt unnecessarily on popcount loop idioms if
the type is smaller than int or larger than long long.
Smaller type than int can be handled by zero-extending the argument to
unsigned int, and types twice as long as long long by doing
__builtin_popcountll on both halves of the __int128.

2020-01-04  Jakub Jelinek  <jakub@redhat.com>

PR tree-optimization/95771
* tree-ssa-loop-niter.c (number_of_iterations_popcount): Handle types
with precision smaller than int's precision and types with precision
twice as large as long long.  Formatting fixes.

* gcc.target/i386/pr95771.c: New test.

3 years agotree-optimization/98464 - replace loop info with avail at uses
Richard Biener [Mon, 4 Jan 2021 12:02:24 +0000 (13:02 +0100)]
tree-optimization/98464 - replace loop info with avail at uses

This does VN replacement in loop nb_iterations consistent with
the rest of the IL by using availability at the definition site
of uses.

2021-01-04  Richard Biener  <rguenther@suse.de>

PR tree-optimization/98464
* tree-ssa-sccvn.c (vn_valueize_for_srt): Rename from ...
(vn_valueize_wrapper): ... this.  Temporarily adjust vn_context_bb.
(process_bb): Adjust.

* g++.dg/opt/pr98464.C: New testcase.

3 years agodocs: Fix wording describing the hwaddress sanitizer
Matthew Malcomson [Mon, 4 Jan 2021 12:06:27 +0000 (12:06 +0000)]
docs: Fix wording describing the hwaddress sanitizer

The original documentation added to mention the clash between
-fsanitize=address and -fsanitize=hwaddress used confusing wording trying
to say that -fsanitize=hwaddress is only available on AArch64.

It read as if -fsanitize=address were only supported on AArch64.

This patch fixes that wording by being more explicit.

gcc/ChangeLog:

PR other/98437
* doc/invoke.texi (-fsanitize=address): Fix wording describing
clash with -fsanitize=hwaddress.

3 years agotree-optimization/98282 - classify V_C_E<constant> as nary
Richard Biener [Mon, 4 Jan 2021 10:40:40 +0000 (11:40 +0100)]
tree-optimization/98282 - classify V_C_E<constant> as nary

This avoids running into memory reference code in compute_avail by
properly classifying unfolded reference trees on constants.

2021-01-04  Richard Biener  <rguenther@suse.de>

PR tree-optimization/98282
* tree-ssa-sccvn.c (vn_get_stmt_kind): Classify tcc_reference on
invariants as VN_NARY.

* g++.dg/opt/pr98282.C: New testcase.

3 years agoaarch64: Improve vcombine codegen [PR89057]
Richard Sandiford [Mon, 4 Jan 2021 11:59:07 +0000 (11:59 +0000)]
aarch64: Improve vcombine codegen [PR89057]

This patch fixes a codegen regression in the handling of things like:

  __temp.val[0]      \
    = vcombine_##funcsuffix (__b.val[0],      \
     vcreate_##funcsuffix (__AARCH64_UINT64_C (0))); \

in the 64-bit vst[234] functions.  The zero was forced into a
register at expand time, and we relied on combine to fuse the
zero and combine back together into a single combinez pattern.
The problem is that the zero could be hoisted before combine
gets a chance to do its thing.

gcc/
PR target/89057
* config/aarch64/aarch64-simd.md (aarch64_combine<mode>): Accept
aarch64_simd_reg_or_zero for operand 2.  Use the combinez patterns
to handle zero operands.

gcc/testsuite/
PR target/89057
* gcc.target/aarch64/pr89057.c: New test.

3 years agoaarch64: Use the MUL VL form of SVE PRF[BHWD]
Richard Sandiford [Mon, 4 Jan 2021 11:56:19 +0000 (11:56 +0000)]
aarch64: Use the MUL VL form of SVE PRF[BHWD]

The expansions of the svprf[bhwd] instructions weren't taking
advantage of the immediate addressing mode.

gcc/
* config/aarch64/aarch64.c (offset_6bit_signed_scaled_p): New function.
(offset_6bit_unsigned_scaled_p): Fix typo in comment.
(aarch64_sve_prefetch_operand_p): Accept MUL VLs in the range
[-32, 31].

gcc/testsuite/
* gcc.target/aarch64/sve/acle/asm/prfb.c: Test for a MUL VL range of
[-32, 31].
* gcc.target/aarch64/sve/acle/asm/prfh.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/prfw.c: Likewise.
* gcc.target/aarch64/sve/acle/asm/prfd.c: Likewise.

3 years agotree-optimization/98393 - properly init matches when failing SLP
Richard Biener [Mon, 4 Jan 2021 10:22:24 +0000 (11:22 +0100)]
tree-optimization/98393 - properly init matches when failing SLP

This zeroes matches when failing SLP discovery because of the
work limit.

2021-01-04  Richard Biener  <rguenther@suse.de>

PR tree-optimization/98393
* tree-vect-slp.c (vect_build_slp_tree): Properly zero matches
when hitting the limit.

3 years agoConvert 2 files to utf8.
Martin Liska [Mon, 4 Jan 2021 10:33:59 +0000 (11:33 +0100)]
Convert 2 files to utf8.

libiberty/ChangeLog:

* strverscmp.c: Convert to utf8 from iso8859.

gcc/testsuite/ChangeLog:

* README: Convert to utf8 from iso8859.

3 years agoavr.exp: convert Dos newlines to Unix ones
Martin Liska [Mon, 4 Jan 2021 10:21:20 +0000 (11:21 +0100)]
avr.exp: convert Dos newlines to Unix ones

gcc/testsuite/ChangeLog:

* gcc.target/avr/avr.exp: Run dos2unix on the file.

3 years agotree-optimization/98291 - allow SLP more vectorization of reductions
Richard Biener [Mon, 4 Jan 2021 08:53:11 +0000 (09:53 +0100)]
tree-optimization/98291 - allow SLP more vectorization of reductions

When the VF is one a SLP reduction is in-order and thus we can
vectorize even when the reduction op is not associative.

2021-01-04  Richard Biener  <rguenther@suse.de>

PR tree-optimization/98291
* tree-vect-loop.c (vectorizable_reduction): Bypass
associativity check for SLP reductions with VF 1.

* gcc.dg/vect/slp-reduc-11.c: New testcase.
* gcc.dg/vect/vect-reduc-in-order-4.c: Adjust.

3 years agomatch.pd: Fold x == ~x to false [PR96782]
Jakub Jelinek [Mon, 4 Jan 2021 09:37:12 +0000 (10:37 +0100)]
match.pd: Fold x == ~x to false [PR96782]

x is never equal to ~x, so we can fold such comparisons to constants.

2021-01-04  Jakub Jelinek  <jakub@redhat.com>

PR tree-optimization/96782
* match.pd (x == ~x -> false, x != ~x -> true): New simplifications.

* gcc.dg/tree-ssa/pr96782.c: New test.

3 years agoUpdate copyright years.
Jakub Jelinek [Mon, 4 Jan 2021 09:26:59 +0000 (10:26 +0100)]
Update copyright years.

3 years agoAdd AMD and Ulf Adams as external authors
Jakub Jelinek [Mon, 4 Jan 2021 09:23:07 +0000 (10:23 +0100)]
Add AMD and Ulf Adams as external authors

* update-copyright.py: Add AMD and Ulf Adams as external authors.

3 years agoRemove duplicate ChangeLog entries.
Martin Liska [Mon, 4 Jan 2021 09:17:18 +0000 (10:17 +0100)]
Remove duplicate ChangeLog entries.

gcc/fortran/ChangeLog:

* ChangeLog-2018: Remove duplicate ChangeLog entries.

3 years agoFix up indentation in update-copyright.py
Jakub Jelinek [Mon, 4 Jan 2021 09:16:13 +0000 (10:16 +0100)]
Fix up indentation in update-copyright.py

* update-copyright.py: Use 8 spaces instead of tab to indent.

3 years agomklog.py: add --update-copyright option
Martin Liska [Mon, 4 Jan 2021 08:58:28 +0000 (09:58 +0100)]
mklog.py: add --update-copyright option

contrib/ChangeLog:

* mklog.py: Add --update-copyright option which adds:
"Update copyright years." to ChangeLog files belonging
to a modified file.

3 years agogcc-changelog: Ignore copyright years commits.
Martin Liska [Mon, 4 Jan 2021 08:53:58 +0000 (09:53 +0100)]
gcc-changelog: Ignore copyright years commits.

contrib/ChangeLog:

* gcc-changelog/git_commit.py: Skip Update copyright
years commits.

3 years agoRemove duplicated ChangeLog entries from po/ChangeLog
Jakub Jelinek [Mon, 4 Jan 2021 09:07:07 +0000 (10:07 +0100)]
Remove duplicated ChangeLog entries from po/ChangeLog

to undo broken https://gcc.gnu.org/git/?p=gcc.git;a=blobdiff;f=gcc/po/ChangeLog;h=9f4bf9a8e3a34266e521e24be1adbba52f31e8d3;hp=5f5f8f70e44a374d3a8a615abc6cddc6642982a3;hb=818ab71a415cd234be092111a0aa5e812ec56434;hpb=21fa2a29dc265ab54c957c37d8a9e9ab07d7cd66
change.

3 years agoFix -save-temp leaking lto files in /tmp
Bernd Edlinger [Sun, 13 Dec 2020 07:24:57 +0000 (08:24 +0100)]
Fix -save-temp leaking lto files in /tmp

When linking with -flto and -save-temps, various
temporary files are created in /tmp.
The same happens when invoking the driver with @file
parameter, and using -L or -I options.

gcc:
2021-01-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>

* collect-utils.c (collect_execute): Check dumppfx.
* collect2.c (maybe_run_lto_and_relink, do_link): Pass atsuffix
to collect_execute.
(do_link): Add new parameter atsuffix.
(main): Handle -dumpdir option.  Skip one argument for
-o, -isystem and -B options.
* gcc.c (make_at_file): New helper function.
(close_at_file): Use it.

gcc/testsuite:
2021-01-04  Bernd Edlinger  <bernd.edlinger@hotmail.de>

* gcc.misc-tests/outputs.exp: Adjust testcase.

3 years agoUpdate Copyright in ChangeLog files
Jakub Jelinek [Mon, 4 Jan 2021 08:35:45 +0000 (09:35 +0100)]
Update Copyright in ChangeLog files

Do this separately from all other Copyright updates, as ChangeLog files
can be modified only separately.

3 years agoDaily bump.
GCC Administrator [Mon, 4 Jan 2021 00:16:18 +0000 (00:16 +0000)]
Daily bump.

3 years agoBump copyright year
Eric Botcazou [Sun, 3 Jan 2021 12:43:01 +0000 (13:43 +0100)]
Bump copyright year

gcc/ada/
* gnatvsn.ads: Bump copyright year.

3 years agoconfig: import pkg.m4 from pkg-config
Mike Frysinger [Mon, 24 Dec 2012 02:12:26 +0000 (21:12 -0500)]
config: import pkg.m4 from pkg-config

We use this in the sim tree currently.  Rather than require people to
have pkg-config installed, include it in the config/ dir.

config/ChangeLog:

* pkg.m4: New file from pkg-config-0.29.2.

3 years agolibiberty.h: punt duplicate strverscmp prototype
Mike Frysinger [Thu, 13 Feb 2020 05:24:52 +0000 (00:24 -0500)]
libiberty.h: punt duplicate strverscmp prototype

SVN r216772 accidentally copied & pasted this prototype when adding
other ones nearby.

include/ChangeLog:

* libiberty.h (strverscmp): Delete duplicate prototype.

3 years agoDaily bump.
GCC Administrator [Sun, 3 Jan 2021 00:16:20 +0000 (00:16 +0000)]
Daily bump.

3 years agoDarwin : Adjust defaults for the linker.
Iain Sandoe [Thu, 31 Dec 2020 14:51:56 +0000 (14:51 +0000)]
Darwin : Adjust defaults for the linker.

Ideally, the linker will be queried for its version and that will be
used to determine capabilities that cannot be discovered from
reasonable configuration testing.

When building cross tools, this might not be possible, and we have
strategies for providing useful defaults.  These are adjusted here to
refect current choices.

gcc/ChangeLog:

* config/darwin.h (MIN_LD64_NO_COAL_SECTS): Adjust.
Amend handling for LD64_VERSION fallback defaults.

3 years agoDarwin, Simplify headers 4/5 : Remove redundant headers.
Iain Sandoe [Thu, 31 Dec 2020 14:43:00 +0000 (14:43 +0000)]
Darwin, Simplify headers 4/5 : Remove redundant headers.

The darwinN.h headers (with the sole exception of darwin7.h,
which contains a target macro definition) now only contain
values that set fall-backs for cross-compilations, these can
be provided from the config.gcc script which means we no longer
need the darwinN.h - so delete them.

gcc/ChangeLog:

* config.gcc: Compute default version information
from the configured target.  Likewise defaults for
ld64.
* config/darwin10.h: Removed.
* config/darwin12.h: Removed.
* config/darwin9.h: Removed.
* config/rs6000/darwin8.h: Removed.

3 years agoDarwin, Simplify headers 3/5 : Delete dead code.
Iain Sandoe [Thu, 31 Dec 2020 09:31:04 +0000 (09:31 +0000)]
Darwin, Simplify headers 3/5 : Delete dead code.

Darwin defines ASM_OUTPUT_ALIGNED_DECL_COMMON which is used in
preference to ASM_OUTPUT_ALIGNED_COMMON, which makes the latter
definition dead code.  Remove this.

gcc/ChangeLog:

* config/darwin9.h (ASM_OUTPUT_ALIGNED_COMMON): Delete.

3 years agoDarwin, Simplify headers 2/5 : Move spec for STACK_CHECK_STATIC_BUILTIN.
Iain Sandoe [Wed, 30 Dec 2020 18:03:24 +0000 (18:03 +0000)]
Darwin, Simplify headers 2/5 : Move spec for STACK_CHECK_STATIC_BUILTIN.

We now need a modern (C++11) toolchain to bootstrap GCC, so there's no
need to skip the stack protect for Darwin < 9.

gcc/ChangeLog:

* config/darwin9.h (STACK_CHECK_STATIC_BUILTIN): Move from here..
* config/darwin.h (STACK_CHECK_STATIC_BUILTIN): .. to here.

3 years agoDarwin, Simplify headers 1/5 : Move LINK_GCC_C_SEQUENCE_SPEC [NFC].
Iain Sandoe [Wed, 30 Dec 2020 17:59:42 +0000 (17:59 +0000)]
Darwin, Simplify headers 1/5 : Move LINK_GCC_C_SEQUENCE_SPEC [NFC].

There is no need to make the LINK_GCC_C_SEQUENCE_SPEC conditional on
configuration parameters, it is adequately conditionalized on the
macosx-version-min.

gcc/ChangeLog:

* config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Move from
here...
* config/darwin.h (LINK_GCC_C_SEQUENCE_SPEC): ... to here.

3 years agoDarwin, Simplify headers 0/5 : Move spec for Darwin 10 unwind stub [NFC].
Iain Sandoe [Wed, 30 Dec 2020 16:56:12 +0000 (16:56 +0000)]
Darwin, Simplify headers 0/5 : Move spec for Darwin 10 unwind stub [NFC].

The darwinN.h headers were (presumably) introduced to allow specs to be
adjusted when there was no mmacosx-version-min handling, or that was
considered unreliable.

We have version-specific specs for the values that have configuration
data, and the version is set in the driver (so may be considered
reliably present).

Some of the 'darwinN.h' content has become dead code, and the reminder
is either conditionalised on version information (or is setting values
used as fall-backs in cross-compilations).

With the changes needed for Darwin20 / macOS 11 the 'darwnN.h' headers
are now too unwieldy to be useful - so this series moves the relevant
specs definitons to the common 'darwin.h' header and then finally uses
the config.gcc script to supply the fall-back defaults for cross-
compilations.

We can then delete all but the main header, since the darwinN.h are
unused.

This change moves a spec from darwin10.h to the main darwin.h
target header.

gcc/ChangeLog:

* config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Move the spec
for the Darwin10 unwinder stub from here ...
* config/darwin.h (LINK_COMMAND_SPEC_A): ... to here.

3 years agoDarwin : Adjust defaults for current bootstrap constraints.
Iain Sandoe [Wed, 30 Dec 2020 10:36:52 +0000 (10:36 +0000)]
Darwin : Adjust defaults for current bootstrap constraints.

The toolchain now requires a C++11 compiler to bootstrap and
none of the older Darwin toolchains which were based on stabs
debugging are suitable.  We can simplify the debug setup now.

gcc/ChangeLog:

* config/darwin.h (DSYMUTIL_SPEC): Default to DWARF
(ASM_DEBUG_SPEC):Only define if the assembler supports
stabs.
(PREFERRED_DEBUGGING_TYPE): Default to DWARF.
(DARWIN_PREFER_DWARF): Define.
* config/darwin9.h (PREFERRED_DEBUGGING_TYPE): Remove.
(DARWIN_PREFER_DWARF): Likewise
(DSYMUTIL_SPEC): Likewise.
(COLLECT_RUN_DSYMUTIL): Likewise.
(ASM_DEBUG_SPEC): Likewise.
(ASM_DEBUG_OPTION_SPEC): Likewise.

3 years agoggc_free basic blocks
Jan Hubicka [Sat, 2 Jan 2021 15:05:17 +0000 (16:05 +0100)]
ggc_free basic blocks

* cfg.c (free_block): ggc_free bb.

3 years agoFree datastructures pointing to CFG after parsing
Jan Hubicka [Sat, 2 Jan 2021 15:03:41 +0000 (16:03 +0100)]
Free datastructures pointing to CFG after parsing

* cp-tree.h (cp_tree_c_finish_parsing): Declare.
* decl2.c (c_parse_final_cleanups): Call cp_tree_c_finish_parsing.
* tree.c (cp_tree_c_finish_parsing): New function.

3 years agoDaily bump.
GCC Administrator [Sat, 2 Jan 2021 00:16:24 +0000 (00:16 +0000)]
Daily bump.

3 years agointernal/cpu: add aarch64 support functions
Ian Lance Taylor [Fri, 1 Jan 2021 20:05:39 +0000 (12:05 -0800)]
internal/cpu: add aarch64 support functions

Patch from Andreas Schwab.

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

3 years agoruntime: move startupRandomData back to runtime2.go
Ian Lance Taylor [Fri, 1 Jan 2021 19:51:50 +0000 (11:51 -0800)]
runtime: move startupRandomData back to runtime2.go

In libgo it's referenced from os_gccgo.go on all platforms.

Fixes go/98496

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

3 years agointernal/cpu, golang.org/x/sys/cpu: support other GOARCH values
Ian Lance Taylor [Thu, 31 Dec 2020 19:23:30 +0000 (11:23 -0800)]
internal/cpu, golang.org/x/sys/cpu: support other GOARCH values

Add support (mostly dummy support) for GOARCH values supported by
gofrontend but not gc.  Fix PPC handling.

Fixes https://gcc.gnu.org/PR98493

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

3 years agoPR fortran/96381 - invalid read in gfc_find_derived_vtab
Harald Anlauf [Fri, 1 Jan 2021 17:55:41 +0000 (18:55 +0100)]
PR fortran/96381 - invalid read in gfc_find_derived_vtab

An invalid declaration of a CLASS instance can lead to an internal state
with inconsistent attributes during parsing that needs to be handled with
sufficient care when processing subsequent statements.  Avoid a lookup of
the vtab entry for such cases.

gcc/fortran/ChangeLog:

* class.c (gfc_find_vtab): Add check on attribute is_class.

3 years agoUpdate copyright dates.
Jakub Jelinek [Fri, 1 Jan 2021 16:42:37 +0000 (17:42 +0100)]
Update copyright dates.

Manual part of copyright year updates.

2021-01-01  Jakub Jelinek  <jakub@redhat.com>

gcc/
* gcc.c (process_command): Update copyright notice dates.
* gcov-dump.c (print_version): Ditto.
* gcov.c (print_version): Ditto.
* gcov-tool.c (print_version): Ditto.
* gengtype.c (create_file): Ditto.
* doc/cpp.texi: Bump @copying's copyright year.
* doc/cppinternals.texi: Ditto.
* doc/gcc.texi: Ditto.
* doc/gccint.texi: Ditto.
* doc/gcov.texi: Ditto.
* doc/install.texi: Ditto.
* doc/invoke.texi: Ditto.
gcc/ada/
* gnat_ugn.texi: Bump @copying's copyright year.
* gnat_rm.texi: Likewise.
gcc/d/
* gdc.texi: Bump @copyrights-d year.
gcc/fortran/
* gfortranspec.c (lang_specific_driver): Update copyright notice
dates.
* gfc-internals.texi: Bump @copying's copyright year.
* gfortran.texi: Ditto.
* intrinsic.texi: Ditto.
* invoke.texi: Ditto.
gcc/go/
* gccgo.texi: Bump @copyrights-go year.
libgomp/
* libgomp.texi: Bump @copying's copyright year.
libitm/
* libitm.texi: Bump @copying's copyright year.
libquadmath/
* libquadmath.texi: Bump @copying's copyright year.

3 years agoRotate ChangeLog files - step 2 - remove 2020 entries from ChangeLog files.
Jakub Jelinek [Fri, 1 Jan 2021 16:30:04 +0000 (17:30 +0100)]
Rotate ChangeLog files - step 2 - remove 2020 entries from ChangeLog files.

Can't be committed together with the previous one due to the ChangeLog vs.
other files restrictions.

3 years agoRotate ChangeLog files - part 1 - add ChangeLog-2020.
Jakub Jelinek [Fri, 1 Jan 2021 16:26:04 +0000 (17:26 +0100)]
Rotate ChangeLog files - part 1 - add ChangeLog-2020.

2021-01-01  Jakub Jelinek  <jakub@redhat.com>

gcc/
* ChangeLog-2020: Rotate ChangeLog.  New file.
gcc/ada/
* ChangeLog-2020: Rotate ChangeLog.  New file.
gcc/cp/
* ChangeLog-2020: Rotate ChangeLog.  New file.
gcc/d/
* ChangeLog-2020: Rotate ChangeLog.  New file.
gcc/fortran/
* ChangeLog-2020: Rotate ChangeLog.  New file.
gcc/testsuite/
* ChangeLog-2020: Rotate ChangeLog.  New file.
libgfortran/
* ChangeLog-2020: Rotate ChangeLog.  New file.
libstdc++-v3/
* ChangeLog-2020: Rotate ChangeLog.  New file.

3 years agodisable some aapcs/vfp*.c test if not arm_fp16_alternative_ok
Joel Brobecker [Fri, 1 Jan 2021 00:38:03 +0000 (21:38 -0300)]
disable some aapcs/vfp*.c test if not arm_fp16_alternative_ok

The tests use -mfp16-format=alternative, and so should not be run
if that option isn't supported.

for  gcc/testsuite/ChangeLog

* lib/target-supports.exp
(check_effective_target_arm_fp16_alternative_ok_nocache):
Return zero for *-*-vxworks7r* targets.
* gcc.target/arm/aapcs/vfp22.c: Require arm_fp16_alternative_ok.
* gcc.target/arm/aapcs/vfp23.c: Likewise.
* gcc.target/arm/aapcs/vfp24.c: Likewise.
* gcc.target/arm/aapcs/vfp25.c: Likewise.

3 years agofix testsuite/g++.dg/init/new26.C for C++-14 and later
Jerome Lambourg [Fri, 1 Jan 2021 00:37:48 +0000 (21:37 -0300)]
fix testsuite/g++.dg/init/new26.C for C++-14 and later

This test fails during the execution on VxWorks 7 when using
C++-14 and C++-17.

for  gcc/testsuite/ChangeLog

* g++.dg/init/new26.C: Fix overriding of the delete operator
for c++14 profile.

3 years agog++.dg/tls/pr79288.C: Skip on vxworks_kernel (TLS model not supported)
Jerome Lambourg [Fri, 1 Jan 2021 00:38:13 +0000 (21:38 -0300)]
g++.dg/tls/pr79288.C: Skip on vxworks_kernel (TLS model not supported)

The only TLS model supported in VxWorks kernel mode is local-exec.

for  gcc/testsuite/ChangeLog

* g++.dg/tls/pr79288.C: Skip on vxworks_kernel (TLS model
not supported).

3 years agocompile gcc.target/arm/{pr78255-2.c,memset-inline-2.c} with -mno-long-calls
Joel Brobecker [Fri, 1 Jan 2021 00:38:05 +0000 (21:38 -0300)]
compile gcc.target/arm/{pr78255-2.c,memset-inline-2.c} with -mno-long-calls

If the target is configured such that -mlong-call is passed
by default, the function calls these tests are trying to detect
by scanning the assembly file are performed using long calls,
like so:

    | foo:
    |     @ memset-inline-2.c:12:   memset (a, -1, 14);
    |         mov     r2, #14 @,
    |         mvn     r1, #0  @,
    |         ldr     r0, .L2 @,
    |         ldr     r3, .L2+4       @ tmp112,
    |         bx      r3              @ tmp112

Looking at .L2 (and in particular at .L2+4):

    | .L2:
    |         .word   a
    |         .word   memset   <<<---

This change adds -mno-long-calls to the list of compiler options
to make sure we generate short call code, allowing the assembly
matching to pass.

This is added unconditionally to the dg-options (as opposed to using
dg-additional-options) because this test is already specific to ARM
targets, and -mno-long-calls is available on all ARM targets.

for  gcc/testsuite/ChangeLog

* gcc.target/arm/memset-inline-2.c: Add -mno-long-calls to
the test's dg-options.
* gcc.target/arm/pr78255-2.c: Likewise.

3 years agoFix testsuite/g++.old-deja/g++.mike/p658.C build failure on VxWorks RTP
Jerome Lambourg [Fri, 1 Jan 2021 00:38:00 +0000 (21:38 -0300)]
Fix testsuite/g++.old-deja/g++.mike/p658.C build failure on VxWorks RTP

The conflicting definition of OK is present in VxWorks RTP headers too.

for  gcc/testsuite/ChangeLog

* g++.old-deja/g++.mike/p658.C: Also undefine OK on VxWorks RTP.

3 years agoFix testsuite/g++.dg/opt/20050511-1.C compilation error on VxWorks 7
Jerome Lambourg [Fri, 1 Jan 2021 00:37:59 +0000 (21:37 -0300)]
Fix testsuite/g++.dg/opt/20050511-1.C compilation error on VxWorks 7

In VxWorks 7, UINT32 is defined in both modes, kernel and rtp.  Adjust
the work around accordingly.

for  gcc/testsuite/ChangeLog

* g++.dg/opt/20050511-1.C: Work around UINT32 in vxworks rtp
headers too.

3 years agoSkip testsuite/g++.old-deja/g++.pt/const2.C on vxworks_kernel
Jerome Lambourg [Fri, 1 Jan 2021 00:37:56 +0000 (21:37 -0300)]
Skip testsuite/g++.old-deja/g++.pt/const2.C on vxworks_kernel

Linking in vxworks kernel-mode is partial linking, so missing symbols
are not detected.

for  gcc/testsuite/ChangeLog

* g++.old-deja/g++.pt/const2.C: Skip on vxworks kernel.

3 years agoRemove VxWorks-specific test directives in g++.dg/warn/miss-format-1.C
Jerome Lambourg [Fri, 1 Jan 2021 00:37:54 +0000 (21:37 -0300)]
Remove VxWorks-specific test directives in g++.dg/warn/miss-format-1.C

These are no longer applicable.

for  gcc/testsuite/ChangeLog

* g++.dg/warn/miss-format-1.C: Remove vxworks-specific test
directives.

3 years agoUndefine ERROR in g++.dg/tree-ssa/copyprop.C
Jerome Lambourg [Fri, 1 Jan 2021 04:55:01 +0000 (01:55 -0300)]
Undefine ERROR in g++.dg/tree-ssa/copyprop.C

VxWorks headers define ERROR as a macro, which conflicts with the use
in the test.

for  gcc/testsuite/ChangeLog

* g++.dg/tree-ssa/copyprop.C: Undefine ERROR if defined.

3 years agoskip testsuite/g++.dg/other/anon5.C on vxworks_kernel targets
Jerome Lambourg [Fri, 1 Jan 2021 04:55:00 +0000 (01:55 -0300)]
skip testsuite/g++.dg/other/anon5.C on vxworks_kernel targets

The vxworks kernel-mode linking is partial linking, so it cannot
detect missing symbols.

for  gcc/testsuite/ChangeLog

* g++.dg/other/anon5.C: Skip on vxworks kernel.

3 years agoAdd conditions on VxWorks versions for gcc.dg/vxworks/initpri?.c
Jerome Lambourg [Fri, 1 Jan 2021 04:54:59 +0000 (01:54 -0300)]
Add conditions on VxWorks versions for gcc.dg/vxworks/initpri?.c

Adjust vxworks initpri expectations, given that vxworks7 has switched
to .init_array.

for  gcc/testsuite/ChangeLog

* gcc.dg/vxworks/initpri1.c: Tigthen VxWorks version check.
* gcc.dg/vxworks/initpri2.c: Likewise.

3 years agogcc.dg/intmax_t-1.c compiles without error on VxWorks 7 SR06x0
Joel Brobecker [Fri, 1 Jan 2021 04:54:58 +0000 (01:54 -0300)]
gcc.dg/intmax_t-1.c compiles without error on VxWorks 7 SR06x0

This test currently fails on VxWorks 7 SR06x0 targets when in kernel
mode, because it expects a discrepancy between built-in and system
intmax_t for all VxWorks targets when in kernel mode.  Fortunately,
this has now been fixed when targetting VxWorks 7 SR06x0, so this
commit adjusts the "dg-error" condition to exclude newer versions of
VxWorks 7.

for  gcc/testsuite/ChangeLog

* gcc.dg/intmax_t-1.c: Do not expect an error on *-*-vxworks7r*
targets.

3 years agoFix VxWorks xfail filters on pthread-init-?.c
Olivier Hainque [Fri, 1 Jan 2021 04:54:57 +0000 (01:54 -0300)]
Fix VxWorks xfail filters on pthread-init-?.c

Match xfail on kernel instead of rtp mode.

for  gcc/testsuite/changeLog

* gcc.dg/pthread-init-1.c: Fix the VxWorks xfail filters.
* gcc.dg/pthread-init-2.c: Ditto.

3 years agoAdd missing vxworks filters to lib/target-supports.exp functions
Olivier Hainque [Fri, 1 Jan 2021 00:37:42 +0000 (21:37 -0300)]
Add missing vxworks filters to lib/target-supports.exp functions

Explicitly disable some vxworks-missing features in the testsuite, that
the current feature tests detect as present.

for  gcc/testsuite/ChangeLog

* lib/target-supports.exp (check_weak_available,
check_fork_available, check_effective_target_lto,
check_effective_target_mempcpy): Add vxworks filters.

3 years ago-mno-long-calls for mve_libcall tests
Alexandre Oliva [Fri, 1 Jan 2021 00:38:27 +0000 (21:38 -0300)]
-mno-long-calls for mve_libcall tests

The implicit -mlong-calls used in our vxworks configurations changes
the call sequences from those expected in the mve_libcall testcases.

This patch brings the test output in line with the expectations, with
an explicit -mno-long-calls.

for  gcc/testsuite/ChangeLog

* gcc.target/arm/mve/intrinsics/mve_libcall1.c: Pass an
explicit -mno-long-calls.
* gcc.target/arm/mve/intrinsics/mve_libcall2.c: Likewise.

3 years ago-mno-long-calls for arm/no_unique_address tests
Alexandre Oliva [Fri, 1 Jan 2021 00:38:24 +0000 (21:38 -0300)]
-mno-long-calls for arm/no_unique_address tests

The implicit -mlong-calls from our vxworks configurations makes the
tail-call instructions differ from those expected by the
no_unique_address tests in gcc.target/arm.

This patch adds -mno-long-calls to the compilation commands, so that
we generate the expected sequences.

for  gcc/testsuite/ChangeLog

* g++.target/arm/no_unique_address_1.C: Add -mno-long-calls.
* g++.target/arm/no_unique_address_2.C: Likewise.

3 years ago-mno-long-calls for arm/headmerge tests
Alexandre Oliva [Fri, 1 Jan 2021 00:38:23 +0000 (21:38 -0300)]
-mno-long-calls for arm/headmerge tests

The headmerge tests pass a constant to conditional calls, so that the
same constant is always passed to a function, though it's a different
function depending on which path is taken.

The test checks that the constant appears only once in the assembly
output, as a means to verify that the insns setting up the argument
are unified: they appear as separate insns up to jump2, where
crossjump identifies a common prefix to all conditional paths and
unifies them.

Alas, with -mlong-calls, that we enable in our arm-vxworks
configurations, the argument register is loaded after loading the
callee address into another register.  Since each path calls a
different function, there's no common initial code sequence for
crossjump to unify, and the argument register set up remains separate,
so the test fails.

Though it would surely be desirable for the compiler to perform the
unification of the argument register setting up, this patch merely
avoids the effects of -mlong-calls, with an explicit -mno-long-calls.

for  gcc/testsuite/ChangeLog

* gcc.target/arm/headmerge-1.c: Add -mno-long-calls.
* gcc.target/arm/headmerge-2.c: Likewise.

3 years ago-mno-long-calls for expected regalloc in arm/fp16-aapcs-2.c test
Alexandre Oliva [Fri, 1 Jan 2021 00:38:22 +0000 (21:38 -0300)]
-mno-long-calls for expected regalloc in arm/fp16-aapcs-2.c test

The implicit -mlong-calls used in our arm-vxworks configurations
changes the register allocation patterns in the arm/fp16-aapcs-2.c
test: r3 ends up used in the long-call sequence, and we end up using
ip as a temporary, which doesn't match the expected mov patterns.

This patch adds an explicit -mno-long-calls for the generated code to
match the expectation.

for  gcc/testsuite/ChangeLog

* gcc.target/arm/fp16-aapcs-2.c: Use -mno-long-calls.

3 years agoDaily bump.
GCC Administrator [Fri, 1 Jan 2021 00:16:20 +0000 (00:16 +0000)]
Daily bump.

3 years agotestsuite: Fix up pr56719.c testcase [PR98489]
Jakub Jelinek [Thu, 31 Dec 2020 23:03:35 +0000 (00:03 +0100)]
testsuite: Fix up pr56719.c testcase [PR98489]

On some targets, there are no < 8191; and >= 8191; strings,
but < 8191) and >= 8191), so just remove the ; from the regexps.

2021-01-01  Jakub Jelinek  <jakub@redhat.com>

PR testsuite/98489
PR tree-optimization/56719
* gcc.dg/tree-ssa/pr56719.c: Remove semicolon from
scan-tree-dump-times regexps.

3 years agovect: Avoid generating out-of-range shifts [PR98302]
Richard Sandiford [Thu, 31 Dec 2020 16:51:34 +0000 (16:51 +0000)]
vect: Avoid generating out-of-range shifts [PR98302]

In this testcase we end up with:

  unsigned long long x = ...;
  char y = (char) (x << 37);

The overwidening pattern realised that only the low 8 bits
of x << 37 are needed, but then tried to turn that into:

  unsigned long long x = ...;
  char y = (char) x << 37;

which gives an out-of-range shift.  In this case y can simply
be replaced by zero, but as the comment in the patch says,
it's kind-of awkward to do that in the middle of vectorisation.

Most of the overwidening stuff is about keeping operations
as narrow as possible, which is important for vectorisation
but could be counter-productive for scalars (especially on
RISC targets).  In contrast, optimising y to zero in the above
feels like an independent optimisation that would benefit scalar
code and that should happen before vectorisation.

gcc/
PR tree-optimization/98302
* tree-vect-patterns.c (vect_determine_precisions_from_users): Make
sure that the precision remains greater than the shift count.

gcc/testsuite/
PR tree-optimization/98302
* gcc.dg/vect/pr98302.c: New test.

3 years agovect: Fix bogus alignment assumption in alias checks [PR94994]
Richard Sandiford [Thu, 31 Dec 2020 16:51:33 +0000 (16:51 +0000)]
vect: Fix bogus alignment assumption in alias checks [PR94994]

This PR is about a case in which the vectoriser was feeding
incorrect alignment information to tree-data-ref.c, leading
to incorrect runtime alias checks.  The alignment was taken
from the TREE_TYPE of the DR_REF, which in this case was a
COMPONENT_REF with a normally-aligned type.  However, the
underlying MEM_REF was only byte-aligned.

This patch uses dr_alignment to calculate the (byte) alignment
instead, just like we do when creating vector MEM_REFs.

gcc/
PR tree-optimization/94994
* tree-vect-data-refs.c (vect_vfa_align): Use dr_alignment.

gcc/testsuite/
PR tree-optimization/94994
* gcc.dg/vect/pr94994.c: New test.

3 years agogenmodes: Update GET_MODE_MASK when changing NUNITS [PR98214]
Richard Sandiford [Thu, 31 Dec 2020 16:10:47 +0000 (16:10 +0000)]
genmodes: Update GET_MODE_MASK when changing NUNITS [PR98214]

The static GET_MODE_MASKs for SVE vectors are based on the
static precisions, which in turn are based on 128-bit SVE.
The precisions are later updated based on -msve-vector-bits
(usually to become variable length), but the GET_MODE_MASK
stayed the same.  This caused combine to fold:

  (*_extract:DI (subreg:DI (reg:VNxMM R) 0) ...)

to zero because the extracted bits appeared to be insignificant.

gcc/
PR rtl-optimization/98214
* genmodes.c (emit_insn_modes_h): Emit a definition of CONST_MODE_MASK.
(emit_mode_mask): Treat mode_mask_array as non-constant if adj_nunits.
(emit_mode_adjustments): Update GET_MODE_MASK when updating
GET_MODE_NUNITS.
* machmode.h (mode_mask_array): Use CONST_MODE_MASK.

3 years agomatch.pd: Add clz(X) == 0 -> (int)X < 0 etc. simpifications [PR94802]
Jakub Jelinek [Thu, 31 Dec 2020 10:09:26 +0000 (11:09 +0100)]
match.pd: Add clz(X) == 0 -> (int)X < 0 etc. simpifications [PR94802]

The following patch adds some clz simplifications.  If
clz is 0, then the MSB of the argument is set, and if clz is prec-1, then
the argument is 1.

2020-12-31  Jakub Jelinek  <jakub@redhat.com>

PR tree-optimization/94802
* match.pd (clz(X) == 0 -> (int)X < 0): New simplification.
(clz(X) == (prec-1) -> X == 1): Likewise.

* gcc.dg/tree-ssa/pr94802-1.c: New test.

3 years agomatch.pd: Add (-(X < 0) | 1) * X -> abs (X) etc. simplifications [PR94785]
Jakub Jelinek [Thu, 31 Dec 2020 10:08:15 +0000 (11:08 +0100)]
match.pd: Add (-(X < 0) | 1) * X -> abs (X) etc. simplifications [PR94785]

The following patch adds two simplifications to recognize idioms
for ABS_EXPR resp. ABSU_EXPR.

2020-12-31  Jakub Jelinek  <jakub@redhat.com>

PR tree-optimization/94785
* match.pd ((-(X < 0) | 1) * X -> abs (X)): New simplification.
((-(X < 0) | 1U) * X -> absu (X)): Likewise.

* gcc.dg/tree-ssa/pr94785.c: New test.

3 years agowide-int: Fix wi::to_mpz [PR98474]
Jakub Jelinek [Thu, 31 Dec 2020 10:06:56 +0000 (11:06 +0100)]
wide-int: Fix wi::to_mpz [PR98474]

The following testcase is miscompiled, because niter analysis miscomputes
the number of iterations to 0.
The problem is that niter analysis uses mpz_t (wonder why, wouldn't
widest_int do the same job?) and when wi::to_mpz is called e.g. on the
TYPE_MAX_VALUE of __uint128_t, it initializes the mpz_t result with wrong
value.
wi::to_mpz has code to handle negative wide_ints in signed types by
inverting all bits, importing to mpz and complementing it, which is fine,
but doesn't handle correctly the case when the wide_int's len (times
HOST_BITS_PER_WIDE_INT) is smaller than precision when wi::neg_p.
E.g. the 0xffffffffffffffffffffffffffffffff TYPE_MAX_VALUE is represented
in wide_int as 0xffffffffffffffff len 1, and wi::to_mpz would create
0xffffffffffffffff mpz_t value from that.
This patch handles it by adding the needed -1 host wide int words (and has
also code to deal with precision that aren't multiple of
HOST_BITS_PER_WIDE_INT).

2020-12-31  Jakub Jelinek  <jakub@redhat.com>

PR tree-optimization/98474
* wide-int.cc (wi::to_mpz): If wide_int has MSB set, but type
is unsigned and excess negative, append set bits after len until
precision.

* gcc.c-torture/execute/pr98474.c: New test.

3 years agofold-const: Avoid (cast) ((cast2) x p+ y) folding for -fsanitize=alignment [PR98206]
Jakub Jelinek [Thu, 31 Dec 2020 09:20:39 +0000 (10:20 +0100)]
fold-const: Avoid (cast) ((cast2) x p+ y) folding for -fsanitize=alignment [PR98206]

The following testcase is diagnosed by UBSan as invalid, even when it is
valid.
We have a derived type Base2 at offset 1 with alignment 1 and do:
(const Derived &) ((const Base2 *) this + -1)
but the folder before ubsan in the FE gets a chance to instrument it
optimizes that into:
(const Derived &) this + -1
and so we require that this has 8-byte alignment which Derived class needs.

Fixed by avoiding such an optimization when -fsanitize=alignment is in
effect if it would affect the alignments (and guarded with !in_gimple_form
because we don't really care during GIMPLE, though pointer conversions are
useless then and so such folding isn't needed very much during GIMPLE).

2020-12-31  Jakub Jelinek  <jakub@redhat.com>

PR c++/98206
* fold-const.c: Include asan.h.
(fold_unary_loc): Don't optimize (ptr_type) (((ptr_type2) x) p+ y)
into ((ptr_type) x) p+ y if sanitizing alignment in GENERIC and
ptr_type points to type with higher alignment than ptr_type2.

* g++.dg/ubsan/align-4.C: New test.

3 years agoreassoc: Optimize x > 0x1fff || y > 0x1fff into (x | y) > 0x1fff [PR56719]
Jakub Jelinek [Thu, 31 Dec 2020 09:19:06 +0000 (10:19 +0100)]
reassoc: Optimize x > 0x1fff || y > 0x1fff into (x | y) > 0x1fff [PR56719]

The following patch adds an optimization mentioned in PR56719 #c8.
We already have the x != 0 && y != 0 && z != 0 into (x | y | z) != 0
and x != -1 && y != -1 && y != -1 into (x & y & z) != -1
optimizations, this patch just extends that to
x < C && y < C && z < C for power of two constants C into
(x | y | z) < C (for unsigned comparisons).

I didn't want to create too many buckets (there can be TYPE_PRECISION such
constants), so the patch instead just uses one buckets for all such
constants and loops over that bucket up to TYPE_PRECISION times.

2020-12-31  Jakub Jelinek  <jakub@redhat.com>

PR tree-optimization/56719
* tree-ssa-reassoc.c (optimize_range_tests_cmp_bitwise): Also optimize
x < C && y < C && z < C when C is a power of two constant into
(x | y | z) < C.

* gcc.dg/tree-ssa/pr56719.c: New test.

3 years agod: Mangled Symbols now back reference types and identifiers
Iain Buclaw [Thu, 31 Dec 2020 00:05:01 +0000 (01:05 +0100)]
d: Mangled Symbols now back reference types and identifiers

Symbols with extern(D) linkage are now mangled using back references to
types and identifiers if these occur more than once in the mangled name
as emitted before.  This reduces symbol length, especially with chained
expressions of templated functions with Voldemort return types.

For example, the average symbol length of the 127000+ symbols created by
a libphobos unittest build is reduced by a factor of about 3, while the
longest symbol shrinks from 416133 to 1142 characters.

Reviewed-on: https://github.com/dlang/dmd/pull/12079

gcc/d/ChangeLog:

* dmd/MERGE: Merge upstream dmd 2bd4fc3fe.

3 years agoDaily bump.
GCC Administrator [Thu, 31 Dec 2020 00:16:29 +0000 (00:16 +0000)]
Daily bump.

3 years agolibgo: update to Go1.16beta1 release
Ian Lance Taylor [Wed, 23 Dec 2020 17:57:37 +0000 (09:57 -0800)]
libgo: update to Go1.16beta1 release

This does not yet include support for the //go:embed directive added
in this release.

* Makefile.am (check-runtime): Don't create check-runtime-dir.
(mostlyclean-local): Don't remove check-runtime-dir.
(check-go-tool, check-vet): Copy in go.mod and modules.txt.
(check-cgo-test, check-carchive-test): Add go.mod file.
* Makefile.in: Regenerate.

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

3 years agoi386: Remove unnecessary clobbers from combine splitters.
Uros Bizjak [Wed, 30 Dec 2020 16:41:21 +0000 (17:41 +0100)]
i386: Remove unnecessary clobbers from combine splitters.

There is no need for combine splitters to emit insn patterns with clobbers,
the pass is smart enough to add clobbers to patterns  as necessary.

2020-12-30  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
* config/i386/i386.md: Remove unnecessary clobbers
from combine splitters.

3 years agod: Simplify quoting characters in deps_add_target
Iain Buclaw [Thu, 24 Dec 2020 21:23:16 +0000 (22:23 +0100)]
d: Simplify quoting characters in deps_add_target

The implementation in d-lang.cc was based on what was present in libcpp.
This synchronizes the escaping logic to match the current version.

gcc/d/ChangeLog:

* d-lang.cc (deps_add_target): Handle quoting ':' character.
Reimplement backslash tracking.

3 years agod: Give the result of evaluated expressions a location
Iain Buclaw [Wed, 23 Dec 2020 17:04:47 +0000 (18:04 +0100)]
d: Give the result of evaluated expressions a location

CST trees that were converted back to a D front-end AST node lost all
location information of the original expression.  Now this is propagated
on to the literal expression.

gcc/d/ChangeLog:

* d-tree.h (d_eval_constant_expression): Add location argument.
* d-builtins.cc (d_eval_constant_expression): Give generated constants
a proper file location.
* d-compiler.cc (Compiler::paintAsType): Pass expression location to
d_eval_constant_expression.
* d-frontend.cc (eval_builtin): Likewise.

3 years agoi386: Optimize pmovmskb on inverted vector to inversion of pmovmskb result [PR98461]
Jakub Jelinek [Wed, 30 Dec 2020 10:21:24 +0000 (11:21 +0100)]
i386: Optimize pmovmskb on inverted vector to inversion of pmovmskb result [PR98461]

The following patch adds combine splitters to optimize:
-       vpcmpeqd        %ymm1, %ymm1, %ymm1
-       vpandn  %ymm1, %ymm0, %ymm0
        vpmovmskb       %ymm0, %eax
+       notl    %eax
etc. (for vectors with less than 32 elements with xorl instead of notl).

2020-12-30  Jakub Jelinek  <jakub@redhat.com>

PR target/98461
* config/i386/sse.md (<sse2_avx2>_pmovmskb): Add splitters
for pmovmskb of NOT vector.

* gcc.target/i386/sse2-pr98461.c: New test.
* gcc.target/i386/avx2-pr98461.c: New test.

3 years agoDaily bump.
GCC Administrator [Wed, 30 Dec 2020 00:16:25 +0000 (00:16 +0000)]
Daily bump.

3 years agoFortran: Correct missing structure constructor comps. [PR97612].
Paul Thomas [Tue, 29 Dec 2020 17:44:48 +0000 (17:44 +0000)]
Fortran: Correct missing structure constructor comps. [PR97612].

2020-12-29  Paul Thomas  <pault@gcc.gnu.org>

gcc/fortran
PR fortran/97612
* primary.c (build_actual_constructor): Missing allocatable
components are set unallocated using EXPR_NULL. Then missing
components are tested for a default initializer.

gcc/testsuite/
PR fortran/97612
* gfortran.dg/structure_constructor_17.f90: New test.

3 years agoFortran: Fix deferred character lengths in array constructors [PR93833].
Paul Thomas [Tue, 29 Dec 2020 17:37:25 +0000 (17:37 +0000)]
Fortran: Fix deferred character lengths in array constructors [PR93833].

2020-12-29  Paul Thomas  <pault@gcc.gnu.org>

gcc/fortran
PR fortran/93833
* trans-array.c (get_array_ctor_var_strlen): If the character
length backend_decl cannot be found, convert the expression and
use the string length. Clear up some minor white space issues
in the rest of the file.

gcc/testsuite/
PR fortran/93833
* gfortran.dg/deferred_character_36.f90 : New test.

3 years agoarc: generate mac(u) insn instead of macd(u) when destination is accl
Claudiu Zissulescu [Tue, 29 Dec 2020 11:30:05 +0000 (13:30 +0200)]
arc: generate mac(u) insn instead of macd(u) when destination is accl

Generate MAC(U) instruction instead of MACD(U) when the destination
register is already choosen as ACCL register.

gcc/
2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.md (maddsidi4_split): Skip macd gen, use mac insn
instead.
(macd): Update register letters.
(umaddsidi4_split): Skip macdu gen, use macu insn instead.
(macdu): Update register letters.

Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
3 years agoarc: flip if-condition predicates in secondary reload hook
Claudiu Zissulescu [Tue, 29 Dec 2020 11:30:05 +0000 (13:30 +0200)]
arc: flip if-condition predicates in secondary reload hook

The ARC code contains code which should only work with the old reload
pass. Such code is found in arc_secondary_reload hook, however it was
not properly quarded. Reverse the if-condition predicate such that
req_equiv_mem is called when lra is not in progress.

gcc/
2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.c (arc_secondary_reload): Flip if-condition
predicates.

Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
3 years agoarc: Make use reg_renumber safe.
Claudiu Zissulescu [Tue, 29 Dec 2020 11:30:05 +0000 (13:30 +0200)]
arc: Make use reg_renumber safe.

The REGNO_OK_FOR_BASE_P is using reg_renumber array. However, it is
not always defined. Use it only when it is defined.

gcc/
2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.h (REGNO_OK_FOR_BASE_P): Check if defined
reg_renumber.

Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
3 years agoarc: Update test pattern.
Claudiu Zissulescu [Tue, 29 Dec 2020 11:30:05 +0000 (13:30 +0200)]
arc: Update test pattern.

gcc/testsuite
2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>

* gcc.target/arc/loop-3.c: Update test pattern.

Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
3 years agoarc: Fix cached to uncached moves.
Claudiu Zissulescu [Tue, 29 Dec 2020 11:30:04 +0000 (13:30 +0200)]
arc: Fix cached to uncached moves.

We need an temporary register when moving data from a cached memory to
an uncached memory. Fix this issue and add a test for it.

gcc/
2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.c (prepare_move_operands): Use a temporary
registers when we have cached mem-to-uncached mem moves.

gcc/testsuite/
2020-12-29  Vladimir Isaev  <isaev@synopsys.com>

* gcc.target/arc/uncached-9.c: New test.

Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
3 years agoarc: Don't use predicated vadd2 instructions in mov patterns.
Claudiu Zissulescu [Tue, 29 Dec 2020 11:30:04 +0000 (13:30 +0200)]
arc: Don't use predicated vadd2 instructions in mov patterns.

Update movdi, movdf and mov vectors not to use predicated vadd2
instructions. vadd2 is used as a "fast" move in these patterns. This
fixes a number of failures in dejagnu.

gcc/
2020-12-29  Claudiu Zissulescu  <claziss@synopsys.com>

* config/arc/arc.md (movdi_insn): Update pattern, no predicated
vadd2 usage.
(movdf_insn): Likewise.
* config/arc/simdext.md (movVEC_insn): Likewise.

Signed-off-by: Claudiu Zissulescu <claziss@synopsys.com>
3 years agoi386: Rounding functions TLC
Uros Bizjak [Tue, 29 Dec 2020 07:43:38 +0000 (08:43 +0100)]
i386: Rounding functions TLC

Use copy_to_reg where appropriate, use int_mode_for_mode
and fix comment indentation.

2020-12-29  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
* config/i386/i386-expand.c (ix86_gen_TWO52): Use REAL_MODE_FORMAT
to determine number of mantissa bits.  Use real_2expN instead
of real_ldexp.
(ix86_expand_rint): Use copy_to_reg.
(ix86_expand_floorceildf_32): Ditto.
(ix86_expand_truncdf_32): Ditto.
(ix86_expand_rounddf_32): Ditto.
(ix86_expand_floorceil): Use copy_to_reg and int_mode_for_mode.
(ix86_expand_trunc): Ditto.
(ix86_expand_round): Ditto.

3 years agoDaily bump.
GCC Administrator [Tue, 29 Dec 2020 00:16:34 +0000 (00:16 +0000)]
Daily bump.

3 years agolibgomp: Avoid bad "up" link in libgomp docs
Gerald Pfeifer [Mon, 28 Dec 2020 22:42:45 +0000 (23:42 +0100)]
libgomp: Avoid bad "up" link in libgomp docs

The libgomp texinfo docs lead to an invalid "up" link on the Top node,
which we can avoid similarly to the Top link in the main GCC manual.

2020-12-28  Sandra Loosemore <sandra@codesourcery.com>

libgomp/
* libgomp.texi (Top): Avoid bad "up" link.

3 years agodoc: Remove HSAIL from Language Standards
Gerald Pfeifer [Mon, 28 Dec 2020 20:41:55 +0000 (21:41 +0100)]
doc: Remove HSAIL from Language Standards

Support for HSAIL has been deprecated with GCC 10 and their web server
has been down for weeks.

gcc/
2020-12-28  Gerald Pfeifer  <gerald@pfeifer.com>

* doc/standards.texi (HSAIL): Remove section.

3 years agoi386: Fix __builtin_rint with FE_DOWNWARD rounding direction [PR96793]
Uros Bizjak [Mon, 28 Dec 2020 20:30:08 +0000 (21:30 +0100)]
i386: Fix __builtin_rint with FE_DOWNWARD rounding direction [PR96793]

x86_expand_rint expander uses x86_sse_copysign_to_positive, which
is unable to change the sign from - to +.  When FE_DOWNWARD rounding
direction is in effect, the expanded sequence that involves subtraction
can trigger x - x = -0.0 special rule.  x86_sse_copysign_to_positive
fails to change the sign of the intermediate value, assumed to always
be positive, back to positive.

The patch adds one extra fabs that strips the sign from the intermediate
value when flag_rounding_math is in effect.

2020-12-28  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
PR target/96793
* config/i386/i386-expand.c (ix86_expand_rint):
Remove the sign of the intermediate value for flag_rounding_math.

gcc/testsuite/
PR target/96793
* gcc.target/i386/pr96793-2.c: New test.

3 years agoi386: Use existing temporary register in rounding functions
Uros Bizjak [Mon, 28 Dec 2020 15:52:45 +0000 (16:52 +0100)]
i386: Use existing temporary register in rounding functions

It is possible to avoid the call to force_reg and use existing
temporary register in ix86_expand_trunc, ix86_expand_round and
ix86_expand_rounddf_32 expanders.

2020-12-28  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
* config/i386/i386-expand.c (ix86_expand_trunc): Use
existing temporary register to avoid a call to force_reg.

3 years agoFix standard name for zero/sign extend expanders
Hongyu Wang [Fri, 25 Dec 2020 01:25:39 +0000 (09:25 +0800)]
Fix standard name for zero/sign extend expanders

gcc/ChangeLog:

* config/i386/i386.md (optab): New code attr.
* config/i386/sse.md (<code>v32qiv32hi2): Rename to ...
(<optab>v32qiv32hi2) ... this.
(<code>v16qiv16hi2): Likewise.
(<code>v8qiv8hi2): Likewise.
(<code>v16qiv16si2): Likewise.
(<code>v8qiv8si2): Likewise.
(<code>v4qiv4si2): Likewise.
(<code>v16hiv16si2): Likewise.
(<code>v8hiv8si2): Likewise.
(<code>v4hiv4si2): Likewise.
(<code>v8qiv8di2): Likewise.
(<code>v4qiv4di2): Likewise.
(<code>v2qiv2di2): Likewise.
(<code>v8hiv8di2): Likewise.
(<code>v4hiv4di2): Likewise.
(<code>v2hiv2di2): Likewise.
(<code>v8siv8di2): Likewise.
(<code>v4siv4di2): Likewise.
(<code>v2siv2di2): Likewise.

gcc/testsuite/ChangeLog:

* gcc.target/i386/pr92658-avx2-2.c: New test.
* gcc.target/i386/pr92658-avx512bw-2.c: Likewise.
* gcc.target/i386/pr92658-sse4-2.c: Likewise.

3 years agoDaily bump.
GCC Administrator [Mon, 28 Dec 2020 00:16:28 +0000 (00:16 +0000)]
Daily bump.

3 years agodoc: New source for "Memory Model for Static Analysis" paper
Gerald Pfeifer [Sun, 27 Dec 2020 20:40:36 +0000 (21:40 +0100)]
doc: New source for "Memory Model for Static Analysis" paper

gcc:

2020-12-27  Gerald Pfeifer  <gerald@pfeifer.com>

* doc/analyzer.texi (Analyzer Internals): Find a new source for
the "A Memory Model for Static Analysis of C Programs" paper.