[LLVMbugs] [Bug 11709] New: va_list on ARM is different from AAPCS 7.1.4

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Jan 4 21:35:25 PST 2012


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

             Bug #: 11709
           Summary: va_list on ARM is different from AAPCS 7.1.4
           Product: clang
           Version: 3.0
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Frontend
        AssignedTo: unassignedclangbugs at nondot.org
        ReportedBy: borninjm at gmail.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified


Created attachment 7840
  --> http://llvm.org/bugs/attachment.cgi?id=7840
TestCase of GCC's ARM

AAPCS 7.1.4 requires that va_list match the structure shown

  va_list 
  struct __va_list 
  { 
    void* __ap; 
  }

but clang generates va_list on ARM as following 

  typedef void* __builtin_va_list; 

It does not pass the testcase of GCC - gcc.target/arm/va_list.c 
(see the attachement)

Wee can handle this issue by modifying lib/Basic/Targets.cpp

class ARMTargetInfo {
...
 virtual const char *getVAListDeclaration() const {
    return (ABI == "aapcs" || ABI == "aapcs-linux") ? 
        "typedef struct __va_list { void* __ap; } __builtin_va_list;" 
               :"typedef void* __builtin_va_list;";
  }
...
}

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