diff options
author | Alex Bradbury <asb@igalia.com> | 2022-08-19 18:16:24 +0100 |
---|---|---|
committer | Alex Bradbury <asb@igalia.com> | 2022-08-19 20:31:06 +0100 |
commit | bc538320809fb52af12ec0366118c82201af4f40 (patch) | |
tree | fd7d274e5696194593a8f38830ad085b8460dad1 /lldb/packages/Python/lldbsuite/test/lldbgdbclient.py | |
parent | ac6a0cdc2e85d69ec20fd31d29f30843db0943bd (diff) | |
download | llvm-bc538320809fb52af12ec0366118c82201af4f40.zip llvm-bc538320809fb52af12ec0366118c82201af4f40.tar.gz llvm-bc538320809fb52af12ec0366118c82201af4f40.tar.bz2 |
[clang][RISCV] Fix incorrect ABI lowering for inherited structs under hard-float ABIs
The hard float ABIs have a rule that if a flattened struct contains
either a single fp value, or an int+fp, or fp+fp then it may be passed
in a pair of registers (if sufficient GPRs+FPRs are available).
detectFPCCEligibleStruct and the helper it calls,
detectFPCCEligibleStructHelper examine the type of the argument/return
value to determine if it complies with the requirements for this ABI
rule.
As reported in bug #57084, this logic produces incorrect results for C++
structs that inherit from other structs. This is because only the fields
of the struct were examined, but enumerating RD->fields misses any
fields in inherited C++ structs. This patch corrects that issue by
adding appropriate logic to enumerate any included base structs.
Differential Revision: https://reviews.llvm.org/D131677
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/lldbgdbclient.py')
0 files changed, 0 insertions, 0 deletions