[PATCH] D135171: FreeBSD: enable __float128 on x86
pkubaj requested changes to this revision. pkubaj added a comment. This revision now requires changes to proceed. Could you modify it appropriately to also enable ppc, ppc64 and ppc64le? I checked whether it works on FreeBSD 13.1-RELEASE and it builds and works fine. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D135171/new/ https://reviews.llvm.org/D135171 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D144232: [PowerPC] Correctly use ELFv2 ABI on FreeBSD/powerpc64
pkubaj created this revision. pkubaj added reviewers: dim, nemanjai, adalava. Herald added subscribers: shchenz, kbarton, hiraditya. Herald added a project: All. pkubaj requested review of this revision. Herald added projects: clang, LLVM. Herald added subscribers: llvm-commits, cfe-commits. Currently ELFv2 is mostly set, but some places still default to ELFv1. While this mostly works, it breaks in particular when lld is used with LTO, as reported in https://github.com/llvm/llvm-project/issues/46697. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D144232 Files: clang/lib/Basic/Targets/PPC.h llvm/lib/Target/PowerPC/PPCTargetMachine.cpp Index: llvm/lib/Target/PowerPC/PPCTargetMachine.cpp === --- llvm/lib/Target/PowerPC/PPCTargetMachine.cpp +++ llvm/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -233,6 +233,10 @@ assert(Options.MCOptions.getABIName().empty() && "Unknown target-abi option!"); + if (TT.isOSFreeBSD() && TT.getArch() == Triple::ppc64 && (TT.getOSMajorVersion() == 0 || TT.getOSMajorVersion() >= 13)) { +return PPCTargetMachine::PPC_ABI_ELFv2; + } + switch (TT.getArch()) { case Triple::ppc64le: return PPCTargetMachine::PPC_ABI_ELFv2; Index: clang/lib/Basic/Targets/PPC.h === --- clang/lib/Basic/Targets/PPC.h +++ clang/lib/Basic/Targets/PPC.h @@ -425,6 +425,9 @@ } else if ((Triple.getArch() == llvm::Triple::ppc64le)) { DataLayout = "e-m:e-i64:64-n32:64"; ABI = "elfv2"; +} else if (Triple.isOSFreeBSD() && (Triple.getOSMajorVersion() == 0 || Triple.getOSMajorVersion() >= 13)) { + DataLayout = "E-m:e-i64:64-n32:64"; + ABI = "elfv2"; } else { DataLayout = "E-m:e-i64:64-n32:64"; ABI = "elfv1"; Index: llvm/lib/Target/PowerPC/PPCTargetMachine.cpp === --- llvm/lib/Target/PowerPC/PPCTargetMachine.cpp +++ llvm/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -233,6 +233,10 @@ assert(Options.MCOptions.getABIName().empty() && "Unknown target-abi option!"); + if (TT.isOSFreeBSD() && TT.getArch() == Triple::ppc64 && (TT.getOSMajorVersion() == 0 || TT.getOSMajorVersion() >= 13)) { +return PPCTargetMachine::PPC_ABI_ELFv2; + } + switch (TT.getArch()) { case Triple::ppc64le: return PPCTargetMachine::PPC_ABI_ELFv2; Index: clang/lib/Basic/Targets/PPC.h === --- clang/lib/Basic/Targets/PPC.h +++ clang/lib/Basic/Targets/PPC.h @@ -425,6 +425,9 @@ } else if ((Triple.getArch() == llvm::Triple::ppc64le)) { DataLayout = "e-m:e-i64:64-n32:64"; ABI = "elfv2"; +} else if (Triple.isOSFreeBSD() && (Triple.getOSMajorVersion() == 0 || Triple.getOSMajorVersion() >= 13)) { + DataLayout = "E-m:e-i64:64-n32:64"; + ABI = "elfv2"; } else { DataLayout = "E-m:e-i64:64-n32:64"; ABI = "elfv1"; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D144232: [PowerPC] Correctly use ELFv2 ABI on FreeBSD/powerpc64
pkubaj updated this revision to Diff 498185. pkubaj added a comment. Fix indenting according to clang-format suggestions. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D144232/new/ https://reviews.llvm.org/D144232 Files: clang/lib/Basic/Targets/PPC.h llvm/lib/Target/PowerPC/PPCTargetMachine.cpp Index: llvm/lib/Target/PowerPC/PPCTargetMachine.cpp === --- llvm/lib/Target/PowerPC/PPCTargetMachine.cpp +++ llvm/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -233,6 +233,11 @@ assert(Options.MCOptions.getABIName().empty() && "Unknown target-abi option!"); + if (TT.isOSFreeBSD() && TT.getArch() == Triple::ppc64 && + (TT.getOSMajorVersion() == 0 || TT.getOSMajorVersion() >= 13)) { +return PPCTargetMachine::PPC_ABI_ELFv2; + } + switch (TT.getArch()) { case Triple::ppc64le: return PPCTargetMachine::PPC_ABI_ELFv2; Index: clang/lib/Basic/Targets/PPC.h === --- clang/lib/Basic/Targets/PPC.h +++ clang/lib/Basic/Targets/PPC.h @@ -425,6 +425,10 @@ } else if ((Triple.getArch() == llvm::Triple::ppc64le)) { DataLayout = "e-m:e-i64:64-n32:64"; ABI = "elfv2"; +} else if (Triple.isOSFreeBSD() && (Triple.getOSMajorVersion() == 0 || +Triple.getOSMajorVersion() >= 13)) { + DataLayout = "E-m:e-i64:64-n32:64"; + ABI = "elfv2"; } else { DataLayout = "E-m:e-i64:64-n32:64"; ABI = "elfv1"; Index: llvm/lib/Target/PowerPC/PPCTargetMachine.cpp === --- llvm/lib/Target/PowerPC/PPCTargetMachine.cpp +++ llvm/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -233,6 +233,11 @@ assert(Options.MCOptions.getABIName().empty() && "Unknown target-abi option!"); + if (TT.isOSFreeBSD() && TT.getArch() == Triple::ppc64 && + (TT.getOSMajorVersion() == 0 || TT.getOSMajorVersion() >= 13)) { +return PPCTargetMachine::PPC_ABI_ELFv2; + } + switch (TT.getArch()) { case Triple::ppc64le: return PPCTargetMachine::PPC_ABI_ELFv2; Index: clang/lib/Basic/Targets/PPC.h === --- clang/lib/Basic/Targets/PPC.h +++ clang/lib/Basic/Targets/PPC.h @@ -425,6 +425,10 @@ } else if ((Triple.getArch() == llvm::Triple::ppc64le)) { DataLayout = "e-m:e-i64:64-n32:64"; ABI = "elfv2"; +} else if (Triple.isOSFreeBSD() && (Triple.getOSMajorVersion() == 0 || +Triple.getOSMajorVersion() >= 13)) { + DataLayout = "E-m:e-i64:64-n32:64"; + ABI = "elfv2"; } else { DataLayout = "E-m:e-i64:64-n32:64"; ABI = "elfv1"; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D144232: [PowerPC] Correctly use ELFv2 ABI on FreeBSD/powerpc64
pkubaj updated this revision to Diff 498378. pkubaj added a comment. Addres adalava's review. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D144232/new/ https://reviews.llvm.org/D144232 Files: clang/lib/Basic/Targets/PPC.h llvm/lib/Target/PowerPC/PPCTargetMachine.cpp Index: llvm/lib/Target/PowerPC/PPCTargetMachine.cpp === --- llvm/lib/Target/PowerPC/PPCTargetMachine.cpp +++ llvm/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -233,6 +233,11 @@ assert(Options.MCOptions.getABIName().empty() && "Unknown target-abi option!"); + if (TT.isOSFreeBSD() && TT.getArch() == Triple::ppc64 && + (TT.getOSVersion().empty() || TT.getOSMajorVersion() >= 13)) { +return PPCTargetMachine::PPC_ABI_ELFv2; + } + switch (TT.getArch()) { case Triple::ppc64le: return PPCTargetMachine::PPC_ABI_ELFv2; Index: clang/lib/Basic/Targets/PPC.h === --- clang/lib/Basic/Targets/PPC.h +++ clang/lib/Basic/Targets/PPC.h @@ -425,6 +425,10 @@ } else if ((Triple.getArch() == llvm::Triple::ppc64le)) { DataLayout = "e-m:e-i64:64-n32:64"; ABI = "elfv2"; +} else if (Triple.isOSFreeBSD() && (Triple.getOSVersion().empty() || +Triple.getOSMajorVersion() >= 13)) { + DataLayout = "E-m:e-i64:64-n32:64"; + ABI = "elfv2"; } else { DataLayout = "E-m:e-i64:64-n32:64"; ABI = "elfv1"; Index: llvm/lib/Target/PowerPC/PPCTargetMachine.cpp === --- llvm/lib/Target/PowerPC/PPCTargetMachine.cpp +++ llvm/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -233,6 +233,11 @@ assert(Options.MCOptions.getABIName().empty() && "Unknown target-abi option!"); + if (TT.isOSFreeBSD() && TT.getArch() == Triple::ppc64 && + (TT.getOSVersion().empty() || TT.getOSMajorVersion() >= 13)) { +return PPCTargetMachine::PPC_ABI_ELFv2; + } + switch (TT.getArch()) { case Triple::ppc64le: return PPCTargetMachine::PPC_ABI_ELFv2; Index: clang/lib/Basic/Targets/PPC.h === --- clang/lib/Basic/Targets/PPC.h +++ clang/lib/Basic/Targets/PPC.h @@ -425,6 +425,10 @@ } else if ((Triple.getArch() == llvm::Triple::ppc64le)) { DataLayout = "e-m:e-i64:64-n32:64"; ABI = "elfv2"; +} else if (Triple.isOSFreeBSD() && (Triple.getOSVersion().empty() || +Triple.getOSMajorVersion() >= 13)) { + DataLayout = "E-m:e-i64:64-n32:64"; + ABI = "elfv2"; } else { DataLayout = "E-m:e-i64:64-n32:64"; ABI = "elfv1"; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D117972: [PowerPC] Fix SSE translation on FreeBSD
pkubaj created this revision. pkubaj added reviewers: adalava, nemanjai. Herald added subscribers: shchenz, kbarton, krytarowski. pkubaj requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Fix for https://github.com/llvm/llvm-project/issues/53085 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D117972 Files: clang/lib/Headers/ppc_wrappers/mm_malloc.h Index: clang/lib/Headers/ppc_wrappers/mm_malloc.h === --- clang/lib/Headers/ppc_wrappers/mm_malloc.h +++ clang/lib/Headers/ppc_wrappers/mm_malloc.h @@ -19,7 +19,11 @@ #ifndef __cplusplus extern int posix_memalign (void **, size_t, size_t); #else +#if defined(__linux__) extern "C" int posix_memalign (void **, size_t, size_t) throw (); +#elif defined(__FreeBSD__) +extern "C" int posix_memalign (void **, size_t, size_t); +#endif #endif static __inline void * Index: clang/lib/Headers/ppc_wrappers/mm_malloc.h === --- clang/lib/Headers/ppc_wrappers/mm_malloc.h +++ clang/lib/Headers/ppc_wrappers/mm_malloc.h @@ -19,7 +19,11 @@ #ifndef __cplusplus extern int posix_memalign (void **, size_t, size_t); #else +#if defined(__linux__) extern "C" int posix_memalign (void **, size_t, size_t) throw (); +#elif defined(__FreeBSD__) +extern "C" int posix_memalign (void **, size_t, size_t); +#endif #endif static __inline void * ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D117972: [PowerPC] Fix SSE translation on FreeBSD
pkubaj updated this revision to Diff 403103. pkubaj added a comment. Address review. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D117972/new/ https://reviews.llvm.org/D117972 Files: clang/lib/Headers/ppc_wrappers/mm_malloc.h Index: clang/lib/Headers/ppc_wrappers/mm_malloc.h === --- clang/lib/Headers/ppc_wrappers/mm_malloc.h +++ clang/lib/Headers/ppc_wrappers/mm_malloc.h @@ -19,7 +19,7 @@ #ifndef __cplusplus extern int posix_memalign (void **, size_t, size_t); #else -extern "C" int posix_memalign (void **, size_t, size_t) throw (); +extern "C" int posix_memalign (void **, size_t, size_t); #endif static __inline void * Index: clang/lib/Headers/ppc_wrappers/mm_malloc.h === --- clang/lib/Headers/ppc_wrappers/mm_malloc.h +++ clang/lib/Headers/ppc_wrappers/mm_malloc.h @@ -19,7 +19,7 @@ #ifndef __cplusplus extern int posix_memalign (void **, size_t, size_t); #else -extern "C" int posix_memalign (void **, size_t, size_t) throw (); +extern "C" int posix_memalign (void **, size_t, size_t); #endif static __inline void * ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D117972: [PowerPC] Fix SSE translation on FreeBSD
pkubaj added a comment. Since I'm not a LLVM committer, can you commit it and merge to 14 branch? Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D117972/new/ https://reviews.llvm.org/D117972 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits