Index: clang/lib/Basic/Targets.cpp =================================================================== --- clang/lib/Basic/Targets.cpp +++ clang/lib/Basic/Targets.cpp @@ -517,7 +517,7 @@ case llvm::Triple::FreeBSD: return new FreeBSDTargetInfo(Triple, Opts); case llvm::Triple::Fuchsia: - return new FuchsiaTargetInfo(Triple, Opts); + return new FuchsiaX86_64TargetInfo(Triple, Opts); case llvm::Triple::KFreeBSD: return new KFreeBSDTargetInfo(Triple, Opts); case llvm::Triple::Solaris: Index: clang/lib/Basic/Targets/X86.h =================================================================== --- clang/lib/Basic/Targets/X86.h +++ clang/lib/Basic/Targets/X86.h @@ -848,6 +848,18 @@ const char *getLongDoubleMangling() const override { return "g"; } }; + +// x86_64 Fuchsia target +class LLVM_LIBRARY_VISIBILITY FuchsiaX86_64TargetInfo + : public FuchsiaTargetInfo { +public: + FuchsiaX86_64TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) + : FuchsiaTargetInfo(Triple, Opts) { + LongDoubleFormat = &llvm::APFloat::IEEEquad(); + } +}; + } // namespace targets } // namespace clang + #endif // LLVM_CLANG_LIB_BASIC_TARGETS_X86_H