[Bug tree-optimization/69827] New: [5 Regression] sincos not done
tkoenig at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Feb 15 17:09:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69827
Bug ID: 69827
Summary: [5 Regression] sincos not done
Product: gcc
Version: 5.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: tkoenig at gcc dot gnu.org
Target Milestone: ---
The following code does not produce a call to sincos even with
-ffast-math -O3.
I think this should be happening since PR 30038, so am I tentatively
marking this as a regression. Not sure about current trunk,
hope to be able to check soon.
$ cat foo.c
#include <math.h>
void foo(double t, double *x, double *y)
{
*y = sin(t);
*x = cos(t);
}
$ gcc -S -O3 -ffast-math foo.c
$ cat foo.s
.file "foo.c"
.section .text.unlikely,"x"
.LCOLDB0:
.text
.LHOTB0:
.p2align 4,,15
.globl foo
.def foo; .scl 2; .type 32; .endef
.seh_proc foo
foo:
pushq %rsi
.seh_pushreg %rsi
pushq %rbx
.seh_pushreg %rbx
subq $56, %rsp
.seh_stackalloc 56
movaps %xmm6, 32(%rsp)
.seh_savexmm %xmm6, 32
.seh_endprologue
movapd %xmm0, %xmm6
movq %r8, %rsi
movq %rdx, %rbx
call sin
movsd %xmm0, (%rsi)
movapd %xmm6, %xmm0
call cos
nop
movaps 32(%rsp), %xmm6
movsd %xmm0, (%rbx)
addq $56, %rsp
popq %rbx
popq %rsi
ret
.seh_endproc
.section .text.unlikely,"x"
.LCOLDE0:
.text
.LHOTE0:
.ident "GCC: (GNU) 5.3.0"
.def sin; .scl 2; .type 32; .endef
.def cos; .scl 2; .type 32; .endef
This works as expected:
$ cat bar.c
void bar(double t, double *x, double *y)
{
__builtin_sincos(t, x, y);
*x = *x + 1.;
}
$ gcc -O3 -S bar.c
$ cat bar.s
.file "bar.c"
.section .text.unlikely,"x"
.LCOLDB1:
.text
.LHOTB1:
.p2align 4,,15
.globl bar
.def bar; .scl 2; .type 32; .endef
.seh_proc bar
bar:
pushq %rbx
.seh_pushreg %rbx
subq $32, %rsp
.seh_stackalloc 32
.seh_endprologue
movq %rdx, %rbx
call sincos
movsd .LC0(%rip), %xmm0
addsd (%rbx), %xmm0
movsd %xmm0, (%rbx)
addq $32, %rsp
popq %rbx
ret
.seh_endproc
.section .text.unlikely,"x"
.LCOLDE1:
.text
.LHOTE1:
.section .rdata,"dr"
.align 8
.LC0:
.long 0
.long 1072693248
.ident "GCC: (GNU) 5.3.0"
.def sincos; .scl 2; .type 32; .endef
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-cygwin/5.3.0/lto-wrapper.exe
Target: x86_64-unknown-cygwin
Configured with: ../gcc-5.3.0/configure --enable-languages=c,c++,fortran,lto
--enable-shared --enable-shared-libgcc --enable-static
--enable-version-specific-runtime-libs --enable-bootstrap --enable-__cxa_atexit
--with-dwarf2 --with-tune=generic --enable-languages=c,c++,fortran,lto
--enable-graphite --enable-threads=posix --enable-libatomic --enable-libgomp
--disable-libitm --enable-libquadmath --enable-libquadmath-support
--enable-libssp --disable-symvers --with-gnu-ld --with-gnu-as
--with-cloog-include=/usr/include/cloog-isl --without-libiconv-prefix
--without-libintl-prefix --with-system-zlib --enable-linker-build-id
Thread model: posix
gcc version 5.3.0 (GCC)
More information about the Gcc-bugs
mailing list