aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/XCOFFObjectFile.cpp
diff options
context:
space:
mode:
authorGeorge Koehler <kernigh@gmail.com>2021-01-23 00:13:36 -0500
committerBrad Smith <brad@comstyle.com>2021-01-23 00:13:36 -0500
commit018984ae6833fae107aa9c502ab5536efceca88e (patch)
treed1e43e283a95b75c0bcf497ff1145c11ae3318e1 /llvm/lib/Object/XCOFFObjectFile.cpp
parent6c43564530365ac2c074d7515d4eada294d4ca0c (diff)
downloadllvm-018984ae6833fae107aa9c502ab5536efceca88e.zip
llvm-018984ae6833fae107aa9c502ab5536efceca88e.tar.gz
llvm-018984ae6833fae107aa9c502ab5536efceca88e.tar.bz2
[PowerPC] Fix va_arg in C++, Objective-C on 32-bit ELF targets
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 Reviewed By: efriedma, nemanjai Differential Revision: https://reviews.llvm.org/D90329
Diffstat (limited to 'llvm/lib/Object/XCOFFObjectFile.cpp')
0 files changed, 0 insertions, 0 deletions