summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic
diff options
context:
space:
mode:
authorJoerg Sonnenberger <joerg@bec.de>2013-11-11 14:00:37 +0000
committerJoerg Sonnenberger <joerg@bec.de>2013-11-11 14:00:37 +0000
commit0e921f2bd9b602a54791d8cf0c6f9b8123e7ed54 (patch)
tree9950032bdb1f2e34cc8198068a9e73d2fb00bb89 /clang/lib/Basic
parentdee7160baf27e5f93a3605fb08438f805cff1b7a (diff)
downloadbcm5719-llvm-0e921f2bd9b602a54791d8cf0c6f9b8123e7ed54.tar.gz
bcm5719-llvm-0e921f2bd9b602a54791d8cf0c6f9b8123e7ed54.zip
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
Diffstat (limited to 'clang/lib/Basic')
-rw-r--r--clang/lib/Basic/Targets.cpp7
1 files changed, 6 insertions, 1 deletions
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<X86_32TargetInfo>(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;
}
};
OpenPOWER on IntegriCloud