http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59534

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Version|unknown                     |4.9.0

--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
The same problem can be observed on x86_64-linux-gnu, but this target doesn't
trigger an exception on denormals by default.

The breakpoint should be set in retval1.f90:95, that corresponds to
master.3.f5_._omp_fn.0. The exact location of the failing insn is:

   0x0000000000400a40 <+240>:   xor    %edx,%edx
   0x0000000000400a42 <+242>:   mov    $0x1,%r12d
=> 0x0000000000400a48 <+248>:   ucomiss 0x7f9(%rip),%xmm0        # 0x401248
   0x0000000000400a4f <+255>:   setp   %dl
   0x0000000000400a52 <+258>:   cmove  %edx,%r12d
   0x0000000000400a56 <+262>:   and    %eax,%r12d
   0x0000000000400a59 <+265>:   jmpq   0x40097e <master.3.f5_._omp_fn.0+46>

[New Thread 0x7ffff7866700 (LWP 29056)]

Breakpoint 4, 0x0000000000400a48 in master.3.f5_._omp_fn.0 () at
/home/uros/gcc-svn/trunk/libgomp/testsuite/libgomp.fortran/retval1.f90:95
95        l = l .or. (is_f5 .and. f5 .ne. 6.5)
(gdb) p/f $xmm0
$13 = ( (6.5, 0, 0, 0), (5.3723379766381528e-315, 0), (0, 0, -48, 64, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 16592, 0, 0, 0, 0, 0, 0), (6.5, 0, 0, 0),
(5.3723379766381528e-315, 0), 0 )
(gdb) c
Continuing.
[Switching to Thread 0x7ffff7866700 (LWP 29056)]

Following session can be obtained:

(gdb) r
Breakpoint 4, 0x0000000000400a48 in master.3.f5_._omp_fn.0 () at
/home/uros/gcc-svn/trunk/libgomp/testsuite/libgomp.fortran/retval1.f90:95
95        l = l .or. (is_f5 .and. f5 .ne. 6.5)
(gdb) p/f $xmm0
$14 = ( (6.5, 0, 0, 0), (5.3723379766381528e-315, 0), (0, 0, -48, 64, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 16592, 0, 0, 0, 0, 0, 0), (6.5, 0, 0, 0),
(5.3723379766381528e-315, 0), 0 )
(gdb) c
Continuing.

Breakpoint 4, 0x0000000000400a48 in master.3.f5_._omp_fn.0 () at
/home/uros/gcc-svn/trunk/libgomp/testsuite/libgomp.fortran/retval1.f90:95
95        l = l .or. (is_f5 .and. f5 .ne. 6.5)
(gdb) p/f $xmm0
$15 = ( (1.12103877e-44, 0, 0, 0), (3.9525251667299724e-323, 0), (8, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (8, 0, 0, 0, 0, 0, 0, 0), (1.12103877e-44,
0, 0, 0), (3.9525251667299724e-323, 0), 0 )

Checking mxcsr and stepping a single insn shows that DE flag is set after:

(gdb) i r mxcsr
mxcsr          0x1f80   [ IM DM ZM OM UM PM ]
(gdb) si
0x0000000000400a4f      95        l = l .or. (is_f5 .and. f5 .ne. 6.5)
(gdb) i r mxcsr
mxcsr          0x1f82   [ DE IM DM ZM OM UM PM ]

The position of the PC:

   0x0000000000400a48 <+248>:   ucomiss 0x7f9(%rip),%xmm0        # 0x401248
=> 0x0000000000400a4f <+255>:   setp   %dl

Reply via email to