summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDale Johannesen <dalej@apple.com>2010-09-24 19:05:48 +0000
committerDale Johannesen <dalej@apple.com>2010-09-24 19:05:48 +0000
commit6a4cd59b08848c6f28b02ce2eb84c0b4716f305b (patch)
tree048b23d6cd82fd2e1ac0fa669d788a4906070604 /llvm/lib
parent3843bb9d2c72ab559f916b955ea69b9df2e1c903 (diff)
downloadbcm5719-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.cpp8
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
OpenPOWER on IntegriCloud