clang and 3dnow(a)

Dimitry Andric dim at FreeBSD.org
Fri Apr 15 16:39:59 UTC 2011


On 2011-04-15 01:41, Alexander Best wrote:
> per coincidence i discovered the following contrary behavior between gcc and
> clang:
>
> -mno-mmx implies -mno-3dnow under gcc. under clang -mno-mmx will *not* imply
> -mno-3dnow!
>
> is this a clang design feature or a bug? fixing it would be trivial (see
> attached patch).

I don't think it was intentionally designed, nor that it is a bug.  It
it just arbitrary what you disable when you specify '-mno-mmx'.

However, it would probably be nice if clang emulated gcc's behaviour
here.

Adding cfe-commits@ in the loop, to see if the clang guys think this is
desirable.


diff --git a/contrib/llvm/tools/clang/lib/Basic/Targets.cpp b/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
index 55321f2..1af7c52 100644
--- a/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
+++ b/contrib/llvm/tools/clang/lib/Basic/Targets.cpp
@@ -1133,8 +1133,9 @@ bool X86TargetInfo::setFeatureEnabled(llvm::StringMap<bool> &Features,
        Features["avx"] = true;
    } else {
      if (Name == "mmx")
-      Features["mmx"] = Features["sse"] = Features["sse2"] = Features["sse3"] =
-        Features["ssse3"] = Features["sse41"] = Features["sse42"] = false;
+      Features["mmx"] = Features["3dnow"] = Features["3dnowa"] =
+       Features["sse"] = Features["sse2"] = Features["sse3"] =
+       Features["ssse3"] = Features["sse41"] = Features["sse42"] = false;
      else if (Name == "sse")
        Features["sse"] = Features["sse2"] = Features["sse3"] =
          Features["ssse3"] = Features["sse41"] = Features["sse42"] = false;


More information about the freebsd-toolchain mailing list