diff options
Diffstat (limited to 'clang/lib/AST/ASTContext.cpp')
| -rw-r--r-- | clang/lib/AST/ASTContext.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index 5fa6704dbab..e3a6f4a86ff 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -6387,7 +6387,7 @@ bool ASTContext::DeclMustBeEmitted(const Decl *D) { if (const VarDecl *VD = dyn_cast<VarDecl>(D)) { if (!VD->isFileVarDecl()) return false; - } else if (!isa<FunctionDecl>(D)) + } else if (!isa<FunctionDecl>(D) && !isa<ObjCMethodDecl>(D)) return false; // Weak references don't produce any output by themselves. @@ -6428,6 +6428,9 @@ bool ASTContext::DeclMustBeEmitted(const Decl *D) { return true; } + if (const ObjCMethodDecl *Method = dyn_cast<ObjCMethodDecl>(D)) + return Method->hasBody(); + const VarDecl *VD = cast<VarDecl>(D); assert(VD->isFileVarDecl() && "Expected file scoped var"); |

