forked from OSchip/llvm-project
[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
This commit is contained in:
parent
7f03231cc6
commit
408b272a00
|
@ -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);
|
||||
|
|
|
@ -1,10 +1,6 @@
|
|||
// RUN: %clang_cc1 -emit-llvm -o - %s -triple %itanium_abi_triple | FileCheck %s
|
||||
// RUN: %clang_cc1 -emit-llvm -o - %s -triple %itanium_abi_triple -std=c++98 -fexceptions -fcxx-exceptions | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-EH
|
||||
|
||||
// Hexagon calling convention lowering is horribly broken and fails to pass A
|
||||
// object to B constructor at all!
|
||||
// XFAIL: hexagon
|
||||
|
||||
struct A {
|
||||
A();
|
||||
~A();
|
||||
|
|
Loading…
Reference in New Issue