зеркало из https://github.com/microsoft/clang-1.git
The ObjC++-to-C++ personality trick is only necessary on NeXT runtimes,
which is not coincidentally the only place it works, either (because of how it tests for EH_TYPE symbols). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167935 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
7d4b9fabf3
Коммит
70cd619e74
|
@ -307,14 +307,15 @@ static bool PersonalityHasOnlyCXXUses(llvm::Constant *Fn) {
|
|||
/// aggressive about only using the ObjC++ personality in a function
|
||||
/// when it really needs it.
|
||||
void CodeGenModule::SimplifyPersonality() {
|
||||
// For now, this is really a Darwin-specific operation.
|
||||
if (!Context.getTargetInfo().getTriple().isOSDarwin())
|
||||
return;
|
||||
|
||||
// If we're not in ObjC++ -fexceptions, there's nothing to do.
|
||||
if (!LangOpts.CPlusPlus || !LangOpts.ObjC1 || !LangOpts.Exceptions)
|
||||
return;
|
||||
|
||||
// Both the problem this endeavors to fix and the way the logic
|
||||
// above works is specific to the NeXT runtime.
|
||||
if (!LangOpts.ObjCRuntime.isNeXTFamily())
|
||||
return;
|
||||
|
||||
const EHPersonality &ObjCXX = EHPersonality::get(LangOpts);
|
||||
const EHPersonality &CXX = getCXXPersonality(LangOpts);
|
||||
if (&ObjCXX == &CXX)
|
||||
|
|
Загрузка…
Ссылка в новой задаче