diff options
author | Brad Smith <brad@comstyle.com> | 2023-03-11 16:43:59 -0500 |
---|---|---|
committer | Tobias Hieta <tobias@hieta.se> | 2023-03-23 15:33:36 +0100 |
commit | 2861fa247395312baad6a4628a9066190b7d0e55 (patch) | |
tree | 74dffaa62aa960a3c2f349699978850a45e5a894 | |
parent | 1172ed57d8234990b277281b3084969fcdb38602 (diff) | |
download | llvm-2861fa247395312baad6a4628a9066190b7d0e55.tar.gz |
[Driver][FreeBSD] Simplify ARM handling
Since FreeBSD 8 / 9 support was dropped from the Driver there is room to simplify
things with the ARM handling.
The exception model handling function can be removed.
EABI is now the default.
Reviewed By: dim
Differential Revision: https://reviews.llvm.org/D144823
(cherry picked from commit 13a10e7ec90a71c3665491231d468772c19a4b59)
-rw-r--r-- | clang/lib/Basic/Targets/ARM.cpp | 3 | ||||
-rw-r--r-- | clang/lib/Driver/ToolChains/FreeBSD.cpp | 26 | ||||
-rw-r--r-- | clang/lib/Driver/ToolChains/FreeBSD.h | 2 | ||||
-rw-r--r-- | clang/test/Driver/arm-abi.c | 4 | ||||
-rw-r--r-- | clang/test/Driver/freebsd.c | 7 | ||||
-rw-r--r-- | llvm/lib/TargetParser/ARMTargetParser.cpp | 2 |
6 files changed, 11 insertions, 33 deletions
diff --git a/clang/lib/Basic/Targets/ARM.cpp b/clang/lib/Basic/Targets/ARM.cpp index f11751a76073..b85d5dc2d347 100644 --- a/clang/lib/Basic/Targets/ARM.cpp +++ b/clang/lib/Basic/Targets/ARM.cpp @@ -254,6 +254,7 @@ ARMTargetInfo::ARMTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) : TargetInfo(Triple), FPMath(FP_Default), IsAAPCS(true), LDREX(0), HW_FP(0) { + bool IsFreeBSD = Triple.isOSFreeBSD(); bool IsOpenBSD = Triple.isOSOpenBSD(); bool IsNetBSD = Triple.isOSNetBSD(); @@ -321,7 +322,7 @@ ARMTargetInfo::ARMTargetInfo(const llvm::Triple &Triple, default: if (IsNetBSD) setABI("apcs-gnu"); - else if (IsOpenBSD) + else if (IsFreeBSD || IsOpenBSD) setABI("aapcs-linux"); else setABI("aapcs"); diff --git a/clang/lib/Driver/ToolChains/FreeBSD.cpp b/clang/lib/Driver/ToolChains/FreeBSD.cpp index 9a5af638c399..2230295ccd74 100644 --- a/clang/lib/Driver/ToolChains/FreeBSD.cpp +++ b/clang/lib/Driver/ToolChains/FreeBSD.cpp @@ -85,16 +85,7 @@ void freebsd::Assembler::ConstructJob(Compilation &C, const JobAction &JA, else CmdArgs.push_back("-mfpu=softvfp"); - switch (getToolChain().getTriple().getEnvironment()) { - case llvm::Triple::GNUEABIHF: - case llvm::Triple::GNUEABI: - case llvm::Triple::EABI: - CmdArgs.push_back("-meabi=5"); - break; - - default: - CmdArgs.push_back("-matpcs"); - } + CmdArgs.push_back("-meabi=5"); break; } case llvm::Triple::sparc: @@ -467,21 +458,6 @@ Tool *FreeBSD::buildAssembler() const { Tool *FreeBSD::buildLinker() const { return new tools::freebsd::Linker(*this); } -llvm::ExceptionHandling FreeBSD::GetExceptionModel(const ArgList &Args) const { - // FreeBSD uses SjLj exceptions on ARM oabi. - switch (getTriple().getEnvironment()) { - case llvm::Triple::GNUEABIHF: - case llvm::Triple::GNUEABI: - case llvm::Triple::EABI: - return llvm::ExceptionHandling::None; - default: - if (getTriple().getArch() == llvm::Triple::arm || - getTriple().getArch() == llvm::Triple::thumb) - return llvm::ExceptionHandling::SjLj; - return llvm::ExceptionHandling::None; - } -} - bool FreeBSD::HasNativeLLVMSupport() const { return true; } ToolChain::UnwindTableLevel diff --git a/clang/lib/Driver/ToolChains/FreeBSD.h b/clang/lib/Driver/ToolChains/FreeBSD.h index 9b24ef1a1e1c..cec67d84a2ce 100644 --- a/clang/lib/Driver/ToolChains/FreeBSD.h +++ b/clang/lib/Driver/ToolChains/FreeBSD.h @@ -78,8 +78,6 @@ public: void AddHIPIncludeArgs(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override; - llvm::ExceptionHandling - GetExceptionModel(const llvm::opt::ArgList &Args) const override; UnwindTableLevel getDefaultUnwindTableLevel(const llvm::opt::ArgList &Args) const override; bool isPIEDefault(const llvm::opt::ArgList &Args) const override; diff --git a/clang/test/Driver/arm-abi.c b/clang/test/Driver/arm-abi.c index ba5c4ba148ce..548704965b24 100644 --- a/clang/test/Driver/arm-abi.c +++ b/clang/test/Driver/arm-abi.c @@ -28,7 +28,9 @@ // RUN: %clang -target arm--netbsd-eabihf %s -### -o %t.o 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK-AAPCS %s -// OpenBSD defaults to aapcs-linux +// FreeBSD / OpenBSD default to aapcs-linux +// RUN: %clang -target arm--freebsd- %s -### -o %t.o 2>&1 \ +// RUN: | FileCheck -check-prefix=CHECK-AAPCS-LINUX %s // RUN: %clang -target arm--openbsd- %s -### -o %t.o 2>&1 \ // RUN: | FileCheck -check-prefix=CHECK-AAPCS-LINUX %s diff --git a/clang/test/Driver/freebsd.c b/clang/test/Driver/freebsd.c index eedecde5ad5f..28a888fedf3f 100644 --- a/clang/test/Driver/freebsd.c +++ b/clang/test/Driver/freebsd.c @@ -146,9 +146,10 @@ // RUN: %clang -### %s --target=arm-unknown-freebsd10.0 -no-integrated-as 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-ARM %s -// CHECK-ARM: "-cc1"{{.*}}" "-exception-model=sjlj" -// CHECK-ARM: as{{.*}}" "-mfpu=softvfp"{{.*}}"-matpcs" -// CHECK-ARM-EABI-NOT: as{{.*}}" "-mfpu=vfp" +// CHECK-ARM-NOT: "-cc1"{{.*}}" "-exception-model=sjlj" +// CHECK-ARM: as{{.*}}" "-mfpu=softvfp"{{.*}}"-meabi=5" +// CHECK-ARM-NOT: as{{.*}}" "-mfpu=vfp" +// CHECK-ARM-NOT: as{{.*}}" "-matpcs" // RUN: %clang -### %s --target=arm-gnueabi-freebsd10.0 -no-integrated-as 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-ARM-EABI %s diff --git a/llvm/lib/TargetParser/ARMTargetParser.cpp b/llvm/lib/TargetParser/ARMTargetParser.cpp index af98ecb122d6..22b985df9302 100644 --- a/llvm/lib/TargetParser/ARMTargetParser.cpp +++ b/llvm/lib/TargetParser/ARMTargetParser.cpp @@ -523,7 +523,7 @@ StringRef ARM::computeDefaultTargetABI(const Triple &TT, StringRef CPU) { default: if (TT.isOSNetBSD()) return "apcs-gnu"; - if (TT.isOSOpenBSD()) + if (TT.isOSFreeBSD() || TT.isOSOpenBSD()) return "aapcs-linux"; return "aapcs"; } |