Commit Graph

193085 Commits

Author SHA1 Message Date
GCC Administrator 52991af6ff Daily bump. 2022-05-14 00:20:09 +00:00
Harald Anlauf 0b9bdcf685 Fortran: fix error recovery on invalid array section
gcc/fortran/ChangeLog:

	PR fortran/105230
	* expr.cc (find_array_section): Correct logic to avoid NULL
	pointer dereference on invalid array section.

gcc/testsuite/ChangeLog:

	PR fortran/105230
	* gfortran.dg/pr105230.f90: New test.

Co-authored-by: Steven G. Kargl <kargl@gcc.gnu.org>
(cherry picked from commit 0acdbe29f6)
2022-05-13 21:34:02 +02:00
Martin Liska 5176d2755c libgcov: use proper type for n_functions
gcov_info::n_functions type is initialized by generated
code in build_info_type:

/* n_functions */
field = build_decl (BUILTINS_LOCATION, FIELD_DECL, NULL_TREE,
		    get_gcov_unsigned_t ());

It uses gcov_unsigned_t, but the struct definition in libgcov.h uses
unsigned type. That brings troubled on 16-bit targets.

	PR gcov-profile/105535

libgcc/ChangeLog:

	* libgcov.h (struct gcov_info): Use gcov_unsigned_t for
	n_functions.

Co-Authored-By: Hans-Peter Helfert <peter-helfert@t-online.de>
(cherry picked from commit eaf359ed04e7169f740dade548965c757f4c1e0a)
2022-05-13 14:04:27 +02:00
Eric Botcazou f8598704c0 Fix wrong SRA with VIEW_CONVERT_EXPR and reverse SSO
Most cases of VIEW_CONVERT_EXPRs involving reverse scalar storage order are
disqualified for SRA because they are storage_order_barrier_p, but you can
still have a VIEW_CONVERT_EXPR to a regular composite type being applied to
a component of a record type with reverse scalar storage order.

In this case the bypass for !useless_type_conversion_p in sra_modify_assign,
albeit already heavily guarded, triggers and may generate wrong code, so the
patch makes sure that it does only when the SSO is the same on both side.

gcc/
	* tree-sra.cc (sra_modify_assign): Check that scalar storage order
	is the same on the LHS and RHS before rewriting one with the model
	of the other.
gcc/testsuite/
	* gnat.dg/sso17.adb: New test.
2022-05-13 11:20:04 +02:00
Alexandre Oliva e628690d63 [PR105455] Set edge probabilities when hardening conditionals
When turning unconditional edges into conditional, as in
gimple-harden-conditionals.cc:insert_check_and_trap, the newly-created
edge's probability comes out uninitialized, while the previously
unconditional edge's probability is presumably
profile_probability::always.

Mixing initialized and uninitialized probabilities before expand
breaks predict.cc:force_edge_cold: the initialized probability may end
up copied to a REG_BR_PROB note in a conditional branch insn, but if
force_edge_cold is called on that edge, it will find another edge with
uninitialized probability and assume the note is absent.  Later on,
rtl_verify_edges complains that the note does not match the
probability modified by force_edge_cold in the edge.

This patch sets probabilities for edges affected by hardening of
conditionals, both the newly-created edges to trap blocks and the
previously-unconditional edges, so that the former are considered
never taken, while the latter are confirmed as always taken.


for  gcc/ChangeLog

	PR rtl-optimization/105455
	* gimple-harden-conditionals.cc (insert_check_and_trap): Set
	probabilities for newly-conditional edges.

for  gcc/testsuite/ChangeLog

	PR rtl-optimization/105455
	* gcc.dg/pr105455.c: New.

(cherry picked from commit 90a8eab4a1)
2022-05-13 03:05:46 -03:00
Alexandre Oliva a4183ab7cf libstdc++: ppc: conditionalize vsx-only simd intrinsics
libstdc++'s bits/simd.h section for PowerPC, guarded by __ALTIVEC__,
defines various intrinsic vector types that are only available with
__VSX__: 64-bit long double, double, (un)signed long long, and 64-bit
(un)signed long.

