<rdar://problem/13374267>

Fixed error where objective C methods with selectors names starting with ".cxx_" where causing errors for ARC built binaries.

llvm-svn: 176683
This commit is contained in:
Greg Clayton 2013-03-08 02:42:06 +00:00
parent 503c83ad81
commit 1bbcc03455
3 changed files with 14 additions and 15 deletions

View File

@ -546,19 +546,21 @@ public:
lldb::clang_type_t class_opaque_type,
const char *name, // the full symbol name as seen in the symbol table ("-[NString stringWithCString:]")
lldb::clang_type_t method_opaque_type,
lldb::AccessType access);
lldb::AccessType access,
bool is_artificial);
clang::ObjCMethodDecl *
AddMethodToObjCObjectType (lldb::clang_type_t class_opaque_type,
const char *name, // the full symbol name as seen in the symbol table ("-[NString stringWithCString:]")
lldb::clang_type_t method_opaque_type,
lldb::AccessType access)
lldb::AccessType access,
bool is_artificial)
{
return AddMethodToObjCObjectType (getASTContext(),
class_opaque_type,
name,
method_opaque_type,
access);
access, is_artificial);
}
static bool

View File

@ -6332,7 +6332,8 @@ SymbolFileDWARF::ParseType (const SymbolContext& sc, DWARFCompileUnit* dwarf_cu,
clang::ObjCMethodDecl *objc_method_decl = ast.AddMethodToObjCObjectType (class_opaque_type,
type_name_cstr,
clang_type,
accessibility);
accessibility,
is_artificial);
type_handled = objc_method_decl != NULL;
if (type_handled)
{

View File

@ -2644,14 +2644,12 @@ ClangASTContext::ObjCDeclHasIVars (ObjCInterfaceDecl *class_interface_decl, bool
}
ObjCMethodDecl *
ClangASTContext::AddMethodToObjCObjectType
(
ASTContext *ast,
ClangASTContext::AddMethodToObjCObjectType (ASTContext *ast,
clang_type_t class_opaque_type,
const char *name, // the full symbol name as seen in the symbol table ("-[NString stringWithCString:]")
clang_type_t method_opaque_type,
lldb::AccessType access
)
lldb::AccessType access,
bool is_artificial)
{
if (class_opaque_type == NULL || method_opaque_type == NULL)
return NULL;
@ -2682,8 +2680,6 @@ ClangASTContext::AddMethodToObjCObjectType
return NULL;
selector_start++;
if (!(::isalpha (selector_start[0]) || selector_start[0] == '_'))
return NULL;
llvm::SmallVector<IdentifierInfo *, 12> selector_idents;
size_t len = 0;
@ -2745,7 +2741,7 @@ ClangASTContext::AddMethodToObjCObjectType
name[0] == '-',
is_variadic,
is_synthesized,
true, // is_implicitly_declared
is_artificial, // is_implicitly_declared
is_defined,
imp_control,
false /*has_related_result_type*/);