CVSROOT:        /cvs
Module name:    src
Changes by:     [email protected]        2020/11/19 22:07:27

Modified files:
        gnu/llvm/clang/lib/CodeGen: TargetInfo.cpp 

Log message:
Fix va_arg in C++, Objective-C on 32-bit powerpc

In the PPC32 SVR4 ABI, a va_list has copies of registers from the
function call. va_arg looked in the wrong registers for (the pointer
representation of) an object in Objective-C, and for some types in
C++. Fix va_arg to look in the general-purpose registers, not the
floating-point registers. Also fix va_arg for some C++ types, like a
member function pointer, that are aggregates for the ABI.

Anthony Richardby found the problem in Objective-C. Eli Friedman
suggested part of this fix.

Fixes https://bugs.llvm.org/show_bug.cgi?id=47921
I have submitted this diff as https://reviews.llvm.org/D90329

ok kettenis@

Reply via email to