[LLVMbugs] [Bug 13624] New: powerpc64 complex return value handling does not match PPC64 ELF ABI

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Thu Aug 16 14:27:23 PDT 2012


http://llvm.org/bugs/show_bug.cgi?id=13624

             Bug #: 13624
           Summary: powerpc64 complex return value handling does not match
                    PPC64 ELF ABI
           Product: new-bugs
           Version: trunk
          Platform: Other
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: wschmidt at linux.vnet.ibm.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


On powerpc64-unknown-linux-gnu, the method of returning complex values is not
compatible with the 64-bit PowerPC ELF Application Binary Interface Supplement
(see http://refspecs.linuxfoundation.org/ELF/ppc64/PPC-elf64abi-1.9.html).  To
wit, Section 3.2.4 states:  "Functions shall return floating point complex
values of size 16 (four or eight byte complex) in f1:f2..."

Instead, LLVM currently returns a floating-point complex value into an area of
the caller's stack addressed by GPR3, as this example shows.

_Complex double
comp_test (void)
{
  _Complex double x = 2.5i;
  return x;
}

.L.comp_test:
    li 4, 4097
    li 5, 0
    sldi 4, 4, 50
    std 5, -16(1)
    std 4, -8(1)
    lfd 0, -16(1)
    stfd 0, 0(3)    <--
    std 4, 8(3)     <--
    mr 5, 3
    std 4, 8(3)
    std 5, -24(1)
    blr

-- 
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.



More information about the llvm-bugs mailing list