experimental/simd/standard_abi_usable{,_2}.cc tests error out
reporting the unmet requirements when the target cpu doesn't enable
VSX.  Make the reported instrinsic types conditional on __VSX__ so
that <experimental/simd> can be used on PowerPC variants that do not
support VSX.


for  libstdc++-v3/ChangeLog

	* include/experimental/bits/simd.h [__ALTIVEC__]: Require VSX
	for double, long long, and 64-bit long intrinsic types.
	[__ALTIVEC__] (__intrinsic_type): Mention 128-bit in
	preexisting long double diagnostic, adjust no-VSX double
	diagnostic to cover 64-bit long double as well.

(cherry picked from commit 469c76f0d9)
2022-05-13 03:05:45 -03:00
GCC Administrator 05a3929f9c Daily bump. 2022-05-13 00:19:08 +00:00
GCC Administrator f363017e8b Daily bump. 2022-05-12 00:19:06 +00:00
Martin Jambor 988fbc6366
ipa: Release body of clone_of when removing its last clone (PR 100413)
In the PR, the verifier complains that we did not manage to remove the
body of a node and it is right.  The node is kept for materialization
of two clones but after one is materialized, the other one is removed
as unneeded (as a part of delete_unreachable_blocks_update_callgraph).
The problem is that the node removal does not check for this situation
and can leave the clone_of node there with a body attached to it even
though there is no use for it any more.  This patch does checks for it
and handles the situation in a simlar way that
cgraph_node::materialize_clone does it, except that it also has to be
careful that the removed node itself does not have any clones, which
would still need the clone_of's body.  Failing to do that results in a
bootstrap failure.

gcc/ChangeLog:

2022-04-27  Martin Jambor  <mjambor@suse.cz>

	PR ipa/100413
	* cgraph.cc (cgraph_node::remove): Release body of the node this
	is clone_of if appropriate.

gcc/testsuite/ChangeLog:

2022-04-27  Martin Jambor  <mjambor@suse.cz>

	PR ipa/100413
	* g++.dg/ipa/pr100413.C: New test.

(cherry picked from commit 27ee75dbe8)
2022-05-11 23:28:21 +02:00
GCC Administrator d74cade6c1 Daily bump. 2022-05-11 00:20:00 +00:00
Joseph Myers c318b1af73 Update gcc hr.po
* hr.po: Update.
2022-05-10 20:23:33 +00:00
Jonathan Wakely cc93971399 libstdc++: Add <spanstream> declarations to <iosfwd> [PR105284]
libstdc++-v3/ChangeLog:

	PR libstdc++/105284
	* include/std/iosfwd: Add declarations for <spanstream> class
	templates and typedefs.
	* include/std/spanstream (basic_spanbuf, basic_ispanstream)
	(basic_ospanstream, basic_spanstream): Remove default template
	arguments.
	* testsuite/27_io/headers/iosfwd/synopsis.cc: Add <spanstream>
	declarations.
	* testsuite/27_io/headers/iosfwd/types.cc: Check <spanstream>
	default arguments.

(cherry picked from commit ca97c87758)
2022-05-10 18:24:19 +01:00
Jonathan Wakely 3e6067bdca libstdc++: Add <syncstream> declarations to <iosfwd> [PR105284]
libstdc++-v3/ChangeLog:

	PR libstdc++/105284
	* include/std/iosfwd: Add declarations for <synstream> class
	templates and typedefs.
	* include/std/syncstream (basic_syncbuf, basic_osyncstream):
	Remove default template arguments.
	* testsuite/27_io/headers/iosfwd/synopsis.cc: New test.
	* testsuite/27_io/headers/iosfwd/types.cc: New test.

