r325872 - [mips] Reland r310704
Stefan Maksimovic via cfe-commits
cfe-commits at lists.llvm.org
Fri Feb 23 00:37:48 PST 2018
Author: smaksimovic
Date: Fri Feb 23 00:37:48 2018
New Revision: 325872
URL: http://llvm.org/viewvc/llvm-project?rev=325872&view=rev
Log:
[mips] Reland r310704
Recommit this change which was previously reverted
for the 5.0.0 release since the failures identified
were dealt with in r325782.
Added:
cfe/trunk/test/CodeGen/mips-aggregate-arg.c
- copied unchanged from r310703, cfe/trunk/test/CodeGen/mips-aggregate-arg.c
Modified:
cfe/trunk/lib/CodeGen/TargetInfo.cpp
Modified: cfe/trunk/lib/CodeGen/TargetInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/TargetInfo.cpp?rev=325872&r1=325871&r2=325872&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/TargetInfo.cpp (original)
+++ cfe/trunk/lib/CodeGen/TargetInfo.cpp Fri Feb 23 00:37:48 2018
@@ -6870,6 +6870,14 @@ MipsABIInfo::classifyArgumentType(QualTy
return getNaturalAlignIndirect(Ty, RAA == CGCXXABI::RAA_DirectInMemory);
}
+ // Use indirect if the aggregate cannot fit into registers for
+ // passing arguments according to the ABI
+ unsigned Threshold = IsO32 ? 16 : 64;
+
+ if(getContext().getTypeSizeInChars(Ty) > CharUnits::fromQuantity(Threshold))
+ return ABIArgInfo::getIndirect(CharUnits::fromQuantity(Align), true,
+ getContext().getTypeAlign(Ty) / 8 > Align);
+
// If we have reached here, aggregates are passed directly by coercing to
// another structure type. Padding is inserted if the offset of the
// aggregate is unaligned.
More information about the cfe-commits
mailing list