forked from OSchip/llvm-project
x86_64 ABI: Need to use canonical types when comparing against
ASTContext types. llvm-svn: 64533
This commit is contained in:
parent
671f2c085f
commit
3d88672f64
|
@ -542,7 +542,7 @@ void X86_64ABIInfo::classify(QualType Ty,
|
|||
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()) {
|
||||
|
@ -670,8 +670,12 @@ ABIArgInfo X86_64ABIInfo::getCoerceResult(QualType Ty,
|
|||
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();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue