lgtm
================
Comment at: lib/CodeGen/CGCall.cpp:1655-1657
@@ -1673,7 +1654,5 @@
// If the coerce-to type is a first class aggregate, we flatten it and
// pass the elements. Either way is semantically identical, but fast-isel
// and the optimizer generally likes scalar values better than FCAs.
llvm::StructType *STy =
dyn_cast<llvm::StructType>(ArgI.getCoerceToType());
----------------
It sounds like this comment, particularly the part about them being
semantically identical, is no longer true. It sounds like the ARM backend now
pattern matches for HFAs and passes them differently. Can you please fix up the
comment to reflect the current reality?
================
Comment at: lib/CodeGen/CGCall.cpp:1659-1660
@@ -1679,3 +1658,4 @@
llvm::StructType *STy =
dyn_cast<llvm::StructType>(ArgI.getCoerceToType());
- if (!isAAPCSVFP(FI, getTarget()) && STy && STy->getNumElements() > 1) {
+ if (ArgI.isDirect() && ArgI.getCanBeFlattened() && STy &&
+ STy->getNumElements() > 1) {
uint64_t SrcSize = CGM.getDataLayout().getTypeAllocSize(STy);
----------------
Personally, I don't think we should flatten 'Direct' arguments. Chris Lattner
added this functionality long ago in 2010. I think such arguments should
probably be changed to use 'Expand', but that's a much larger project.
================
Comment at: lib/CodeGen/TargetInfo.cpp:4714
@@ -4701,3 +4713,3 @@
if (Size <= 8)
- return ABIArgInfo::getDirect(llvm::Type::getInt8Ty(getVMContext()));
+ return ABIArgInfo::getDirect(llvm::Type::getInt8Ty(getVMContext()), 0,
nullptr, !isAAPCS_VFP);
if (Size <= 16)
----------------
Needs wrapping
http://reviews.llvm.org/D5063
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits