diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-05-12 15:22:40 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-05-12 15:22:40 +0000 |
commit | 203e2e8dd8c55496a6e47f5b1aacc22f4324711c (patch) | |
tree | a12f258c0fa4e1ad936695b2281a1a0407ca93a9 /clang/lib | |
parent | 08a2ede018e57e1bff0a4b3ee8dee5d5144897d5 (diff) | |
download | bcm5719-llvm-203e2e8dd8c55496a6e47f5b1aacc22f4324711c.tar.gz bcm5719-llvm-203e2e8dd8c55496a6e47f5b1aacc22f4324711c.zip |
x86-64 ABI: clang incorrectly passes union { long double, float } in
register.
- Merge algorithm was returning MEMORY as it should.
llvm-svn: 71556
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/CodeGen/CGCall.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp index c46e7901d9f..a1427293439 100644 --- a/clang/lib/CodeGen/CGCall.cpp +++ b/clang/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; |