From 0e921f2bd9b602a54791d8cf0c6f9b8123e7ed54 Mon Sep 17 00:00:00 2001 From: Joerg Sonnenberger Date: Mon, 11 Nov 2013 14:00:37 +0000 Subject: NetBSD 6.99.26 switched to default rounding mode, so adjust __FLT_EVAL_METHOD__ accordingly. Add test case for this and the SSE2 variances on NetBSD. llvm-svn: 194377 --- clang/lib/Basic/Targets.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'clang/lib/Basic') diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index f6b1a150f82..17d75e2c32a 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -2995,7 +2995,12 @@ public: : NetBSDTargetInfo(Triple) {} virtual unsigned getFloatEvalMethod() const { - // NetBSD defaults to "double" rounding + unsigned Major, Minor, Micro; + getTriple().getOSVersion(Major, Minor, Micro); + // New NetBSD uses the default rounding mode. + if (Major >= 7 || (Major == 6 && Minor == 99 && Micro >= 26) || Major == 0) + return X86_32TargetInfo::getFloatEvalMethod(); + // NetBSD before 6.99.26 defaults to "double" rounding. return 1; } }; -- cgit v1.2.3