(cherry picked from commit 1807e07825)
2022-05-10 18:24:19 +01:00
H.J. Lu ab8a8d0537 x86: Add .note.GNU-stack section only for Linux
Add .note.GNU-stack section only for Linux since it may not be supported
on non-Linux OSes.  __ELF__ isn't checked since these tests can only run
on Linux/x86 ELF systems.

	PR target/105472
	* gcc.target/i386/iamcu/asm-support.S: Add .note.GNU-stack section
	only for Linux.
	* gcc.target/x86_64/abi/asm-support.S: Likewise.
	* gcc.target/x86_64/abi/avx/asm-support.S: Likewise.
	* gcc.target/x86_64/abi/avx512f/asm-support.S: Likewise.
	* gcc.target/x86_64/abi/avx512fp16/asm-support.S: Likewise.
	* gcc.target/x86_64/abi/avx512fp16/m256h/asm-support.S: Likewise.
	* gcc.target/x86_64/abi/avx512fp16/m512h/asm-support.S: Likewise.
	* gcc.target/x86_64/abi/ms-sysv/do-test.S: Likewise.

(cherry picked from commit 71eae0fd3d)
2022-05-10 09:42:45 -07:00
Jakub Jelinek 9468cc35da isel: Fix up gimple_expand_vec_set_expr [PR105528]
The following testcase ICEs (and only without -g), because we don't replace
one VEC_COND_EXPR with .VCOND* call.
We don't do that because gimple_expand_vec_set_expr adds some stmts before
*gsi and then uses gsi_remove to remove it.  gsi_remove moves the iterator
to the next stmt and in the caller we then do gsi_next before looking at
another stmt, which means we can skip processing of one stmt, which in this
case happened to be a VEC_COND_EXPR but with -g is some debug stmt in
between.  As we always emit some stmts before it, it is easy to update the
iterator to the last stmt emitted there, so that caller continues really
with the next stmt.

2022-05-10  Jakub Jelinek  <jakub@redhat.com>

	PR tree-optimization/105528
	* gimple-isel.cc (gimple_expand_vec_set_expr): After gsi_remove
	set *gsi to gsi_for_stmt (ass_stmt).  Fix up function comment.

	* gcc.dg/pr105528.c: New test.

(cherry picked from commit ddd46293e2)
2022-05-10 18:39:51 +02:00
Eric Botcazou b931d0cfd3 Fix internal error with vectorization on SPARC
This is a regression present since the 10.x series, but the underlying issue
has been there since the TARGET_VEC_PERM_CONST hook was implemented, in the
form of an ICE when expanding a constant VEC_PERM_EXPR in V4QI, while the
back-end only supports V8QI constant VEC_PERM_EXPRs.

gcc/
	PR target/105292
	* config/sparc/sparc.cc (sparc_vectorize_vec_perm_const): Return
	true only for 8-byte vector modes.

gcc/testsuite/
	* gcc.target/sparc/20220510-1.c: New test.
2022-05-10 09:40:35 +02:00
GCC Administrator 6d7d4f59c3 Daily bump. 2022-05-10 00:19:32 +00:00
Joseph Myers 076aee6b18 Update gcc .po files
* be.po, da.po, de.po, el.po, es.po, fi.po, fr.po, hr.po, id.po,
	ja.po, nl.po, ru.po, sr.po, sv.po, tr.po, uk.po, vi.po, zh_CN.po,
	zh_TW.po: Update.
2022-05-09 21:11:02 +00:00
Jonathan Wakely df8e384d5f libstdc++: Fix test that fails on Solaris [PR104731]
On Solaris the dirent::d_name member is a single char, causing this test
to fail with warnings about buffer overflow. Change the test to use a
union with additional space for writing a string to the d_name member.

libstdc++-v3/ChangeLog:

	PR libstdc++/104731
	* testsuite/27_io/filesystem/iterators/error_reporting.cc:
	Use a trailing char array as storage for dirent::d_name.

(cherry picked from commit aa8bdfee1d)
2022-05-09 12:28:27 +01:00
GCC Administrator 197b7ace53 Daily bump. 2022-05-09 00:18:39 +00:00
GCC Administrator 0870ab6133 Daily bump. 2022-05-08 00:19:11 +00:00
GCC Administrator d413626f99 Daily bump. 2022-05-07 00:18:53 +00:00
Jonathan Wakely 03257e7ee3 libstdc++: Fix deserialization for std::normal_distribution [PR105502]
This fixes a regression in std::normal_distribution deserialization that
caused the object to be left unchanged if the __state_avail value read
from the stream was false.

