Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
This is a case where the standard contains conflicting information.
after discussion between implementators, the accepted intent is of
[class.copy.elision]. This amends the handling of co_return statements
to follow that.
gcc/cp/ChangeLog:
2020-05-16 Iain Sandoe <iain@sandoe.co.uk>
* coroutines.cc (finish_co_return_stmt): Implement rules
from [class.copy.elision] /3.
gcc/testsuite/ChangeLog:
2020-05-16 Iain Sandoe <iain@sandoe.co.uk>
* g++.dg/coroutines/co-return-syntax-10-movable.C: New test.
|
|
allocations with stack stores.
* config/h8300/h8300.md (SFI iterator): New iterator for
SFmode and SImode.
* config/h8300/peepholes.md (memory comparison): Use mode
iterator to consolidate 3 patterns into one.
(stack allocation and stack store): Handle SFmode. Handle
8 byte allocations.
|
|
|
|
We sometimes fail to reject an invalid non-dependent operand to decltype
when inside a template, because finish_decltype_type resolves the
decltype to the TREE_TYPE of the operand before we ever instantiate and
fully process the operand. Fix this by adding a call to
instantiate_non_dependent_expr_sfinae in finish_decltype_type.
gcc/cp/ChangeLog:
PR c++/57943
* semantics.c (finish_decltype_type): Call
instantiate_non_dependent_expr_sfinae on the expression.
gcc/testsuite/ChangeLog:
PR c++/57943
* g++.dg/cpp0x/decltype76.C: New test.
|
|
Test whether -static works, and use it if possible.
This time for sure.
For PR go/95061
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/234024
|
|
Now that GCC 10 is out it seems time. People can still choose to disable
coroutines with -fno-coroutines.
This also switches the coroutines testsuite to run in C++20 mode. The
change to coro.h is only necessary for co-await-11-forwarding.C; we could
alternatively #include <utility> just in that file.
gcc/c-family/ChangeLog
2020-05-15 Jason Merrill <jason@redhat.com>
* c-opts.c (set_std_cxx20): Set flag_coroutines.
gcc/testsuite/ChangeLog
2020-05-15 Jason Merrill <jason@redhat.com>
* g++.dg/coroutines/coro.h: Always #include <utility>.
* g++.dg/coroutines/coroutines.exp (DEFAULT_COROFLAGS): Use
-std=c++20.
|
|
|
|
BU_FUTURE_MISC_2 is (currently) only used for instructions that require
64-bit registers.
2020-05-15 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000-builtin.def (BU_FUTURE_MISC_2): Also require
RS6000_BTM_POWERPC64.
|
|
Tests that use the __int128 type need to use the int128 selector.
2020-05-15 Segher Boessenkool <segher@kernel.crashing.org>
gcc/testsuite/
* gcc.target/powerpc/vec-gnb-0.c: Use int128 effective target.
* gcc.target/powerpc/vec-gnb-1.c: Ditto.
* gcc.target/powerpc/vec-gnb-2.c: Ditto.
* gcc.target/powerpc/vec-ternarylogic-8.c: Ditto.
* gcc.target/powerpc/vec-ternarylogic-9.c: Ditto.
* gcc.target/powerpc/vec-ternarylogic-10.c: Ditto.
|
|
2020-05-15 Segher Boessenkool <segher@kernel.crashing.org>
gcc/testsuite/
* gcc.target/powerpc/cnttzdm-0.c: Use lp64.
|
|
The powerpc64 effective target unfortunately does not mean the target
has 64-bit instructions enabled (i.e., -mpowerpc64): instead, it means
that the assembler supports it.
Let's use the lp64 effective target instead for these tests.
2020-05-15 Segher Boessenkool <segher@kernel.crashing.org>
gcc/testsuite/
* gcc.target/powerpc/cntlzdm-0.c: Use lp64 instead of powerpc64.
* gcc.target/powerpc/cntlzdm-1.c: Ditto.
* gcc.target/powerpc/cnttzdm-1.c: Ditto.
* gcc.target/powerpc/pdep-0.c: Ditto.
* gcc.target/powerpc/pdep-1.c: Ditto.
* gcc.target/powerpc/pextd-0.c: Ditto.
* gcc.target/powerpc/pextd-1.c: Ditto.
|
|
A bunch of new cases snuck in.
2020-05-15 Segher Boessenkool <segher@kernel.crashing.org>
gcc/testsuite/
* gcc.target/powerpc/pdep-0.c: Change -mcpu= to -mdejagnu-cpu=.
* gcc.target/powerpc/pdep-1.c: Ditto.
* gcc.target/powerpc/pextd-0.c: Ditto.
* gcc.target/powerpc/pextd-1.c: Ditto.
* gcc.target/powerpc/pr90763.c: Ditto.
* gcc.target/powerpc/pr91275.c: Ditto.
* gcc.target/powerpc/pr92796.c: Ditto.
* gcc.target/powerpc/pr93658.c: Ditto.
* gcc.target/powerpc/pr93800.c: Ditto.
* gcc.target/powerpc/setbceq.c: Ditto.
* gcc.target/powerpc/setbcge.c: Ditto.
* gcc.target/powerpc/setbcgt.c: Ditto.
* gcc.target/powerpc/setbcle.c: Ditto.
* gcc.target/powerpc/setbclt.c: Ditto.
* gcc.target/powerpc/setbcne.c: Ditto.
* gcc.target/powerpc/setnbceq.c: Ditto.
* gcc.target/powerpc/setnbcge.c: Ditto.
* gcc.target/powerpc/setnbcgt.c: Ditto.
* gcc.target/powerpc/setnbcle.c: Ditto.
* gcc.target/powerpc/setnbclt.c: Ditto.
* gcc.target/powerpc/setnbcne.c: Ditto.
* gcc.target/powerpc/xxgenpc-runnable.c: Ditto.
|
|
The process_init_constructor_array part of my PR90996 patch turns out to
be neither necessary nor sufficient to make the pr90996.C testcase work,
and I wasn't able to come up with a testcase that demonstrates this part
is ever necessary.
gcc/cp/ChangeLog:
Revert:
2020-04-07 Patrick Palka <ppalka@redhat.com>
PR c++/90996
* typeck2.c (process_init_constructor_array): Propagate
CONSTRUCTOR_PLACEHOLDER_BOUNDARY up from each element
initializer to the array initializer.
gcc/testsuite/ChangeLog:
PR c++/90996
* g++.dg/cpp1y/pr90996.C: Turn into execution test to verify
that each PLACEHOLDER_EXPR gets correctly resolved.
|
|
My GCC 10 patch for 93286 fixed the missing piece in tsubst's handling of
lists vs. that in tsubst_copy_and_build, but it would be better to share the
code between them.
gcc/cp/ChangeLog
2020-05-15 Jason Merrill <jason@redhat.com>
PR c++/93286 - ICE with __is_constructible and variadic template.
* pt.c (tsubst_tree_list): New.
(tsubst, tsubst_copy_and_build): Use it.
* decl2.c (is_late_template_attribute): Handle error_mark_node args.
|
|
It was causing evrp to perform an undefined transformation
that rvrp was not doing and causing a trap.
|
|
gcc/fortran/
PR fortran/94690
* openmp.c (resolve_omp_do): Permit more clauses for SIMD
iteration variables.
gcc/testsuite/
PR fortran/94690
* gfortran.dg/gomp/openmp-simd-4.f90: New test.
|
|
Also change XMM register constraint from "x" to "v" in FP push insns.
gcc/ChangeLog:
2020-05-15 Uroš Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (SWI48DWI): New mode iterator.
(*push<mode>2): Allow XMM registers.
(*pushdi2_rex64): Ditto.
(*pushsi2_rex64): Ditto.
(*pushsi2): Ditto.
(push XMM reg splitter): New splitter
(*pushdf) Change "x" operand constraint to "v".
(*pushsf_rex64): Ditto.
(*pushsf): Ditto.
|
|
Arseny Solokha noticed I'd flubbed this patch, and it was not saying
what I thought it was saying. Unfortunately that didn't break
anything (otherwise I'd've noticed). Fixed thusly.
* pt.c (template_args_equal): Fix thinkos in previous 'cleanup'.
|
|
This improves the fix for PR92260 changing the number of vector
computation to the canonical one, not needing to look at the
using stmt.
2020-05-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/92260
* tree-vect-slp.c (vect_get_constant_vectors): Compute
the number of vector stmts in a canonical way.
|
|
The following are the known regressions:
> FAIL: gfortran.dg/integer_exponentiation_2.f90 -O2 (test for excess errors)
> FAIL: gfortran.dg/integer_exponentiation_2.f90 -O3 -fomit-frame-pointer -funroll-loops -fpeel
-loops -ftracer -finline-functions (test for excess errors)
> FAIL: gfortran.dg/integer_exponentiation_2.f90 -O3 -g (test for excess errors)
> FAIL: gfortran.dg/pr41043.f90 -O (test for excess errors)
Fortran timeouts during compilation. Will analyze next week.
> FAIL: gcc.dg/tree-ssa/pr88367.c scan-tree-dump-times optimized "bar \\(\\);" 2
-fno-delete-null-pointer-checks problem. Discussing with Andrew.
|
|
* hsa-gen.c (get_symbol_for_decl): Fix misleading indentation
warning.
|
|
This fixes a wrong-code logic error in a previous patch.
Detected by gcc.c-torture/execute/pr53645-2.c.
2020-05-15 Andrew Stubbs <ams@codesourcery.com>
gcc/
* config/gcn/gcn-valu.md (v<expander><mode>3): Fix unsignedp.
|
|
When path splitting tries to detect a CFG diamond make sure it
is composed of normal (non-EH, not abnormal) edges. Otherwise
CFG manipulation later may fail.
2020-05-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/95133
* gimple-ssa-split-paths.c
(find_block_to_duplicate_for_splitting_paths): Check for
normal edges.
* gcc.dg/pr95133.c: New testcase.
|
|
reg_needs_saving_p is only used when dealing with non-interrupt
routines, but it makes sense to extend it to support that context too,
and make arm_compute_save_reg0_reg12_mask use it.
Save only live registers for non-leaf functions, but assume a callee
could clobber any register.
2020-05-15 Christophe Lyon <christophe.lyon@linaro.org>
gcc/
* config/arm/arm.c (reg_needs_saving_p): Add support for interrupt
routines.
(arm_compute_save_reg0_reg12_mask): Use reg_needs_saving_p.
|
|
gcc/
PR middle-end/94635
* gimplify.c (gimplify_scan_omp_clauses): For MAP_TO_PSET with
OMP_TARGET_EXIT_DATA, use 'release:' unless the associated
item is 'delete:'.
gcc/testsuite
PR middle-end/94635
* gfortran.dg/gomp/target-exit-data.f90: New.
|
|
Now that ranger VRP is running, there is no need for this.
|
|
PFACC/PFNACC 3dNow! instructions got their corresponding SSE alternative
in SSE3, so these can't be implemented with TARGET_MMX_WITH_SSE, which
implies SSE2. These instructions are only generated via builtins, and
since several 3dNow! insns have no corresponding SSE alternative,
we can't avoid MMX registers with 3dNow! builtins anyway.
Add SSE3/AVX alternatives to the insn pattern, so compiler will be able
to use XMM registers when available, but don't prevent MMX registers,
since they are needed when SSE3 is not active.
Add additional generic insn patterns, used by the combiner to
synthesize horizontal V2SFmode add/sub instructions. These patterns
are active for TARGET_MMX_WITH_SSE only, and use only XMM registers.
gcc/ChangeLog:
PR target/95046
* config/i386/i386.md (isa): Add sse3_noavx.
(enabled): Handle sse3_noavx.
* config/i386/mmx.md (mmx_haddv2sf3): New expander.
(*mmx_haddv2sf3): Rename from mmx_haddv2sf3. Add SSE/AVX
alternatives. Match commutative vec_select selector operands.
(*mmx_haddv2sf3_low): New insn pattern.
(*mmx_hsubv2sf3): Add SSE/AVX alternatives.
(*mmx_hsubv2sf3_low): New insn pattern.
testsuite/ChangeLog:
PR target/95046
* gcc.target/i386/pr95046-8.c: New test.
|
|
Also, implement global -frvrp-changes that overrides the individual pass settings.
|
|
PFACC/PFNACC 3dNow! instructions got their corresponding SSE alternative
in SSE3, so these can't be implemented with TARGET_MMX_WITH_SSE, which
implies SSE2. These instructions are only generated via builtins, and
since several 3dNow! insns have no corresponding SSE alternative,
we can't avoid MMX registers with 3dNow! builtins anyway.
Add SSE3/AVX alternatives to the insn pattern, so compiler will be able
to use XMM registers when available, but don't prevent MMX registers,
since they are needed when SSE3 is not active.
Add additional generic insn patterns, used by the combiner to
synthesize horizontal V2SFmode add/sub instructions. These patterns
are active for TARGET_MMX_WITH_SSE only, and use only XMM registers.
gcc/ChangeLog:
PR target/95046
* config/i386/i386.md (isa): Add sse3_noavx.
(enabled): Handle sse3_noavx.
* config/i386/mmx.md (mmx_haddv2sf3): New expander.
(*mmx_haddv2sf3): Rename from mmx_haddv2sf3. Add SSE/AVX
alternatives. Match commutative vec_select selector operands.
(*mmx_haddv2sf3_low): New insn pattern.
(*mmx_hsubv2sf3): Add SSE/AVX alternatives.
(*mmx_hsubv2sf3_low): New insn pattern.
testsuite/ChangeLog:
PR target/95046
* gcc.target/i386/pr95046-8.c: New test.
|
|
This implements commoning of stores to a common successor in
a simple ad-hoc way. I've decided to put it into the code sinking
pass since, well, it sinks stores. It's still separate since
it does not really sink code into less executed places.
It's ad-hoc since it does not perform any dataflow or alias analysis
but simply only considers trailing stores in a block, iteratively
though. If the stores are from different values a PHI node is
inserted to merge them. gcc.dg/tree-ssa/split-path-7.c shows
that path splitting will eventually undo this very transform,
I've decided to not bother with it and simply disable sinking for
the particular testcase.
Doing this transform is good for code size when the stores are
from constants, once we have to insert PHIs the situation becomes
less clear but it's a transform we do elsewhere as well
(cselim for one), and reversing the transform should be easy.
2020-05-15 Richard Biener <rguenther@suse.de>
PR tree-optimization/33315
* tree-ssa-sink.c: Include tree-eh.h.
(sink_stats): Add commoned member.
(sink_common_stores_to_bb): New function implementing store
commoning by sinking to the successor.
(sink_code_in_bb): Call it, pass down TODO_cleanup_cfg returned.
(pass_sink_code::execute): Likewise. Record commoned stores
in statistics.
* gcc.dg/tree-ssa/ssa-sink-13.c: New testcase.
* gcc.dg/tree-ssa/ssa-sink-14.c: Likewise.
* gcc.dg/tree-ssa/split-path-7.c: Disable sinking.
|
|
It is no longer needed as we are running rvrp[12] and verifying usage
the trap code.
|
|
|
|
This keeps the indentation from going haywire when GORI dumping
is turned on and off during a compilation unit.
|
|
Move all the classes and support routines that are not meant to
be upstreamed, into their own files.
Also, add the initial cut of the classes needed to compare and
trap when IL changes are noticed in evrp. This is disabled for now.
|
|
This conversion has nothing to do with ranges, and the way it uses global
ranges versus local ranges is interfering with our ability to diagnose
differences between evrp and rvrp1.
|
|
Since the ranger is on-demand, dumping the known range for each SSA use
causes us to calculate the ranges ahead of time, and confuse the listing.
For now, turn it off, so the range calculation isn't displayed.
|
|
This gives better ranges for the simplifier class since it's using the
context in which the statement appears.
|
|
|
|
|
|
overflow(PR37451, PR61837)
This "subtract/extend/add" existed for a long time and still annoying us
(PR37451, part of PR61837) when converting from 32bits to 64bits, as the ctr
register is used as 64bits on powerpc64, Andraw Pinski had a patch but
caused some issue and reverted by Joseph S. Myers(PR37451, PR37782).
Andraw:
http://gcc.gnu.org/ml/gcc-patches/2008-09/msg01070.html
http://gcc.gnu.org/ml/gcc-patches/2008-10/msg01321.html
Joseph:
https://gcc.gnu.org/legacy-ml/gcc-patches/2011-11/msg02405.html
We still can do the simplification from "subtract/zero_ext/add" to "zero_ext"
when loop iterations is known to be LT than MODE_MAX (only do simplify
when counter+0x1 NOT overflow).
Bootstrap and regression tested pass on Power8-LE.
gcc/ChangeLog
2020-05-15 Xiong Hu Luo <luoxhu@linux.ibm.com>
PR rtl-optimization/37451, part of PR target/61837
* loop-doloop.c (doloop_simplify_count): New function. Simplify
(add -1; zero_ext; add +1) to zero_ext when not wrapping.
(doloop_modify): Call doloop_simplify_count.
gcc/testsuite/ChangeLog
2020-05-15 Xiong Hu Luo <luoxhu@linux.ibm.com>
PR rtl-optimization/37451, part of PR target/61837
* gcc.target/powerpc/doloop-2.c: New test.
|
|
|
|
Since libgccjit.so is linked into jit tests, skip jit tests for targets
that don't support -lgccjit.
gcc/
PR jit/94778
* doc/sourcebuild.texi: Document effective target lgccjit.
gcc/testsuite/
PR jit/94778
* jit.dg/jit.exp: Skip jit tests for targets that don't support
-lgccjit.
* lib/target-supports.exp (check_effective_target_lgccjit): New.
|
|
My change in r10-4394 to only update clones when we actually instantiate a
deferred noexcept-spec broke this because deferred parsing updates the
primary function but not the clones. For GCC 10 I just reverted that
change; this patch adjusts maybe_instantiate_noexcept to update only the
clone passed as the argument.
gcc/cp/ChangeLog
2020-05-14 Jason Merrill <jason@redhat.com>
PR c++/93901
* pt.c (maybe_instantiate_noexcept): Change clone handling.
|
|
For PR go/95061
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/234019
|
|
This switches the code that expands scalar addresses to vectors of addresses
from using VCC to using CC_SAVE_REG, for the lo-part to hi-part carry values.
These were fine in code expanded in earlier passes, but addresses expanded
late, such as for stack spills or reloads, could clobber live VCC values,
causing execution failures.
This is the first target-specific testcase for GCN, so the new .exp file is
included.
2020-05-14 Andrew Stubbs <ams@codesourcery.com>
gcc/
* config/gcn/gcn-valu.md (add<mode>3_zext_dup): Change to a
define_expand, and rename the original to ...
(add<mode>3_vcc_zext_dup): ... this, and add a custom VCC operand.
(add<mode>3_zext_dup_exec): Likewise, with ...
(add<mode>3_vcc_zext_dup_exec): ... this.
(add<mode>3_zext_dup2): Likewise, with ...
(add<mode>3_zext_dup_exec): ... this.
(add<mode>3_zext_dup2_exec): Likewise, with ...
(add<mode>3_zext_dup2): ... this.
* config/gcn/gcn.c (gcn_expand_scalar_to_vector_address): Switch
addv64di3_zext* calls to use addv64di3_vcc_zext*.
gcc/testsuite/
* testsuite/gcc.target/gcn/gcn.exp: New file.
* testsuite/gcc.target/gcn/vcc-clobber.c: New file.
|
|
gcc/ChangeLog:
PR target/95046
* config/i386/sse.md (truncv2dfv2df2): New insn pattern.
(extendv2sfv2df2): Ditto.
testsuite/ChangeLog:
PR target/95046
* gcc.target/i386/pr95046-7.c: New test.
|
|
|
|
|