diff options
author | Dale Johannesen <dalej@apple.com> | 2010-09-24 19:05:48 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2010-09-24 19:05:48 +0000 |
commit | 6a4cd59b08848c6f28b02ce2eb84c0b4716f305b (patch) | |
tree | 048b23d6cd82fd2e1ac0fa669d788a4906070604 /llvm/lib | |
parent | 3843bb9d2c72ab559f916b955ea69b9df2e1c903 (diff) | |
download | bcm5719-llvm-6a4cd59b08848c6f28b02ce2eb84c0b4716f305b.tar.gz bcm5719-llvm-6a4cd59b08848c6f28b02ce2eb84c0b4716f305b.zip |
We can't return SSE/MMX vectors if SSE is disabled.
llvm-svn: 114745
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 9df5c1f8e55..28bc10a9b6b 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -1315,9 +1315,11 @@ X86TargetLowering::LowerReturn(SDValue Chain, SDValue ValToCopy = OutVals[i]; EVT ValVT = ValToCopy.getValueType(); - // If this is x86-64, and we disabled SSE, we can't return FP values - if ((ValVT == MVT::f32 || ValVT == MVT::f64) && - (Subtarget->is64Bit() && !Subtarget->hasSSE1())) { + // If this is x86-64, and we disabled SSE, we can't return FP values, + // or SSE or MMX vectors. + if ((ValVT == MVT::f32 || ValVT == MVT::f64 || + VA.getLocReg() == X86::XMM0 || VA.getLocReg() == X86::XMM1) && + (Subtarget->is64Bit() && !Subtarget->hasSSE1())) { report_fatal_error("SSE register return with SSE disabled"); } // Likewise we can't return F64 values with SSE1 only. gcc does so, but |