summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86FastISel.cpp
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2011-06-30 23:42:18 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2011-06-30 23:42:18 +0000
commitd0e2352b656b427db7e7abd40e4b91f3e3626d22 (patch)
tree1435f214a26abfb80cd332695b247e6620c87d5c /llvm/lib/Target/X86/X86FastISel.cpp
parente9cc901814220fd6d26853c34c0d74cf525e0ac7 (diff)
downloadbcm5719-llvm-d0e2352b656b427db7e7abd40e4b91f3e3626d22.tar.gz
bcm5719-llvm-d0e2352b656b427db7e7abd40e4b91f3e3626d22.zip
Fix a problem with fast-isel return values introduced in r134018.
We would put the return value from long double functions in the wrong register. This fixes gcc.c-torture/execute/conversion.c llvm-svn: 134205
Diffstat (limited to 'llvm/lib/Target/X86/X86FastISel.cpp')
-rw-r--r--llvm/lib/Target/X86/X86FastISel.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86FastISel.cpp b/llvm/lib/Target/X86/X86FastISel.cpp
index cdaa29216b7..21e163a3005 100644
--- a/llvm/lib/Target/X86/X86FastISel.cpp
+++ b/llvm/lib/Target/X86/X86FastISel.cpp
@@ -1849,9 +1849,10 @@ bool X86FastISel::DoSelectCall(const Instruction *I, const char *MemIntName) {
// out as F80 and use a truncate to move it from fp stack reg to xmm reg.
if ((RVLocs[i].getLocReg() == X86::ST0 ||
RVLocs[i].getLocReg() == X86::ST1)) {
- if (isScalarFPTypeInSSEReg(RVLocs[i].getValVT()))
+ if (isScalarFPTypeInSSEReg(RVLocs[i].getValVT())) {
CopyVT = MVT::f80;
- CopyReg = createResultReg(X86::RFP80RegisterClass);
+ CopyReg = createResultReg(X86::RFP80RegisterClass);
+ }
BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DL, TII.get(X86::FpPOP_RETVAL),
CopyReg);
} else {
OpenPOWER on IntegriCloud