diff options
author | Sean Callanan <scallanan@apple.com> | 2011-01-17 23:42:46 +0000 |
---|---|---|
committer | Sean Callanan <scallanan@apple.com> | 2011-01-17 23:42:46 +0000 |
commit | c3a160062d5671ae7c1a3e19e09f0814ffed7352 (patch) | |
tree | 2beb7a04e297269b7167bb7644e381e5078fa65b /lldb/source/Expression/ClangExpressionParser.cpp | |
parent | 5caed4e8a878a07b25d13ed355e7d049bbbe4ec4 (diff) | |
download | bcm5719-llvm-c3a160062d5671ae7c1a3e19e09f0814ffed7352.tar.gz bcm5719-llvm-c3a160062d5671ae7c1a3e19e09f0814ffed7352.zip |
Added support for the fragile ivars provided by
Apple's Objective-C 2.0 runtime. They are enabled
if the Objective-C runtime has the proper version.
llvm-svn: 123694
Diffstat (limited to 'lldb/source/Expression/ClangExpressionParser.cpp')
-rw-r--r-- | lldb/source/Expression/ClangExpressionParser.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/lldb/source/Expression/ClangExpressionParser.cpp b/lldb/source/Expression/ClangExpressionParser.cpp index 77fff8a183f..adc5a9ecb7e 100644 --- a/lldb/source/Expression/ClangExpressionParser.cpp +++ b/lldb/source/Expression/ClangExpressionParser.cpp @@ -21,6 +21,7 @@ #include "lldb/Expression/IRToDWARF.h" #include "lldb/Expression/RecordingMemoryManager.h" #include "lldb/Target/ExecutionContext.h" +#include "lldb/Target/ObjCLanguageRuntime.h" #include "lldb/Target/Process.h" #include "lldb/Target/Target.h" @@ -177,6 +178,7 @@ static FrontendAction *CreateFrontendAction(CompilerInstance &CI) { //===----------------------------------------------------------------------===// ClangExpressionParser::ClangExpressionParser(const char *target_triple, + Process *process, ClangExpression &expr) : m_expr(expr), m_target_triple (), @@ -211,10 +213,18 @@ ClangExpressionParser::ClangExpressionParser(const char *target_triple, // Setup objective C m_compiler->getLangOpts().ObjC1 = true; m_compiler->getLangOpts().ObjC2 = true; - // We need to enable the fragile ABI for things target triples that - // support it. -// m_compiler->getLangOpts().ObjCNonFragileABI = true; // NOT i386 -// m_compiler->getLangOpts().ObjCNonFragileABI2 = true; // NOT i386 + + if (process) + { + if (process->GetObjCLanguageRuntime()) + { + if (process->GetObjCLanguageRuntime()->GetRuntimeVersion() == lldb::eAppleObjC_V2) + { + m_compiler->getLangOpts().ObjCNonFragileABI = true; // NOT i386 + m_compiler->getLangOpts().ObjCNonFragileABI2 = true; // NOT i386 + } + } + } m_compiler->getLangOpts().ThreadsafeStatics = false; m_compiler->getLangOpts().AccessControl = false; // Debuggers get universal access |