diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index dd85c64496a6..51538f1a7759 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -2184,6 +2184,20 @@ public: }; } // end anonymous namespace +namespace { +class NetBSDI386TargetInfo : public NetBSDTargetInfo { +public: + NetBSDI386TargetInfo(const std::string &triple) : + NetBSDTargetInfo(triple) { + } + + virtual unsigned getFloatEvalMethod() const { + // NetBSD defaults to "double" rounding + return 1; + } +}; +} // end anonymous namespace + namespace { class OpenBSDI386TargetInfo : public OpenBSDTargetInfo { public: @@ -3889,7 +3903,7 @@ static TargetInfo *AllocateTarget(const std::string &T) { case llvm::Triple::DragonFly: return new DragonFlyBSDTargetInfo(T); case llvm::Triple::NetBSD: - return new NetBSDTargetInfo(T); + return new NetBSDI386TargetInfo(T); case llvm::Triple::OpenBSD: return new OpenBSDI386TargetInfo(T); case llvm::Triple::FreeBSD: