aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CGCall.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-05-12 15:22:40 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-05-12 15:22:40 +0000
commit20e95c5eb400c864bbd4421624fdf7b25ce70f56 (patch)
tree859ebafed0d49ef8ad26747c071f5cc201764a74 /lib/CodeGen/CGCall.cpp
parent264e93799c891c03d60cf0b09a032b0a9935d3b5 (diff)
x86-64 ABI: clang incorrectly passes union { long double, float } in
register. - Merge algorithm was returning MEMORY as it should. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71556 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGCall.cpp')
-rw-r--r--lib/CodeGen/CGCall.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/CodeGen/CGCall.cpp b/lib/CodeGen/CGCall.cpp
index c46e7901d9..a142729343 100644
--- a/lib/CodeGen/CGCall.cpp
+++ b/lib/CodeGen/CGCall.cpp
@@ -633,7 +633,8 @@ X86_64ABIInfo::Class X86_64ABIInfo::merge(Class Accum,
return Field;
else if (Accum == Integer || Field == Integer)
return Integer;
- else if (Field == X87 || Field == X87Up || Field == ComplexX87)
+ else if (Field == X87 || Field == X87Up || Field == ComplexX87 ||
+ Accum == X87 || Accum == X87Up)
return Memory;
else
return SSE;