Use isSingleValueType instead of isFirstClassType to

exclude struct and array types.

llvm-svn: 51456
This commit is contained in:
Dan Gohman 2008-05-23 00:12:03 +00:00
parent 97b020e61e
commit 7a0566b9cd
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();
for (unsigned i = 0; i < Num; i++) {
const Type *Ty = STy->getElementType(i);
if (!Ty->isFirstClassType() && Ty != Type::VoidTy)
if (!Ty->isSingleValueType() && Ty != Type::VoidTy)
return true;
}
return false;

View File

@ -643,7 +643,7 @@ void SROA::RewriteBitCastUserOfAlloca(Instruction *BCInst, AllocationInst *AI,
const Type *EltTy =cast<PointerType>(EltPtr->getType())->getElementType();
// 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)) {
Value *Elt = new LoadInst(SROADest ? OtherElt : EltPtr, "tmp",
MI);