public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "terra at gnome dot org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c/112614] New: Compile-time float-to-_Decimal64 fails for -NAN
Date: Sun, 19 Nov 2023 00:37:10 +0000	[thread overview]
Message-ID: <bug-112614-4@http.gcc.gnu.org/bugzilla/> (raw)

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"));
}

             reply	other threads:[~2023-11-19  0:37 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-19  0:37 terra at gnome dot org [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-112614-4@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).