Hi = SSEUp;
}
} else if (const ComplexType *CT = Ty->getAsComplexType()) {
- QualType ET = CT->getElementType();
+ QualType ET = Context.getCanonicalType(CT->getElementType());
uint64_t Size = Context.getTypeSize(Ty);
if (ET->isIntegerType()) {
if (Ty->isIntegerType() || Ty->isPointerType())
return ABIArgInfo::getDirect();
} else if (CoerceTo == llvm::Type::DoubleTy) {
+ // FIXME: It would probably be better to make CGFunctionInfo only
+ // map using canonical types than to canonize here.
+ QualType CTy = Context.getCanonicalType(Ty);
+
// Float and double end up in a single SSE reg.
- if (Ty == Context.FloatTy || Ty == Context.DoubleTy)
+ if (CTy == Context.FloatTy || CTy == Context.DoubleTy)
return ABIArgInfo::getDirect();
}