public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/112614] New: Compile-time float-to-_Decimal64 fails for -NAN
@ 2023-11-19 0:37 terra at gnome dot org
2023-11-19 21:46 ` [Bug middle-end/112614] " pinskia at gcc dot gnu.org
2023-11-20 21:07 ` joseph at codesourcery dot com
0 siblings, 2 replies; 3+ messages in thread
From: terra at gnome dot org @ 2023-11-19 0:37 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112614
Bug ID: 112614
Summary: Compile-time float-to-_Decimal64 fails for -NAN
Product: gcc
Version: 11.4.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: terra at gnome dot org
Target Milestone: ---
Created attachment 56636
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=56636&action=edit
Preprocessed source code
It looks like compile-time conversion of -NAN and -(double)NAN to _Decimal64
fails. Runtime conversion seems ok. -INFINITY is ok.
Tentatively blaming the C front end.
$ gcc -Wall -O2 d64nansign.c
$ ./a.out
Sign bit set as expected
Sign bit set as expected
Sign bit not set as expected
Sign bit not set as expected
Sign bit set as expected
Sign bit set as expected
Target: x86_64-linux-gnu
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <assert.h>
#include <string.h>
#include <math.h>
static void
test (_Decimal64 x)
{
uint64_t u;
assert (sizeof (x) == sizeof (u));
memcpy (&u, &x, sizeof(x));
if (u >> 63) {
printf ("Sign bit set as expected\n");
} else {
printf ("Sign bit not set as expected\n");
}
}
int
main (int argc, char **argv)
{
// compile-time
test (-(_Decimal64)(NAN));
test (-(_Decimal64)(NAN));
test ((_Decimal64)(-NAN)); // Fails
test ((_Decimal64)(-(double)NAN)); // Fails
// runtime
test (atof("-nan"));
test (-atof("nan"));
}
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug middle-end/112614] Compile-time float-to-_Decimal64 fails for -NAN
2023-11-19 0:37 [Bug c/112614] New: Compile-time float-to-_Decimal64 fails for -NAN terra at gnome dot org
@ 2023-11-19 21:46 ` pinskia at gcc dot gnu.org
2023-11-20 21:07 ` joseph at codesourcery dot com
1 sibling, 0 replies; 3+ messages in thread
From: pinskia at gcc dot gnu.org @ 2023-11-19 21:46 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112614
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Ever confirmed|0 |1
Last reconfirmed| |2023-11-19
Status|UNCONFIRMED |NEW
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed, not a regression.
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Bug middle-end/112614] Compile-time float-to-_Decimal64 fails for -NAN
2023-11-19 0:37 [Bug c/112614] New: Compile-time float-to-_Decimal64 fails for -NAN terra at gnome dot org
2023-11-19 21:46 ` [Bug middle-end/112614] " pinskia at gcc dot gnu.org
@ 2023-11-20 21:07 ` joseph at codesourcery dot com
1 sibling, 0 replies; 3+ messages in thread
From: joseph at codesourcery dot com @ 2023-11-20 21:07 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112614
--- Comment #2 from joseph at codesourcery dot com <joseph at codesourcery dot com> ---
The sign of a NaN isn't specified for conversions, only for a few
operations such as absolute value, negation, copysign.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-11-20 21:07 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-19 0:37 [Bug c/112614] New: Compile-time float-to-_Decimal64 fails for -NAN terra at gnome dot org
2023-11-19 21:46 ` [Bug middle-end/112614] " pinskia at gcc dot gnu.org
2023-11-20 21:07 ` joseph at codesourcery dot com
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).