[LLVMbugs] [Bug 729] NEW: Need to adjust stack ptr after call to a function which returns > 8 byte data

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Fri Apr 7 12:24:24 PDT 2006


http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=729

           Summary: Need to adjust stack ptr after call to a function which
                    returns > 8 byte data
           Product: libraries
           Version: trunk
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: major
          Priority: P2
         Component: Backend: X86
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: evan.cheng at apple.com


This causes CoyoteBench/fftbench to fail on Mac OS X / x86.

According to Mac OS X IA-32 ABI doc:

The called function places structures and unions larger than 8 bytes (including vectors) at the address 
supplied by the caller. When the function returns, it also removes this address from the stack. For 
example, the _Complex double data type is 16 bytes in size; the called function returns results of this 
type in the location indicated by the caller. See "Passing Arguments" for more information.

So the %esp has to be adjusted after a call to a function that returns value whose size > 8 bytes.

e.g.

#include <complex.h>

complex double G;
void test() {
  G = cexp(G);
}

gcc generated:
	call	L_cexp$stub
	subl	$4, %esp

LLVM generated assembly is missing the subl following the call.



------- 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