[LLVMbugs] [Bug 4203] New: Linux/PPC ABI: Obvious way of calling a C function which takes a struct paramater doesn' t work

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Tue May 12 11:20:01 PDT 2009


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

           Summary: Linux/PPC ABI: Obvious way of calling a C function which
                    takes a struct paramater doesn't work
           Product: new-bugs
           Version: unspecified
          Platform: Other
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P2
         Component: new bugs
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: ewasylishen at gmail.com
                CC: llvmbugs at cs.uiuc.edu


Created an attachment (id=2989)
 --> (http://llvm.org/bugs/attachment.cgi?id=2989)
a test case

Hi,

Suppose I compile a C function with gcc which takes a single struct parameter,
struct foo { float a, float b };

I would expect to call it from LLVM in the same way, i.e.:
call void @some_function(%struct.foo %examplestruct)
(where %struct.foo = type { float, float }).


This doesn't work (the C function gets nonsense values.) Instead, what does
work is calling it from LLVM by passing a pointer to the struct I want to pass:
call void @some_function(%struct.foo* %pointer_to_examplestruct)


I have attached a simple test case which demonstrates the problem.
The output is:
./fails
x=262253949499549329478747984903838629888.000000, y=0.000000
./works
x=3.140000, y=15.900000

I think, ideally, the 'fails' executable should produce the correct result,
"x=3.140000, y=15.900000".

Thanks


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