libstdc++-v3/ChangeLog:

	PR libstdc++/105502
	* include/bits/random.tcc
	(operator>>(basic_istream<C,T>&, normal_distribution<R>&)):
	Update state when __state_avail is false.
	* testsuite/26_numerics/random/normal_distribution/operators/serialize.cc:
	Check that deserialized object equals serialized one.

(cherry picked from commit 909ef4e272)
2022-05-06 23:57:44 +01:00
Michael Meissner e6b1ac334a rs6000: Ignore fusion option flags for inlining test [PR102059]
The -mpower8-fusion and -mpower10-fusion options do not modify which
instructions we can generate, so ignore them when deciding whether we
can inline callee into caller.

2022-05-06   Michael Meissner  <meissner@linux.ibm.com>

gcc/
	PR target/102059
	* config/rs6000/rs6000.cc (rs6000_can_inline_p): Ignore -mpower8-fusion
	and -mpower10-fusion options for inlining purposes.

gcc/testsuite/
	PR target/102059
	* gcc.target/powerpc/pr102059-4.c: New test.

(cherry picked from commit 2fb654f77d)
2022-05-06 14:05:50 -05:00
H.J. Lu e38194f5ad x86: Add missing .note.GNU-stack to assembly source
Add .note.GNU-stack assembly source to avoid linker warning:

ld: warning: /tmp/ccPZSZ7Z.o: missing .note.GNU-stack section implies executable stack
ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
FAIL: gcc.target/i386/iamcu/test_3_element_struct_and_unions.c compilation,  -O0

	PR testsuite/105433
	* gcc.target/i386/iamcu/asm-support.S: Add .note.GNU-stack.
	* gcc.target/x86_64/abi/asm-support.S: Likewise.
	* gcc.target/x86_64/abi/avx/asm-support.S: Likewise.
	* gcc.target/x86_64/abi/avx512f/asm-support.S: Likewise.
	* gcc.target/x86_64/abi/avx512fp16/asm-support.S: Likewise.
	* gcc.target/x86_64/abi/avx512fp16/m256h/asm-support.S: Likewise.
	* gcc.target/x86_64/abi/avx512fp16/m512h/asm-support.S: Likewise.
	* gcc.target/x86_64/abi/ms-sysv/do-test.S: Likewise.

(cherry picked from commit 7e1f30d7ed)
2022-05-06 07:41:04 -07:00
H.J. Lu c3b582a444 libsanitizer: cherry-pick commit b226894d475b from upstream
cherry-pick:

b226894d475b [sanitizer] [sanitizer] Correct GetTls for x32

(cherry picked from commit a48be2e513)
2022-05-06 07:38:35 -07:00
Patrick Palka 8f2b7c1356 c++: ICE during aggr CTAD for member tmpl [PR105476]
Here we're crashing from maybe_aggr_guide ultimately because
processing_template_decl isn't set when partially instantiating the
guide's parameter list; this causes us to force completion of the
dependent type Visitor_functior<Fn>, which of course fails and results
in an unexpected error_mark_node (the instantation should always succeed).

	PR c++/105476

gcc/cp/ChangeLog:

	* pt.cc (maybe_aggr_guide): Set processing_template_decl when
	partially instantiating the guide's parameter list.

gcc/testsuite/ChangeLog:

	* g++.dg/cpp2a/class-deduction-aggr13.C: New test.
	* g++.dg/cpp2a/class-deduction-aggr13a.C: New test.

(cherry picked from commit 8a98e3ff7e)
2022-05-06 09:11:58 -04:00
Patrick Palka eed2cd48cd libstdc++: Don't use std::tolower in <charconv> [PR103911]
As with std::isdigit in r12-6281-gc83ecfbe74a5cf, we shouldn't be using
std::tolower in <charconv> either.

	PR libstdc++/103911

