[LLVMbugs] [Bug 990] NEW: codegen problem with 'complex' type on x86/linux
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Tue Nov 7 16:29:37 PST 2006
http://llvm.org/bugs/show_bug.cgi?id=990
Summary: codegen problem with 'complex' type on x86/linux
Product: libraries
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: Backend: X86
AssignedTo: unassignedbugs at nondot.org
ReportedBy: nicholas at mxc.ca
I've noticed a pattern in my testcase failures involving "csretcc". The bug
occurs with a simple testcase from the "cexp" man page:
// RUN: %llvmgcc -O2 -lm %s -o %s.exe
// RUN: ./%s.exe | grep "-1.000000+0.000000*i"
#include <stdio.h>
/* check that exp(i*pi) == -1 */
#include <math.h> /* for atan */
#include <complex.h>
int main(void) {
double pi = 4*atan(1);
complex z = cexp(I*pi);
printf("%f+%f*i\n", creal(z), cimag(z));
}
With LLVM, this produces:
$ llvm-gcc -O0 csretcc.c -lm -o csretcc
$ ./csretcc
0.000000+0.000000*i
Segmentation fault
while with GCC, it works:
$ gcc -O0 csretcc.c -lm -o csretcc
$ ./csretcc
-1.000000+0.000000*i
In the bytecode, the call to "cexp" is called with "csretcc" calling convention.
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
More information about the llvm-bugs
mailing list