mirror of
https://github.com/llvm/llvm-project.git
synced 2025-05-02 23:16:05 +00:00
x86_64 ABI: Pass <1 x double> in memory. This is arguably wrong, but
matches gcc 4.2 (not llvm-gcc). llvm-svn: 63413
This commit is contained in:
parent
0b0a64830a
commit
4d22eaeb44
@ -521,10 +521,13 @@ void X86_64ABIInfo::classify(QualType Ty,
|
||||
} else if (const VectorType *VT = Ty->getAsVectorType()) {
|
||||
uint64_t Size = Context.getTypeSize(VT);
|
||||
if (Size == 64) {
|
||||
// FIXME: For some reason, gcc appears to be treating <1 x
|
||||
// double> as INTEGER; this seems wrong, but we will match for
|
||||
// now (icc rejects <1 x double>, so...).
|
||||
Lo = (VT->getElementType() == Context.DoubleTy) ? Integer : SSE;
|
||||
// gcc passes <1 x double> in memory.
|
||||
if (VT->getElementType() == Context.DoubleTy) {
|
||||
Lo = Memory;
|
||||
return;
|
||||
}
|
||||
|
||||
Lo = Integer;
|
||||
|
||||
// If this type crosses an eightbyte boundary, it should be
|
||||
// split.
|
||||
|
Loading…
x
Reference in New Issue
Block a user