Skip to content

Commit

Permalink
Remove llvm::Triple argument from get***Personality() functions. NFC.
Browse files Browse the repository at this point in the history
Summary:
Because `llvm::Triple` can be derived from `TargetInfo`, it is simpler
to take only `TargetInfo` argument.

Reviewers: sbc100

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D47620

llvm-svn: 333938
  • Loading branch information
aheejin committed Jun 4, 2018
1 parent 4539487 commit 0083179
Showing 1 changed file with 18 additions and 17 deletions.
35 changes: 18 additions & 17 deletions clang/lib/CodeGen/CGException.cpp
Expand Up @@ -114,8 +114,9 @@ EHPersonality::MSVC_CxxFrameHandler3 = { "__CxxFrameHandler3", nullptr };
const EHPersonality
EHPersonality::GNU_Wasm_CPlusPlus = { "__gxx_wasm_personality_v0", nullptr };

static const EHPersonality &getCPersonality(const llvm::Triple &T,
static const EHPersonality &getCPersonality(const TargetInfo &Target,
const LangOptions &L) {
const llvm::Triple &T = Target.getTriple();
if (L.SjLjExceptions)
return EHPersonality::GNU_C_SJLJ;
if (L.DWARFExceptions)
Expand All @@ -127,11 +128,12 @@ static const EHPersonality &getCPersonality(const llvm::Triple &T,
return EHPersonality::GNU_C;
}

static const EHPersonality &getObjCPersonality(const llvm::Triple &T,
static const EHPersonality &getObjCPersonality(const TargetInfo &Target,
const LangOptions &L) {
const llvm::Triple &T = Target.getTriple();
switch (L.ObjCRuntime.getKind()) {
case ObjCRuntime::FragileMacOSX:
return getCPersonality(T, L);
return getCPersonality(Target, L);
case ObjCRuntime::MacOSX:
case ObjCRuntime::iOS:
case ObjCRuntime::WatchOS:
Expand All @@ -153,9 +155,9 @@ static const EHPersonality &getObjCPersonality(const llvm::Triple &T,
llvm_unreachable("bad runtime kind");
}

static const EHPersonality &getCXXPersonality(const llvm::Triple &T,
const LangOptions &L,
const TargetInfo &Target) {
static const EHPersonality &getCXXPersonality(const TargetInfo &Target,
const LangOptions &L) {
const llvm::Triple &T = Target.getTriple();
if (L.SjLjExceptions)
return EHPersonality::GNU_CPlusPlus_SJLJ;
if (L.DWARFExceptions)
Expand All @@ -174,22 +176,21 @@ static const EHPersonality &getCXXPersonality(const llvm::Triple &T,

/// Determines the personality function to use when both C++
/// and Objective-C exceptions are being caught.
static const EHPersonality &getObjCXXPersonality(const llvm::Triple &T,
const LangOptions &L,
const TargetInfo &Target) {
static const EHPersonality &getObjCXXPersonality(const TargetInfo &Target,
const LangOptions &L) {
switch (L.ObjCRuntime.getKind()) {
// In the fragile ABI, just use C++ exception handling and hope
// they're not doing crazy exception mixing.
case ObjCRuntime::FragileMacOSX:
return getCXXPersonality(T, L, Target);
return getCXXPersonality(Target, L);

// The ObjC personality defers to the C++ personality for non-ObjC
// handlers. Unlike the C++ case, we use the same personality
// function on targets using (backend-driven) SJLJ EH.
case ObjCRuntime::MacOSX:
case ObjCRuntime::iOS:
case ObjCRuntime::WatchOS:
return getObjCPersonality(T, L);
return getObjCPersonality(Target, L);

case ObjCRuntime::GNUstep:
return EHPersonality::GNU_ObjCXX;
Expand All @@ -198,7 +199,7 @@ static const EHPersonality &getObjCXXPersonality(const llvm::Triple &T,
// mixed EH. Use the ObjC personality just to avoid returning null.
case ObjCRuntime::GCC:
case ObjCRuntime::ObjFW:
return getObjCPersonality(T, L);
return getObjCPersonality(Target, L);
}
llvm_unreachable("bad runtime kind");
}
Expand All @@ -220,9 +221,10 @@ const EHPersonality &EHPersonality::get(CodeGenModule &CGM,
return getSEHPersonalityMSVC(T);

if (L.ObjC1)
return L.CPlusPlus ? getObjCXXPersonality(T, L, Target)
: getObjCPersonality(T, L);
return L.CPlusPlus ? getCXXPersonality(T, L, Target) : getCPersonality(T, L);
return L.CPlusPlus ? getObjCXXPersonality(Target, L)
: getObjCPersonality(Target, L);
return L.CPlusPlus ? getCXXPersonality(Target, L)
: getCPersonality(Target, L);
}

const EHPersonality &EHPersonality::get(CodeGenFunction &CGF) {
Expand Down Expand Up @@ -318,8 +320,7 @@ void CodeGenModule::SimplifyPersonality() {
return;

const EHPersonality &ObjCXX = EHPersonality::get(*this, /*FD=*/nullptr);
const EHPersonality &CXX =
getCXXPersonality(getTarget().getTriple(), LangOpts, getTarget());
const EHPersonality &CXX = getCXXPersonality(getTarget(), LangOpts);
if (&ObjCXX == &CXX)
return;

Expand Down

0 comments on commit 0083179

Please sign in to comment.