https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71460

--- Comment #12 from Alexander Cherepanov <ch3root at openwall dot com> ---
On 2016-06-09 11:22, rguenth at gcc dot gnu.org wrote:
> Would be nice to have a testcase for the SRA case as well.

Source code:

----------------------------------------------------------------------
#define _GNU_SOURCE
#include <fenv.h>

struct s { double d; char c; };

__attribute__((noinline,noclone))
void copy(struct s *q, struct s *p)
{
   struct s tmp = *p;
   *q = tmp;
}

int main()
{
   feenableexcept(FE_INVALID);

   struct s x = {0}, y;
   ((unsigned char *)&x.d)[7] = 0x7f;
   ((unsigned char *)&x.d)[6] = 0xf0; // sNaN
   ((unsigned char *)&x.d)[0] = 0x01;

   copy(&y, &x);
}
----------------------------------------------------------------------

Results:

----------------------------------------------------------------------
$ gcc -std=c11 -pedantic -Wall -Wextra -fsignaling-nans -lm -m32 -O3 
test.c && ./a.out
Floating point exception
----------------------------------------------------------------------

gcc version: gcc (GCC) 7.0.0 20160608 (experimental)

Reply via email to