diff options
author | David Chisnall <csdavec@swan.ac.uk> | 2012-07-03 20:49:52 +0000 |
---|---|---|
committer | David Chisnall <csdavec@swan.ac.uk> | 2012-07-03 20:49:52 +0000 |
commit | 11d3f4cc27e6b923fc32481dc1bb5ec46c7d1f4b (patch) | |
tree | 555a41fbf7a33a4b636adedd17cfbacf1b3bfdc8 | |
parent | 1fc6e4fa79444b2a7be8a1150f646ffbde68b744 (diff) |
Rename the GCC Objective-C runtime to gcc from gnu-fragile and the GNUstep
runtime to gnustep from gnu. Fix EH for the GCC runtime.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@159684 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Basic/ObjCRuntime.h | 46 | ||||
-rw-r--r-- | lib/Basic/ObjCRuntime.cpp | 12 | ||||
-rw-r--r-- | lib/CodeGen/CGException.cpp | 11 | ||||
-rw-r--r-- | lib/CodeGen/CGObjCGNU.cpp | 4 | ||||
-rw-r--r-- | lib/CodeGen/CGObjCMac.cpp | 4 | ||||
-rw-r--r-- | lib/CodeGen/CodeGenModule.cpp | 6 | ||||
-rw-r--r-- | lib/Driver/ToolChain.cpp | 2 | ||||
-rw-r--r-- | lib/Driver/Tools.cpp | 2 | ||||
-rw-r--r-- | test/CodeGenObjC/bitfield-gnu.m | 2 | ||||
-rw-r--r-- | test/CodeGenObjC/bitfield_encoding.m | 2 | ||||
-rw-r--r-- | test/CodeGenObjC/constant-strings.m | 4 | ||||
-rw-r--r-- | test/CodeGenObjC/gnu-exceptions.m | 2 | ||||
-rw-r--r-- | test/CodeGenObjC/messages.m | 4 | ||||
-rw-r--r-- | test/CodeGenObjC/undefined-protocol.m | 2 | ||||
-rw-r--r-- | test/Coverage/codegen-gnu.m | 2 | ||||
-rw-r--r-- | test/Driver/gnu-runtime.m | 2 | ||||
-rw-r--r-- | test/Preprocessor/init.c | 4 | ||||
-rw-r--r-- | test/Preprocessor/non_fragile_feature1.m | 2 |
18 files changed, 63 insertions, 50 deletions
diff --git a/include/clang/Basic/ObjCRuntime.h b/include/clang/Basic/ObjCRuntime.h index 1be3b142c3..9212a8bf95 100644 --- a/include/clang/Basic/ObjCRuntime.h +++ b/include/clang/Basic/ObjCRuntime.h @@ -40,11 +40,12 @@ public: /// version of iOS. iOS, - /// 'gnu' is the non-fragile GNU runtime. - GNU, + /// 'gcc' is the Objective-C runtime shipped with GCC, implementing a + /// fragile Objective-C ABI + GCC, - /// 'gnu-fragile' is the fragile GNU runtime. - FragileGNU + /// 'gnustep' is the modern non-fragile GNUstep runtime. + GNUstep }; private: @@ -71,9 +72,9 @@ public: bool isNonFragile() const { switch (getKind()) { case FragileMacOSX: return false; - case FragileGNU: return false; + case GCC: return false; case MacOSX: return true; - case GNU: return true; + case GNUstep: return true; case iOS: return true; } llvm_unreachable("bad kind"); @@ -83,15 +84,15 @@ public: /// implied behaviors for a "fragile" ABI? bool isFragile() const { return !isNonFragile(); } - /// \brief Is this runtime basically of the GNU family of runtimes? + /// \brief Is this runtime basically of the GNUstep family of runtimes? bool isGNUFamily() const { switch (getKind()) { case FragileMacOSX: case MacOSX: case iOS: return false; - case FragileGNU: - case GNU: + case GCC: + case GNUstep: return true; } llvm_unreachable("bad kind"); @@ -118,8 +119,8 @@ public: // This is really a lie, because some implementations and versions // of the runtime do not support ARC. Probably -fgnu-runtime // should imply a "maximal" runtime or something? - case FragileGNU: return true; - case GNU: return true; + case GCC: return true; + case GNUstep: return true; } llvm_unreachable("bad kind"); } @@ -143,8 +144,8 @@ public: // This is really a lie, because some implementations and versions // of the runtime do not support ARC. Probably -fgnu-runtime // should imply a "maximal" runtime or something? - case FragileGNU: return true; - case GNU: return true; + case GCC: return true; + case GNUstep: return true; } llvm_unreachable("bad kind"); } @@ -158,8 +159,8 @@ public: case FragileMacOSX: return getVersion() >= VersionTuple(10, 8); case MacOSX: return getVersion() >= VersionTuple(10, 8); case iOS: return getVersion() >= VersionTuple(5); - case FragileGNU: return false; - case GNU: return false; + case GCC: return false; + case GNUstep: return false; } llvm_unreachable("bad kind"); } @@ -170,8 +171,19 @@ public: case MacOSX: return true; case iOS: return true; case FragileMacOSX: return false; - case FragileGNU: return false; - case GNU: return false; + case GCC: return true; + case GNUstep: return true; + } + llvm_unreachable("bad kind"); + } + /// \brief Does this runtime use zero-cost exceptions? + bool hasUnwindExceptions() const { + switch (getKind()) { + case MacOSX: return true; + case iOS: return true; + case FragileMacOSX: return false; + case GCC: return true; + case GNUstep: return true; } llvm_unreachable("bad kind"); } diff --git a/lib/Basic/ObjCRuntime.cpp b/lib/Basic/ObjCRuntime.cpp index d66da0706f..0f30bfaa2c 100644 --- a/lib/Basic/ObjCRuntime.cpp +++ b/lib/Basic/ObjCRuntime.cpp @@ -30,8 +30,8 @@ raw_ostream &clang::operator<<(raw_ostream &out, const ObjCRuntime &value) { case ObjCRuntime::MacOSX: out << "macosx"; break; case ObjCRuntime::FragileMacOSX: out << "macosx-fragile"; break; case ObjCRuntime::iOS: out << "ios"; break; - case ObjCRuntime::GNU: out << "gnu"; break; - case ObjCRuntime::FragileGNU: out << "gnu-fragile"; break; + case ObjCRuntime::GNUstep: out << "gnustep"; break; + case ObjCRuntime::GCC: out << "gcc"; break; } if (value.getVersion() > VersionTuple(0)) { out << '-' << value.getVersion(); @@ -60,10 +60,10 @@ bool ObjCRuntime::tryParse(StringRef input) { kind = ObjCRuntime::FragileMacOSX; } else if (runtimeName == "ios") { kind = ObjCRuntime::iOS; - } else if (runtimeName == "gnu") { - kind = ObjCRuntime::GNU; - } else if (runtimeName == "gnu-fragile") { - kind = ObjCRuntime::FragileGNU; + } else if (runtimeName == "gnustep") { + kind = ObjCRuntime::GNUstep; + } else if (runtimeName == "gcc") { + kind = ObjCRuntime::GCC; } else { return true; } diff --git a/lib/CodeGen/CGException.cpp b/lib/CodeGen/CGException.cpp index fb36715364..2fdc74ce6d 100644 --- a/lib/CodeGen/CGException.cpp +++ b/lib/CodeGen/CGException.cpp @@ -186,8 +186,8 @@ static const EHPersonality &getObjCPersonality(const LangOptions &L) { case ObjCRuntime::MacOSX: case ObjCRuntime::iOS: return EHPersonality::NeXT_ObjC; - case ObjCRuntime::GNU: - case ObjCRuntime::FragileGNU: + case ObjCRuntime::GNUstep: + case ObjCRuntime::GCC: return EHPersonality::GNU_ObjC; } llvm_unreachable("bad runtime kind"); @@ -216,10 +216,11 @@ static const EHPersonality &getObjCXXPersonality(const LangOptions &L) { case ObjCRuntime::FragileMacOSX: return getCXXPersonality(L); - // The GNU runtime's personality function inherently doesn't support + // The GCC runtime's personality function inherently doesn't support // mixed EH. Use the C++ personality just to avoid returning null. - case ObjCRuntime::GNU: - case ObjCRuntime::FragileGNU: + case ObjCRuntime::GCC: + return EHPersonality::GNU_ObjC; + case ObjCRuntime::GNUstep: return EHPersonality::GNU_ObjCXX; } llvm_unreachable("bad runtime kind"); diff --git a/lib/CodeGen/CGObjCGNU.cpp b/lib/CodeGen/CGObjCGNU.cpp index a949436e85..686fb051b7 100644 --- a/lib/CodeGen/CGObjCGNU.cpp +++ b/lib/CodeGen/CGObjCGNU.cpp @@ -2666,10 +2666,10 @@ llvm::Value *CGObjCGNU::EmitIvarOffset(CodeGenFunction &CGF, CGObjCRuntime * clang::CodeGen::CreateGNUObjCRuntime(CodeGenModule &CGM) { switch (CGM.getLangOpts().ObjCRuntime.getKind()) { - case ObjCRuntime::GNU: + case ObjCRuntime::GNUstep: return new CGObjCGNUstep(CGM); - case ObjCRuntime::FragileGNU: + case ObjCRuntime::GCC: return new CGObjCGCC(CGM); case ObjCRuntime::FragileMacOSX: diff --git a/lib/CodeGen/CGObjCMac.cpp b/lib/CodeGen/CGObjCMac.cpp index 3eb5d5291d..3b7c238a8d 100644 --- a/lib/CodeGen/CGObjCMac.cpp +++ b/lib/CodeGen/CGObjCMac.cpp @@ -6389,8 +6389,8 @@ CodeGen::CreateMacObjCRuntime(CodeGen::CodeGenModule &CGM) { case ObjCRuntime::iOS: return new CGObjCNonFragileABIMac(CGM); - case ObjCRuntime::GNU: - case ObjCRuntime::FragileGNU: + case ObjCRuntime::GNUstep: + case ObjCRuntime::GCC: llvm_unreachable("these runtimes are not Mac runtimes"); } llvm_unreachable("bad runtime"); diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp index ef20cf4556..bba3e7c5f7 100644 --- a/lib/CodeGen/CodeGenModule.cpp +++ b/lib/CodeGen/CodeGenModule.cpp @@ -138,8 +138,8 @@ void CodeGenModule::createObjCRuntime() { // This is just isGNUFamily(), but we want to force implementors of // new ABIs to decide how best to do this. switch (LangOpts.ObjCRuntime.getKind()) { - case ObjCRuntime::GNU: - case ObjCRuntime::FragileGNU: + case ObjCRuntime::GNUstep: + case ObjCRuntime::GCC: ObjCRuntime = CreateGNUObjCRuntime(*this); return; @@ -546,7 +546,7 @@ static bool hasUnwindExceptions(const LangOptions &LangOpts) { // If ObjC exceptions are enabled, this depends on the ABI. if (LangOpts.ObjCExceptions) { - if (LangOpts.ObjCRuntime.isFragile()) return false; + return LangOpts.ObjCRuntime.hasUnwindExceptions(); } return true; diff --git a/lib/Driver/ToolChain.cpp b/lib/Driver/ToolChain.cpp index 21aefb6439..48ed044c8f 100644 --- a/lib/Driver/ToolChain.cpp +++ b/lib/Driver/ToolChain.cpp @@ -50,7 +50,7 @@ bool ToolChain::HasNativeLLVMSupport() const { } ObjCRuntime ToolChain::getDefaultObjCRuntime(bool isNonFragile) const { - return ObjCRuntime(isNonFragile ? ObjCRuntime::GNU : ObjCRuntime::FragileGNU, + return ObjCRuntime(isNonFragile ? ObjCRuntime::GNUstep : ObjCRuntime::GCC, VersionTuple()); } diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 601ea54c29..01792ae11f 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -2934,7 +2934,7 @@ ObjCRuntime Clang::AddObjCRuntimeArgs(const ArgList &args, // -fgnu-runtime } else { assert(runtimeArg->getOption().matches(options::OPT_fgnu_runtime)); - runtime = ObjCRuntime(ObjCRuntime::GNU, VersionTuple()); + runtime = ObjCRuntime(ObjCRuntime::GCC, VersionTuple()); } cmdArgs.push_back(args.MakeArgString( diff --git a/test/CodeGenObjC/bitfield-gnu.m b/test/CodeGenObjC/bitfield-gnu.m index 19c5cc4a08..383907f15c 100644 --- a/test/CodeGenObjC/bitfield-gnu.m +++ b/test/CodeGenObjC/bitfield-gnu.m @@ -1,4 +1,4 @@ -// RUN: %clang -S -emit-llvm -fobjc-runtime=gnu -o %t %s +// RUN: %clang -S -emit-llvm -fobjc-runtime=gcc -o %t %s typedef enum { A1, A2 } A; typedef struct { A a : 1; } B; @interface Obj { B *b; } @end diff --git a/test/CodeGenObjC/bitfield_encoding.m b/test/CodeGenObjC/bitfield_encoding.m index 0f26bcfdaf..1a516aaf86 100644 --- a/test/CodeGenObjC/bitfield_encoding.m +++ b/test/CodeGenObjC/bitfield_encoding.m @@ -1,6 +1,6 @@ // RUN: %clang_cc1 -triple i386-unknown-unknown -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o %t %s // RUN: grep "ib1b14" %t | count 1 -// RUN: %clang_cc1 -triple i386-unknown-unknown -fobjc-runtime=macosx-fragile-10.5 -fobjc-runtime=gnu -emit-llvm -o %t %s +// RUN: %clang_cc1 -triple i386-unknown-unknown -fobjc-runtime=macosx-fragile-10.5 -fobjc-runtime=gcc -emit-llvm -o %t %s // RUN: grep "ib32i1b33i14" %t | count 1 struct foo{ diff --git a/test/CodeGenObjC/constant-strings.m b/test/CodeGenObjC/constant-strings.m index 7d7f2408c6..cad634a4b1 100644 --- a/test/CodeGenObjC/constant-strings.m +++ b/test/CodeGenObjC/constant-strings.m @@ -5,11 +5,11 @@ // // CHECK-NEXT: @.str = {{.*}}constant [13 x i8] c"Hello World!\00", align 1 -// RUN: %clang_cc1 -fobjc-runtime=gnu -emit-llvm -o %t %s +// RUN: %clang_cc1 -fobjc-runtime=gcc -emit-llvm -o %t %s // RUN: FileCheck --check-prefix=CHECK-GNU < %t %s // CHECK-GNU: NXConstantString -// RUN: %clang_cc1 -fobjc-runtime=gnu -fconstant-string-class NSConstantString -emit-llvm -o %t %s +// RUN: %clang_cc1 -fobjc-runtime=gcc -fconstant-string-class NSConstantString -emit-llvm -o %t %s // RUN: FileCheck --check-prefix=CHECK-GNU-WITH-CLASS < %t %s // CHECK-GNU-WITH-CLASS: NSConstantString id a = @"Hello World!"; diff --git a/test/CodeGenObjC/gnu-exceptions.m b/test/CodeGenObjC/gnu-exceptions.m index 0d8f7e67ed..141747ec8d 100644 --- a/test/CodeGenObjC/gnu-exceptions.m +++ b/test/CodeGenObjC/gnu-exceptions.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -fexceptions -fobjc-exceptions -fobjc-runtime=gnu -o - %s | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-pc-linux-gnu -emit-llvm -fexceptions -fobjc-exceptions -fobjc-runtime=gcc -o - %s | FileCheck %s void opaque(void); void log(int i); diff --git a/test/CodeGenObjC/messages.m b/test/CodeGenObjC/messages.m index 2dadec406c..a42677ef78 100644 --- a/test/CodeGenObjC/messages.m +++ b/test/CodeGenObjC/messages.m @@ -1,7 +1,7 @@ // RUN: %clang_cc1 -fobjc-runtime=macosx-fragile-10.5 -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK-MAC // RUN: %clang_cc1 -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK-MAC-NF -// RUN: %clang_cc1 -fobjc-runtime=gnu-fragile -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK-GNU -// RUN: %clang_cc1 -fobjc-runtime=gnu -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK-GNU-NF +// RUN: %clang_cc1 -fobjc-runtime=gcc -emit-llvm -o - %s | FileCheck %s -check-prefix=CHECK-GNU +// RUN: %clang_cc1 -fobjc-runtime=gnustep -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK-GNU-NF typedef struct { int x; diff --git a/test/CodeGenObjC/undefined-protocol.m b/test/CodeGenObjC/undefined-protocol.m index d998a66242..e5a72ab602 100644 --- a/test/CodeGenObjC/undefined-protocol.m +++ b/test/CodeGenObjC/undefined-protocol.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -emit-llvm-only -fobjc-runtime=gnu %s +// RUN: %clang_cc1 -emit-llvm-only -fobjc-runtime=gcc %s @protocol MadeUpProtocol; diff --git a/test/Coverage/codegen-gnu.m b/test/Coverage/codegen-gnu.m index 540821388d..67f99064a6 100644 --- a/test/Coverage/codegen-gnu.m +++ b/test/Coverage/codegen-gnu.m @@ -1,3 +1,3 @@ -// RUN: %clang_cc1 -triple i386-unknown-unknown -fobjc-exceptions -fobjc-runtime=gnu -emit-llvm -o %t %s +// RUN: %clang_cc1 -triple i386-unknown-unknown -fobjc-exceptions -fobjc-runtime=gcc -emit-llvm -o %t %s #include "objc-language-features.inc" diff --git a/test/Driver/gnu-runtime.m b/test/Driver/gnu-runtime.m index 7685cc6f67..1d7a40ab2b 100644 --- a/test/Driver/gnu-runtime.m +++ b/test/Driver/gnu-runtime.m @@ -1,4 +1,4 @@ // RUN: %clang -target i386-apple-darwin10 -### -fsyntax-only -fgnu-runtime %s 2>&1 | FileCheck %s // RUN: %clang -target i386-apple-darwin10 -### -x objective-c++ -fsyntax-only -fgnu-runtime %s 2>&1 | FileCheck %s -// CHECK: -fobjc-runtime=gnu +// CHECK: -fobjc-runtime=gcc // CHECK-NOT: fragile diff --git a/test/Preprocessor/init.c b/test/Preprocessor/init.c index 8e08e239f1..9694aad3f3 100644 --- a/test/Preprocessor/init.c +++ b/test/Preprocessor/init.c @@ -85,7 +85,7 @@ // C94:#define __STDC_VERSION__ 199409L // // -// RUN: %clang_cc1 -fms-extensions -triple i686-pc-win32 -fobjc-runtime=gnu-fragile -E -dM < /dev/null | FileCheck -check-prefix MSEXT %s +// RUN: %clang_cc1 -fms-extensions -triple i686-pc-win32 -fobjc-runtime=gcc -E -dM < /dev/null | FileCheck -check-prefix MSEXT %s // // MSEXT-NOT:#define __STDC__ // MSEXT:#define _INTEGRAL_MAX_BITS 64 @@ -1872,7 +1872,7 @@ // X86_64-LINUX:#define __x86_64 1 // X86_64-LINUX:#define __x86_64__ 1 // -// RUN: %clang_cc1 -x c++ -triple i686-pc-linux-gnu -fobjc-runtime=gnu-fragile -E -dM < /dev/null | FileCheck -check-prefix GNUSOURCE %s +// RUN: %clang_cc1 -x c++ -triple i686-pc-linux-gnu -fobjc-runtime=gcc -E -dM < /dev/null | FileCheck -check-prefix GNUSOURCE %s // GNUSOURCE:#define _GNU_SOURCE 1 // // RUN: %clang_cc1 -x c++ -std=c++98 -fno-rtti -E -dM < /dev/null | FileCheck -check-prefix NORTTI %s diff --git a/test/Preprocessor/non_fragile_feature1.m b/test/Preprocessor/non_fragile_feature1.m index 7bd6a941ba..6ea7fa8b6c 100644 --- a/test/Preprocessor/non_fragile_feature1.m +++ b/test/Preprocessor/non_fragile_feature1.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -triple i386-unknown-unknown -fobjc-runtime=gnu-fragile %s +// RUN: %clang_cc1 -triple i386-unknown-unknown -fobjc-runtime=gcc %s #ifndef __has_feature #error Should have __has_feature #endif |