Age | Commit message (Collapse) | Author |
|
|
|
2022-05-06 Jakub Jelinek <jakub@redhat.com>
* gennews (files): Add files for GCC 12.
(cherry picked from commit 8025f29fbd8f87e27354b69d0bc9eb8d1aeae94c)
|
|
|
|
D front-end changes:
- Merge regression fixes in v2.100.0 branch.
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 88de5e369.
|
|
* gcc.pot: Regenerate.
|
|
|
|
* es.po: Update.
|
|
|
|
* sv.po: Update.
|
|
D front-end changes:
- Import dmd v2.100.0-rc.1.
D runtime changes:
- Import druntime v2.100.0-rc.1.
Phobos changes:
- Import v2.100.0-rc.1.
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 081d61e15.
* dmd/VERSION: Update version to v2.100.0-rc.1.
libphobos/ChangeLog:
* libdruntime/MERGE: Merge upstream druntime 9c0d4f91.
* src/MERGE: Merge upstream phobos dba1bbe27.
|
|
gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c covers ppc variants
that accept and reject misaligned accesses. The message that it
expects for rejection was removed in the gcc-11 development cycle by
commit r11-1969. The patch adjusted multiple tests to use the message
introduced in r11-1945, but missed this one.
for gcc/testsuite/ChangeLog
* gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c: Update
the expected message for the case in which unaligned accesses
are not allowed.
(cherry picked from commit 404edfce683cb1801b052ee7c8d45d603c392e08)
|
|
|
|
The hexfloat parser for binary32/64 added in r12-6645-gcc3bf3404e4b1c
overlooked that the exponent part can also begin with an uppercase 'P'.
PR libstdc++/105441
libstdc++-v3/ChangeLog:
* src/c++17/floating_from_chars.cc (__floating_from_chars_hex):
Also accept 'P' as the start of the exponent.
* testsuite/20_util/from_chars/7.cc: Add corresponding testcase.
(cherry picked from commit 576f975cabb0fd9843de152a2d247d486a967b08)
|
|
gcc/fortran/ChangeLog:
* gfortran.texi: Fix exchanged period and letter.
(cherry picked from commit 4a8b45e8bc8246bd141dad65f571a3e0cc499c6b)
|
|
On Sun, May 01, 2022 at 07:06:53PM +0100, Jonathan Wakely wrote:
> > >> the reason is that "gcc/analyzer/region-model.cc” uses initializer_lists, and it seems that <initializer_list>
> > >> is not transitively included by any used headers for _LIBCPP_VERSION < 4000. I fixed that locally by
> > >> adding initializer_list into system.h (and adding INCLUDE_INITIALIZER_LIST to the top of gcc/analyzer/region-model.cc)
> > >> - with that change those versions do bootstrap and test OK***
> > >
> > > From what I can see, with libstdc++ it works because <utility> which is
> > > included by system.h includes <initializer_list>.
> > > If I rename initializer_list in analyzer/region-model.ii to initializer_listx, I
> > > also get:
> > > ../../gcc/analyzer/region-model.cc: In function ‘void ana::selftest::test_binop_svalue_folding()’:
> > > ../../gcc/analyzer/region-model.cc:4966:48: error: deducing from brace-enclosed initializer list requires ‘#include <initializer_list>’
> > > 4508 |
> > > +++ |+#include <initializer_list>
> > > 4509 | static void
> > > ......
> > > 4966 | for (auto op : {BIT_IOR_EXPR, TRUTH_OR_EXPR})
> > > | ^
> > > ../../gcc/analyzer/region-model.cc:4978:49: error: deducing from brace-enclosed initializer list requires ‘#include <initializer_list>’
> > > 4978 | for (auto op : {BIT_AND_EXPR, TRUTH_AND_EXPR})
> > > | ^
> > >
> > > I think we have 2 options, one is do what you wrote above,
> > > INCLUDE_INITIALIZER_LIST defined before system.h to get #include <initializer_list>.
> > > The other option is just to include that unconditionally, it is a very small
> > > header. For libstdc++ it will make no difference as it is included anyway
> > > and the header is really small there, libc++ includes <cstddef> which isn't
> > > normally included and system.h includes <stddef.h> instead.
> >
> > I’d say unconditionally would be OK. I suppose the chance that any host
> > C++ is good enough to build GCC as-is but fails to provide
> > <initializer_list> is zero?
> >
>
> Yes, definitely.
>
> > I’d be OK to do this change without a new RC even.
2022-05-02 Jakub Jelinek <jakub@redhat.com>
* system.h: Include initializer_list.
(cherry picked from commit 4a0e89b10f6bdc1e285e0b9e6a435a0062f8936c)
|
|
|
|
|
|
|
|
[PR105417]
The --with-long-double-abi=ibm build is missing some exports that are
present in the --with-long-double-abi=ieee build. Those symbols never
should have been exported at all, but now that they have been, they
should be exported consistently by both ibm and ieee.
This simply defines them as aliases for equivalent symbols that are
already present. The abi-tag on num_get::_M_extract_int isn't really
needed, because it only uses a std::string as a local variable, not in
the return type or function parameters, so it's safe to define the
_M_extract_int[abi:cxx11] symbols as aliases for the corresponding
function without the abi-tag.
This causes some new symbols to be added to the GLIBCXX_3.4.29 version
for the ibm long double build mode, but there is no advantage to adding
them to 3.4.30 for that build. That would just create more
inconsistencies.
libstdc++-v3/ChangeLog:
PR libstdc++/105417
* config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt:
Regenerate.
* src/c++11/compatibility-ldbl-alt128.cc [_GLIBCXX_USE_DUAL_ABI]:
Define __gnu_ieee128::num_get<C>::_M_extract_int[abi:cxx11]<I>
symbols as aliases for corresponding symbols without abi-tag.
(cherry picked from commit bb7cf39b05a216431a431499d0c36a6034f6acc4)
|
|
The following patch updates the Solaris baselines for GCC 12.1.
Tested on i386-pc-solaris2.11 and sparc-sun-solaris2.11 (Solaris 11.3
and 11.4 in each case).
The only (expected) difference between the 11.3 and 11.4 versions is
--- baseline_symbols.txt.s113s 2022-04-28 10:37:11.464068450 +0000
+++ baseline_symbols.txt.s114s 2022-04-27 16:54:31.995636805 +0000
@@ -4070,3 +4070,3 @@
-FUNC:_ZSt10from_charsPKcS0_RdSt12chars_format@@GLIBCXX_3.4.30
-FUNC:_ZSt10from_charsPKcS0_ReSt12chars_format@@GLIBCXX_3.4.30
-FUNC:_ZSt10from_charsPKcS0_RfSt12chars_format@@GLIBCXX_3.4.30
+FUNC:_ZSt10from_charsPKcS0_RdSt12chars_format@@GLIBCXX_3.4.29
+FUNC:_ZSt10from_charsPKcS0_ReSt12chars_format@@GLIBCXX_3.4.29
+FUNC:_ZSt10from_charsPKcS0_RfSt12chars_format@@GLIBCXX_3.4.29
which is handled by the fix for PR libstdc++/103407. I'm using the 11.4
version here.
2022-04-27 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
libstdc++-v3:
* config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate.
* config/abi/post/i386-solaris/amd64/baseline_symbols.txt:
Likewise.
* config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise.
* config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt:
Likewise.
|
|
The changes to fix PR 105287 included a tightening of the constraints on which
variables are promoted to frame copies. This has exposed that we are failing
to name some variables that should be promoted.
We avoid the use of DECL_UID to build anonymous symbols since that might not
be stable for -fcompare-debug.
The long-term fix is to address the cases where the naming has been missed,
but for the short-term (and for the GCC-12 branch) backing out the additional
constraint is proposed.
Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
PR c++/105426
gcc/cp/ChangeLog:
* coroutines.cc (register_local_var_uses): Allow promotion of unnamed
temporaries to coroutine frame copies.
(cherry picked from commit 3d8d093e820b10a4b4b2af8949a368377c0888cb)
|
|
|
|
Here ever since r12-6022-gbb2a7f80a98de3 we stopped deeming the partial
specialization #2 to be more specialized than #1 ultimately because
dependent operator expressions now have a DEPENDENT_OPERATOR_TYPE type
instead of an empty type, and this made unify stop deducing T(2) == 1
for K during partial ordering for #1 and #2.
This minimal patch fixes this by making the relevant logic in unify
treat DEPENDENT_OPERATOR_TYPE like an empty type.
PR c++/105425
gcc/cp/ChangeLog:
* pt.cc (unify) <case TEMPLATE_PARM_INDEX>: Treat
DEPENDENT_OPERATOR_TYPE like an empty type.
gcc/testsuite/ChangeLog:
* g++.dg/template/partial-specialization13.C: New test.
(cherry picked from commit 509fd16da8528444dccc98cef57a18a295c3f1b4)
|
|
libstdc++-v3/ChangeLog:
* doc/xml/manual/status_cxx1998.xml: Refer to GCC 12 not
mainline.
* doc/xml/manual/status_cxx2011.xml: Likewise.
* doc/xml/manual/status_cxx2014.xml: Likewise.
* doc/xml/manual/status_cxx2017.xml: Likewise.
* doc/xml/manual/status_cxx2020.xml: Likewise.
* doc/xml/manual/status_cxxtr1.xml: Likewise.
* doc/xml/manual/status_cxxtr24733.xml: Likewise.
* doc/html/manual/status.html: Regenerate.
|
|
gcc/fortran/ChangeLog:
* gfortran.texi: Mention r16_ieee and r16_ibm.
* invoke.texi: Likewise.
(cherry picked from commit 1a5ae012ff3303a8232a03ac9a0925c709775076)
|
|
gcc/testsuite
* gcc.dg/lto/pr94157_0.c: Revert last change.
* lib/prune.exp (prune_gcc_output): Prune new linker warning.
|
|
2022-04-28 Jakub Jelinek <jakub@redhat.com>
* DEV-PHASE: Set to prerelease.
|
|
The following testcase ICEs, because the ctors during cc1plus all have
!opt_for_fn (decl, flag_semantic_interposition) - they have NULL
DECL_FUNCTION_SPECIFIC_OPTIMIZATION (decl) and optimization_default_node
is for -Ofast and so has flag_semantic_interposition cleared.
During free lang data, we set DECL_FUNCTION_SPECIFIC_OPTIMIZATION (decl)
for the ctor which has body (or for thunks), but don't touch it for
aliases.
During lto1 optimization_default_node reflects the lto1 flags which
are -O2 rather than -Ofast and so has flag_semantic_interposition
set, for the ctor which has body that makes no difference, but as the
alias doesn't still have DECL_FUNCTION_SPECIFIC_OPTIMIZATION (decl) set,
we now trigger this verification check.
The following patch just doesn't verify it for aliases during lto1.
Another possibility would be to set DECL_FUNCTION_SPECIFIC_OPTIMIZATION (decl)
during free lang data even for aliases.
2022-04-28 Jakub Jelinek <jakub@redhat.com>
PR lto/105399
* cgraph.cc (cgraph_node::verify_node): Don't verify
semantic_interposition flag against
opt_for_fn (decl, flag_semantic_interposition) for aliases in lto1.
* g++.dg/lto/pr105399_0.C: New test.
|
|
That got broken by recent commit b2202431910e30d8505c94d1cb9341cac7080d10
"fortran: Fix up gfc_trans_oacc_construct [PR104717]".
PR fortran/104717
libgomp/
* testsuite/libgomp.oacc-fortran/print-1.f90: Add OpenACC
privatization scanning. For GCN offloading compilation, raise
'-mgang-private-size'.
|
|
We check that the final_suspend () method returns a sane type (i.e. a class
or structure) but, unfortunately, that check has to be later than the one
for a throwing case. If the use returns some nonsensical type from the
method, we need to handle that in the checking for noexcept.
Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
PR c++/104051
gcc/cp/ChangeLog:
* coroutines.cc (coro_diagnose_throwing_final_aw_expr): Handle
non-target expression inputs.
gcc/testsuite/ChangeLog:
* g++.dg/coroutines/pr104051.C: New test.
|
|
Whether it was intended or not, it is possible to define a coroutine promise
with multiple return_value() methods [which need not even have the same type].
We were not accounting for this possibility in the check to see whether both
return_value and return_void are specifier (which is prohibited by the
standard). Fixed thus and provided an adjusted diagnostic for the case that
multiple return_value() methods are present.
Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
PR c++/105301
gcc/cp/ChangeLog:
* coroutines.cc (coro_promise_type_found_p): Account for possible
mutliple overloads of the promise return_value() method.
gcc/testsuite/ChangeLog:
* g++.dg/coroutines/pr105301.C: New test.
|
|
There are a few cases where we can generate a temporary that does not need
to be added to the coroutine frame (i.e. these are genuinely ephemeral). The
intent was that unnamed temporaries should not be 'promoted' to coroutine
frame entries. However there was a thinko and these were not actually ever
added to the bind expressions being generated for the expanded awaits. This
meant that they were showing in the global namspace, leading to an empty
DECL_CONTEXT and the ICE reported.
Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
PR c++/105287
gcc/cp/ChangeLog:
* coroutines.cc (maybe_promote_temps): Ensure generated temporaries
are added to the bind expr.
(add_var_to_bind): Fix local var naming to use portable punctuation.
(register_local_var_uses): Do not add synthetic names to unnamed
temporaries.
gcc/testsuite/ChangeLog:
* g++.dg/coroutines/pr105287.C: New test.
|
|
This is a forward-port of a patch by Nathan (against 10.x) which fixes an open
PR.
We are ICEing because we ended up tsubst_copying something that had already
been tsubst, leading to an assert failure (mostly such repeated tsubsting is
harmless).
We had a non-dependent co_await in a non-dependent-type template fn, so we
processed it at definition time, and then reprocessed at instantiation time.
We fix this here by deferring substitution while processing templates.
Additional observations (for a better future fix, in the GCC13 timescale):
Exprs only have dependent type if at least one operand is dependent which was
what the current code was intending to do. Coroutines have the additional
wrinkle, that the current fn's type is an implicit operand.
So, if the coroutine function's type is not dependent, and the operand is not
dependent, we should determine the type of the co_await expression using the
DEPENDENT_EXPR wrapper machinery. That allows us to determine the
subexpression type, but leave its operand unchanged and then instantiate it
later.
PR c++/103868
gcc/cp/ChangeLog:
* coroutines.cc (finish_co_await_expr): Do not process non-dependent
coroutine expressions at template definition time.
(finish_co_yield_expr): Likewise.
(finish_co_return_stmt): Likewise.
gcc/testsuite/ChangeLog:
* g++.dg/coroutines/pr103868.C: New test.
Co-Authored-by: Iain Sandoe <iain@sandoe.co.uk>
|
|
Yet another set of testcases that do not account for targets that
use __USER_LABEL_PREFIX__.
Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
gcc/testsuite/ChangeLog:
* gcc.target/i386/memcpy-strategy-10.c: Account for
__USER_LABEL_PREFIX__.
* gcc.target/i386/memcpy-strategy-5.c: Likewise.
* gcc.target/i386/memset-strategy-5.c: Likewise.
* gcc.target/i386/memset-strategy-7.c: Likewise.
|
|
g++.target/i386/mv31.C fails on targets without ifuncs support so add
the necessary target supports guard.
Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
gcc/testsuite/ChangeLog:
* g++.target/i386/mv31.C: Add target supports guard for ifuncs.
|
|
Here we wrongly reject the definition of "::N::a"
struct A;
namespace N { extern A a; }
struct A {} ::N::a;
because our code to diagnose a missing ; after a class definition doesn't
realize that :: can follow a class definition.
PR c++/90107
gcc/cp/ChangeLog:
* parser.cc (cp_parser_class_specifier_1): Accept :: after a class
definition.
gcc/testsuite/ChangeLog:
* g++.dg/parse/qualified6.C: New test.
|
|
The recursive calls to filesystem::copy should stop if any of them
reports an error.
libstdc++-v3/ChangeLog:
PR libstdc++/99290
* src/c++17/fs_ops.cc (fs::copy): Pass error_code to
directory_iterator constructor, and check on each iteration.
* src/filesystem/ops.cc (fs::copy): Likewise.
* testsuite/27_io/filesystem/operations/copy.cc: Check for
errors during recursion.
* testsuite/experimental/filesystem/operations/copy.cc:
Likewise.
|
|
D front-end changes:
- Import latest bug fixes from the 2.100 release branch.
- Fix signatures of extern C++ functions that have size_t
parameters.
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 313d28b3d.
* d-port.cc (Port::memicmp): Use d_size_t instead of size_t.
(Port::valcpy): Likewise.
libphobos/ChangeLog:
* libdruntime/MERGE: Merge upstream druntime e361d200.
|
|
On the following testcase we emit a bogus
'va_arg_tmp.5' may be used uninitialized
warning. The reason is that when gimplifying the addr = &temp;
statement, the va_arg_tmp temporary var for which we emit ADDR_EXPR
is not TREE_ADDRESSABLE, prepare_gimple_addressable emits some extra
code to initialize the newly addressable var from its previous value,
but it is a new variable which hasn't been initialized yet and will
be later, so we end up initializing it with uninitialized SSA_NAME:
va_arg_tmp.6 = va_arg_tmp.5_14(D);
addr.2_16 = &va_arg_tmp.6;
_17 = MEM[(double *)sse_addr.4_13];
MEM[(double * {ref-all})addr.2_16] = _17;
and with -O1 we actually don't DSE it before the warning is emitted.
If we make the temp TREE_ADDRESSABLE before the gimplification, then
this prepare_gimple_addressable path isn't taken and we effectively
omit the first statement above and so the bogus warning is gone.
I went through other backends and didn't find another instance of this
problem.
2022-04-28 Jakub Jelinek <jakub@redhat.com>
PR target/105331
* config/i386/i386.cc (ix86_gimplify_va_arg): Mark va_arg_tmp
temporary TREE_ADDRESSABLE before trying to gimplify ADDR_EXPR
of it.
* gcc.dg/pr105331.c: New test.
|
|
The choice of ieee or ibm long double format is orthogonal to multilibs,
as the two sets of symbols co-exist and don't need a separate multilib.
gcc/ChangeLog:
* doc/install.texi (Configuration): Remove misleading text
around LE PowerPC Linux multilibs.
|
|
This doesn't match anything.
libstdc++-v3/ChangeLog:
* config/abi/pre/gnu-versioned-namespace.ver: Remove
std::random_device::* pattern.
|
|
This patch documents the Solaris-specific D bootstrap requirements.
Tested by building and inspecting gccinstall.{pdf,info}.
2022-03-16 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
gcc:
PR d/103528
* doc/install.texi (Tools/packages necessary for building GCC)
(GDC): Document libphobos requirement.
(Host/target specific installation notes for GCC, *-*-solaris2*):
Document libphobos and GDC specifics.
|
|
The following makes sure to take into account prologue peeling
when trying to narrow down the maximum number of iterations
computed for the vectorized epilogue. A similar issue exists when
peeling for gaps.
2022-04-27 Richard Biener <rguenther@suse.de>
PR tree-optimization/105219
* tree-vect-loop.cc (vect_transform_loop): Disable
special code narrowing the vectorized epilogue max
iterations when peeling for alignment or gaps was in effect.
* gcc.dg/vect/pr105219.c: New testcase.
|
|
This patch is to add the test coverage for the two recent fixes
r12-8091 and r12-8226 from Segher, aix is skipped since it takes
soft-float and long-double-128 incompatible.
PR target/105334
gcc/testsuite/ChangeLog:
* gcc.target/powerpc/pr105334.c: New test.
|
|
The "ftree-parallelize-loops=" imply -pthread option in gcc/gcc.cc,
some target are not support pthread like elf target use newlib,
and will get an error:
"*-*-elf-gcc: error: unrecognized command-line option '-pthread'"
so we add an additional condition "{target pthread}" to make sure the
dg-additional-options runs on support targets.
gcc/testsuite/ChangeLog
PR target/104676
* gcc.dg/torture/pr104676.c: Add "{target pthread}" check.
|
|
gcc/
* config/loongarch/loongarch.cc
(loongarch_flatten_aggregate_field): Ignore empty fields for
RECORD_TYPE.
gcc/testsuite/
* gcc.target/loongarch/zero-size-field-pass.c: New test.
* gcc.target/loongarch/zero-size-field-ret.c: New test.
|
|
|
|
gcc/cp/ChangeLog:
* tree.cc (strip_typedefs): Add default argument comments.
|
|
gcc/testsuite/ChangeLog:
* gfortran.dg/pr70673.f90: Removed second invalid
line.
|
|
We crash compiling this test since r11-7993 which changed
lookup_template_class_1 so that we only call tsubst_enum when
!uses_template_parms (current_nonlambda_scope ())
But here current_nonlambda_scope () is the global NAMESPACE_DECL ::, which
doesn't have a type, therefore is considered type-dependent. So we don't
call tsubst_enum, and crash in tsubst_copy/CONST_DECL because we didn't
find the e1 enumerator.
I don't think any namespace can depend on any template parameter, so
this patch tweaks uses_template_parms.
PR c++/105398
gcc/cp/ChangeLog:
* pt.cc (uses_template_parms): Return false for any NAMESPACE_DECL.
gcc/testsuite/ChangeLog:
* g++.dg/cpp1y/lambda-generic-enum2.C: New test.
|