libstdc++-v3/ChangeLog:

	* src/c++17/floating_from_chars.cc (find_end_of_float): Accept
	two delimeters for the exponent part in the form of a possibly
	NULL string of length two.  Don't use std::tolower.
	(pattern): Adjust calls to find_end_of_float accordingly.

(cherry picked from commit 86d821ddf5)
2022-05-06 09:11:58 -04:00
Richard Biener 39c56695c7 middle-end/105376 - invalid REAL_CST for DFP constant
We are eventually ICEing in decimal_to_decnumber on non-decimal
REAL_VALUE_TYPE that creep in from uses of build_real (..., dconst*)
for DFP types.  The following extends the decimal_to_decnumber
special-casing of dconst* to build_real, avoiding the bogus REAL_CSTs
from creeping into the IL and modified to ones not handled by
the decimal_to_decnumber special casing.  It also makes sure to
ICE for not handled dconst* values at the point we build the REAL_CST.

2022-04-27  Richard Biener  <rguenther@suse.de>

	PR middle-end/105376
	* tree.cc (build_real): Special case dconst* arguments
	for decimal floating point types.

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

(cherry picked from commit e27eef7478)
2022-05-06 12:29:48 +02:00
Alexandre Oliva e8cd7d0066 [PR105324] libstdc++: testsuite: pr105324 requires FP from_char
The floating-point overloads of from_char are only declared if
_GLIBCXX_HAVE_USELOCALE is #defined as nonzero.  That's exposed from
charconv as __cpp_lib_to_chars >= 201611L, so guard the test body with
that.


for  libstdc++-v3/ChangeLog

	PR c++/105324
	* testsuite/20_util/from_chars/pr105324.cc: Guard test body
	with conditional for floating-point overloads of from_char.

(cherry picked from commit 25389f3de4)
2022-05-06 07:26:04 -03:00
Jakub Jelinek 8b26d0e28b c++: Don't emit deprecated warnings or unavailable errors on lambda declarations
On the following testcase, we emit deprecated warnings or unavailable errors
even on merge declarations of those lambdas (the dg-bogus directives), while
IMHO we should emit them only when something actually calls those lambdas.

The following patch temporarily disables that diagnostics during
maybe_add_lambda_conv_op.

PR2173R1 also says that ambiguity between attribute-specifier-seq at the
end of requires-clause and attribute-specifier-seq from lambda-expression
should be resolved to attribute-specifier-seq for the latter.  Do we need
to do anything about that?  I mean, can a valid requires-clause end with
an attribute-specifier-seq?  Say operator int [[]] is valid primary
expression, but requires operator int [[]] isn't valid, nor is
requires operator int, no?

2022-05-04  Jakub Jelinek  <jakub@redhat.com>

	* lambda.cc: Include decl.h.
	(maybe_add_lambda_conv_op): Temporarily override deprecated_state to
	UNAVAILABLE_DEPRECATED_SUPPRESS.

	* g++.dg/cpp23/lambda-attr1.C: New test.
	* g++.dg/cpp23/lambda-attr2.C: New test.

(cherry picked from commit 1c8e9bed9b)
2022-05-06 11:55:43 +02:00
Richard Biener f2c2ebb9ee tree-optimization/105484 - VEC_SET and EH
When the IL representation of VEC_SET is marked as throwing
(unnecessarily), we need to clean that when replacing it with
the .VEC_SET internal function call which cannot throw.

2022-05-05  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/105484
	* gimple-isel.cc (gimple_expand_vec_set_expr): Clean EH, return
	whether the CFG changed.
	(gimple_expand_vec_exprs): When the CFG changed, clean it up.

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

(cherry picked from commit e1a41143a2)
2022-05-06 11:13:13 +02:00
Richard Biener 1b13a6e0dc middle-end/105461 - opts processing of -fvar-tracking
The flag_var_tracking reset in finish_options doesn't match the
condition in process_options, in particular we fail to reset it
when the option was specified on the command line.  The following
fixes this and also alters the debug info level guard to match
the one in process_options.

