MaskRay created this revision. MaskRay added reviewers: joerg, psmith, resistor. Herald added subscribers: cfe-commits, danielkiss, mstorsjo, kristof.beyls, krytarowski, arichardson, emaste. Herald added a project: clang. MaskRay requested review of this revision.
In GCC, `aarch64-*-linux` and `aarch64-*-freebsd` made the switch in 2018 (https://gcc.gnu.org/pipermail/gcc-patches/2018-March/495549.html). In Clang, FreeBSD/Fuchsia/NetBSD/MinGW aarch64 default to -fasynchronous-unwind-tables. This patch defaults Generic_GCC aarch64 (which affects Linux) to use -fasynchronous-unwind-tables. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D91760 Files: clang/lib/Driver/ToolChains/Gnu.cpp clang/test/Driver/aarch64-features.c Index: clang/test/Driver/aarch64-features.c =================================================================== --- clang/test/Driver/aarch64-features.c +++ clang/test/Driver/aarch64-features.c @@ -1,6 +1,8 @@ // RUN: %clang -target aarch64-none-linux-gnu -### %s -fsyntax-only 2>&1 | FileCheck %s // RUN: %clang -target arm64-none-linux-gnu -### %s -fsyntax-only 2>&1 | FileCheck %s +// CHECK: "-munwind-tables" + // The AArch64 PCS states that chars should be unsigned. // CHECK: fno-signed-char Index: clang/lib/Driver/ToolChains/Gnu.cpp =================================================================== --- clang/lib/Driver/ToolChains/Gnu.cpp +++ clang/lib/Driver/ToolChains/Gnu.cpp @@ -2672,7 +2672,14 @@ } bool Generic_GCC::IsUnwindTablesDefault(const ArgList &Args) const { - return getArch() == llvm::Triple::x86_64; + switch (getArch()) { + case llvm::Triple::aarch64: + return !getTriple().isOSNetBSD(); + case llvm::Triple::x86_64: + return true; + default: + return false; + } } bool Generic_GCC::isPICDefault() const {
Index: clang/test/Driver/aarch64-features.c =================================================================== --- clang/test/Driver/aarch64-features.c +++ clang/test/Driver/aarch64-features.c @@ -1,6 +1,8 @@ // RUN: %clang -target aarch64-none-linux-gnu -### %s -fsyntax-only 2>&1 | FileCheck %s // RUN: %clang -target arm64-none-linux-gnu -### %s -fsyntax-only 2>&1 | FileCheck %s +// CHECK: "-munwind-tables" + // The AArch64 PCS states that chars should be unsigned. // CHECK: fno-signed-char Index: clang/lib/Driver/ToolChains/Gnu.cpp =================================================================== --- clang/lib/Driver/ToolChains/Gnu.cpp +++ clang/lib/Driver/ToolChains/Gnu.cpp @@ -2672,7 +2672,14 @@ } bool Generic_GCC::IsUnwindTablesDefault(const ArgList &Args) const { - return getArch() == llvm::Triple::x86_64; + switch (getArch()) { + case llvm::Triple::aarch64: + return !getTriple().isOSNetBSD(); + case llvm::Triple::x86_64: + return true; + default: + return false; + } } bool Generic_GCC::isPICDefault() const {
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits