Thanks for all these fixes. How are you finding these bugs?
On 11 September 2013 02:48, Craig Topper <[email protected]> wrote: > Author: ctopper > Date: Wed Sep 11 01:48:53 2013 > New Revision: 190496 > > URL: http://llvm.org/viewvc/llvm-project?rev=190496&view=rev > Log: > Fix a bug where -msse followed by -mno-sse would leave MMX enabled. > > Modified: > cfe/trunk/lib/Basic/Targets.cpp > cfe/trunk/test/Preprocessor/x86_target_features.c > > Modified: cfe/trunk/lib/Basic/Targets.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/Targets.cpp?rev=190496&r1=190495&r2=190496&view=diff > ============================================================================== > --- cfe/trunk/lib/Basic/Targets.cpp (original) > +++ cfe/trunk/lib/Basic/Targets.cpp Wed Sep 11 01:48:53 2013 > @@ -2143,8 +2143,6 @@ void X86TargetInfo::setSSELevel(llvm::St > 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 > > // 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; > } > > > Modified: cfe/trunk/test/Preprocessor/x86_target_features.c > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/x86_target_features.c?rev=190496&r1=190495&r2=190496&view=diff > ============================================================================== > --- cfe/trunk/test/Preprocessor/x86_target_features.c (original) > +++ cfe/trunk/test/Preprocessor/x86_target_features.c Wed Sep 11 01:48:53 2013 > @@ -140,3 +140,15 @@ > // RUN: %clang -target i386-unknown-unknown -march=atom -mpopcnt -mno-sse4.2 > -x c -E -dM -o - %s | FileCheck --check-prefix=NOSSE42POPCNT %s > > // NOSSE42POPCNT: #define __POPCNT__ 1 > + > +// RUN: %clang -target i386-unknown-unknown -march=atom -msse -x c -E -dM -o > - %s | FileCheck --check-prefix=SSEMMX %s > + > +// SSEMMX: #define __MMX__ 1 > + > +// RUN: %clang -target i386-unknown-unknown -march=atom -msse -mno-sse -x c > -E -dM -o - %s | FileCheck --check-prefix=SSENOSSEMMX %s > + > +// SSENOSSEMMX-NOT: #define __MMX__ 1 > + > +// RUN: %clang -target i386-unknown-unknown -march=atom -msse -mno-mmx -x c > -E -dM -o - %s | FileCheck --check-prefix=SSENOMMX %s > + > +// SSENOMMX-NOT: #define __MMX__ 1 > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