2022-05-03  Richard Biener  <rguenther@suse.de>

	PR middle-end/105461
	* opts.cc (finish_options): Match the condition to
	disable flag_var_tracking to that of process_options.

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

(cherry picked from commit 6b4cc78480)
2022-05-06 11:13:13 +02:00
Richard Biener ae6271d5e3 Fixup OPTION_SET_P usage in finish_options
When some code was moved from process_options to finish_options,
uses of OPTION_SET_P were not replaced with references to the
opts_set option set.  The following fixes this.

2022-05-03  Richard Biener  <rguenther@suse.de>

	* opts.cc: #undef OPTIONS_SET_P.
	(finish_options): Use opts_set instead of OPTIONS_SET_P.

(cherry picked from commit 99f55024b0)
2022-05-06 11:13:12 +02:00
Richard Biener 30b5b785ab tree-optimization/105437 - BB vect with extern defs of throwing stmts
We have to watch out for vectorized stmt insert locations if the
def from the last stmt alters control flow.  We constrain region
building so we know the def is outside of the current region
and thus we can insert at the region start point.

2022-05-02  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/105437
	* tree-vect-slp.cc (vect_schedule_slp_node): Handle the
	case where last_stmt alters control flow.

	* g++.dg/vect/pr105437.cc: New testcase.

(cherry picked from commit 3a3eda000f)
2022-05-06 11:13:12 +02:00
Richard Biener e229f9b8f5 tree-optimization/105394 - vector lowering of compares
The following fixes missing handling of non-integer mode but
masked (SVE or MVE) compares in vector lowering by using the
appropriate mask element width to extract the components and
adjust the index.

2022-04-29  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/105394
	* tree-vect-generic.cc (expand_vector_condition): Adjust
	comp_width for non-integer mode masks as well.

(cherry picked from commit dfae0c5a29)
2022-05-06 11:13:12 +02:00
Jakub Jelinek d71b9208f3 Bump BASE-VER
2022-05-06  Jakub Jelinek  <jakub@redhat.com>

	* BASE-VER: Set to 12.1.1.
2022-05-06 10:14:19 +02:00
Jakub Jelinek 1ea978e306 Update ChangeLog and version files for release 2022-05-06 07:07:53 +00:00
Jakub Jelinek 463c264c7d Update gennews for GCC 12.
2022-05-06  Jakub Jelinek  <jakub@redhat.com>

	* gennews (files): Add files for GCC 12.

(cherry picked from commit 8025f29fbd)
2022-05-06 08:50:47 +02:00
GCC Administrator 519c756fa5 Daily bump. 2022-05-06 00:19:11 +00:00
Iain Buclaw b4acfef134 d: Merge upstream dmd 88de5e369.
D front-end changes:

    - Merge regression fixes in v2.100.0 branch.

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 88de5e369.
2022-05-05 21:00:36 +02:00
Joseph Myers 98de58a463 Regenerate gcc.pot
* gcc.pot: Regenerate.
2022-05-05 17:03:54 +00:00
GCC Administrator 8620ef87e7 Daily bump. 2022-05-05 00:18:48 +00:00
Joseph Myers d00a2766ae Update cpplib es.po
* es.po: Update.
2022-05-04 16:34:26 +00:00
GCC Administrator 4c2659c6b5 Daily bump. 2022-05-04 00:19:12 +00:00
Joseph Myers 826406f3fe Update gcc sv.po
* sv.po: Update.
2022-05-03 22:17:18 +00:00
Iain Buclaw c0b7ecae5f d: Merge upstream dmd 081d61e15, druntime 9c0d4f91, phobos dba1bbe27.
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.
2022-05-03 17:53:08 +02:00
Alexandre Oliva 38f8e13027 testsuite: vect: update unaligned message
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 404edfce68)
2022-05-03 04:23:54 -03:00
GCC Administrator 3d02d0a024 Daily bump. 2022-05-03 00:18:44 +00:00
Patrick Palka 4a6d7da796 libstdc++: case-sensitivity in hexfloat std::from_chars [PR105441]
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 576f975cab)
2022-05-02 07:08:28 -04:00