// Register the default SparcV9 implementation...
RegisterPass<TargetData> X("targetdata", "Target Data Layout");
}
+char TargetData::ID = 0;
//===----------------------------------------------------------------------===//
// Support for StructLayout
}
}
-TargetData::TargetData(const Module *M) {
+TargetData::TargetData(const Module *M)
+ : ImmutablePass((intptr_t)&ID) {
init(M->getDataLayout());
}
case Type::DoubleTyID:
AlignType = FLOAT_ALIGN;
break;
- case Type::VectorTyID:
- AlignType = VECTOR_ALIGN;
+ case Type::VectorTyID: {
+ const VectorType *VTy = cast<VectorType>(Ty);
+ // Degenerate vectors are assumed to be scalar-ized
+ if (VTy->getNumElements() == 1)
+ return getAlignment(VTy->getElementType(), abi_or_pref);
+ else
+ AlignType = VECTOR_ALIGN;
break;
+ }
default:
assert(0 && "Bad type for getAlignment!!!");
break;