From 246ff3f19f1ea114156e39a5125b9d01099f5510 Mon Sep 17 00:00:00 2001 From: Anders Carlsson Date: Mon, 28 Feb 2011 00:44:51 +0000 Subject: [PATCH] Factor code out into a helper function, shouldUseExceptionTablesForObjCExceptions. llvm-svn: 126601 --- clang/lib/Driver/Tools.cpp | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 9f4a0bc162e3..ef869f1ecf23 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/lib/Driver/Tools.cpp @@ -762,6 +762,24 @@ void Clang::AddX86TargetArgs(const ArgList &Args, } } +static bool +shouldUseExceptionTablesForObjCExceptions(const ArgList &Args, + const llvm::Triple &Triple) { + // We use the zero-cost exception tables for Objective-C if the non-fragile + // ABI is enabled or when compiling for x86_64 and ARM on Snow Leopard and + // later. + + if (Args.hasArg(options::OPT_fobjc_nonfragile_abi)) + return true; + + if (Triple.getOS() != llvm::Triple::Darwin) + return false; + + return (Triple.getDarwinMajorNumber() >= 9 && + (Triple.getArch() == llvm::Triple::x86_64 || + Triple.getArch() == llvm::Triple::arm)); +} + static bool needsExceptions(const ArgList &Args, types::ID InputType, const llvm::Triple &Triple) { // Handle -fno-exceptions. @@ -777,17 +795,8 @@ static bool needsExceptions(const ArgList &Args, types::ID InputType, if (types::isCXX(InputType)) return true; - // As do Objective-C non-fragile ABI inputs and all Objective-C inputs on - // x86_64 and ARM after SnowLeopard. - if (types::isObjC(InputType)) { - if (Args.hasArg(options::OPT_fobjc_nonfragile_abi)) - return true; - if (Triple.getOS() != llvm::Triple::Darwin) - return false; - return (Triple.getDarwinMajorNumber() >= 9 && - (Triple.getArch() == llvm::Triple::x86_64 || - Triple.getArch() == llvm::Triple::arm)); - } + if (types::isObjC(InputType)) + return shouldUseExceptionTablesForObjCExceptions(Args, Triple); return false; }