[LLVMbugs] [Bug 13436] New: regparm is lost for struct arguments

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Mon Jul 23 06:20:46 PDT 2012


             Bug #: 13436
           Summary: regparm is lost for struct arguments
           Product: clang
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: C++
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: rafael.espindola at gmail.com
                CC: dgregor at apple.com, llvmbugs at cs.uiuc.edu
    Classification: Unclassified

on X86 clang compiles

struct foobar {
  int x;
__attribute__((regparm(3))) void f(int a, struct foobar b, int c);
void g() {
  struct foobar y;
  y.x = 2;
  f(1, y, 3);


define void @g() nounwind optsize {
  tail call void @f(i32 inreg 1, i32 2, i32 inreg 3) nounwind optsize
  ret void
declare void @f(i32 inreg, i32, i32 inreg) optsize

and llc then produces

    subl    $12, %esp
    movl    $2, (%esp)
    movl    $1, %eax
    movl    $3, %edx
    calll    f
    addl    $12, %esp

gcc produces

    subl    $12, %esp
    movl    $3, %ecx
    movl    $2, %edx
    movl    $1, %eax
    call    f
    addl    $12, %esp

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