Use isSingleValueType instead of isFirstClassType to

exclude struct and array types.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51456 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Dan Gohman 2008-05-23 00:12:03 +00:00
parent 5bbaf01b84
commit 31e5bdccf2
2 changed files with 2 additions and 2 deletions

View File

@ -339,7 +339,7 @@ bool SRETPromotion::nestedStructType(const StructType *STy) {
unsigned Num = STy->getNumElements(); unsigned Num = STy->getNumElements();
for (unsigned i = 0; i < Num; i++) { for (unsigned i = 0; i < Num; i++) {
const Type *Ty = STy->getElementType(i); const Type *Ty = STy->getElementType(i);
if (!Ty->isFirstClassType() && Ty != Type::VoidTy) if (!Ty->isSingleValueType() && Ty != Type::VoidTy)
return true; return true;
} }
return false; return false;

View File

@ -643,7 +643,7 @@ void SROA::RewriteBitCastUserOfAlloca(Instruction *BCInst, AllocationInst *AI,
const Type *EltTy =cast<PointerType>(EltPtr->getType())->getElementType(); const Type *EltTy =cast<PointerType>(EltPtr->getType())->getElementType();
// If we got down to a scalar, insert a load or store as appropriate. // If we got down to a scalar, insert a load or store as appropriate.
if (EltTy->isFirstClassType()) { if (EltTy->isSingleValueType()) {
if (isa<MemCpyInst>(MI) || isa<MemMoveInst>(MI)) { if (isa<MemCpyInst>(MI) || isa<MemMoveInst>(MI)) {
Value *Elt = new LoadInst(SROADest ? OtherElt : EltPtr, "tmp", Value *Elt = new LoadInst(SROADest ? OtherElt : EltPtr, "tmp",
MI); MI);