diff options
| author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2017-05-12 13:18:07 +0000 |
|---|---|---|
| committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2017-05-12 13:18:07 +0000 |
| commit | 408b272a006a32b4b57ea56bd50f738bea4b5054 (patch) | |
| tree | 9aad28cab4fd976288c63d5522de449f82951dc4 /clang/lib/CodeGen | |
| parent | 7f03231cc6bb5cfd5245e9edf9a06d7d3486a3d4 (diff) | |
| download | bcm5719-llvm-408b272a006a32b4b57ea56bd50f738bea4b5054.tar.gz bcm5719-llvm-408b272a006a32b4b57ea56bd50f738bea4b5054.zip | |
[Hexagon] Make sure to pass empty struct arguments with nontrivial ctors
Thanks to Richard Smith for the suggested fix.
This fixes llvm.org/PR33009
llvm-svn: 302895
Diffstat (limited to 'clang/lib/CodeGen')
| -rw-r--r-- | clang/lib/CodeGen/TargetInfo.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/clang/lib/CodeGen/TargetInfo.cpp b/clang/lib/CodeGen/TargetInfo.cpp index 33d6a6ff414..18367d1602b 100644 --- a/clang/lib/CodeGen/TargetInfo.cpp +++ b/clang/lib/CodeGen/TargetInfo.cpp @@ -7043,13 +7043,13 @@ ABIArgInfo HexagonABIInfo::classifyArgumentType(QualType Ty) const { ABIArgInfo::getExtend() : ABIArgInfo::getDirect()); } + if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI())) + return getNaturalAlignIndirect(Ty, RAA == CGCXXABI::RAA_DirectInMemory); + // Ignore empty records. if (isEmptyRecord(getContext(), Ty, true)) return ABIArgInfo::getIgnore(); - if (CGCXXABI::RecordArgABI RAA = getRecordArgABI(Ty, getCXXABI())) - return getNaturalAlignIndirect(Ty, RAA == CGCXXABI::RAA_DirectInMemory); - uint64_t Size = getContext().getTypeSize(Ty); if (Size > 64) return getNaturalAlignIndirect(Ty, /*ByVal=*/true); |

