summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2013-09-11 06:48:53 +0000
committerCraig Topper <craig.topper@gmail.com>2013-09-11 06:48:53 +0000
commitc0070a43202b451f78d099a3adc66e7edc45a53e (patch)
treec9307e4adba8d565af1a75fc422e8ade3788956a /clang/lib/Basic/Targets.cpp
parent0ad114c446bcf6d75f8f7b03e67b418b4191b9f7 (diff)
downloadbcm5719-llvm-c0070a43202b451f78d099a3adc66e7edc45a53e.tar.gz
bcm5719-llvm-c0070a43202b451f78d099a3adc66e7edc45a53e.zip
Fix a bug where -msse followed by -mno-sse would leave MMX enabled.
llvm-svn: 190496
Diffstat (limited to 'clang/lib/Basic/Targets.cpp')
-rw-r--r--clang/lib/Basic/Targets.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index aa0993d4aa7..00431c2a0d6 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -2143,8 +2143,6 @@ void X86TargetInfo::setSSELevel(llvm::StringMap<bool> &Features,
case SSE2:
Features["sse2"] = true;
case SSE1:
- if (!Features.count("mmx"))
- setMMXLevel(Features, MMX, Enabled);
Features["sse"] = true;
case NoSSE:
break;
@@ -2427,10 +2425,14 @@ bool X86TargetInfo::HandleTargetFeatures(std::vector<std::string> &Features,
// Don't tell the backend if we're turning off mmx; it will end up disabling
// SSE, which we don't want.
+ // Additionally, if SSE is enabled and mmx is not explicitly disabled,
+ // then enable MMX.
std::vector<std::string>::iterator it;
it = std::find(Features.begin(), Features.end(), "-mmx");
if (it != Features.end())
Features.erase(it);
+ else if (SSELevel > NoSSE)
+ MMX3DNowLevel = std::max(MMX3DNowLevel, MMX);
return true;
}
OpenPOWER on IntegriCloud