summaryrefslogtreecommitdiffstats
path: root/iwyu_ast_util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'iwyu_ast_util.cc')
-rw-r--r--iwyu_ast_util.cc11
1 files changed, 7 insertions, 4 deletions
diff --git a/iwyu_ast_util.cc b/iwyu_ast_util.cc
index 9982145..81906aa 100644
--- a/iwyu_ast_util.cc
+++ b/iwyu_ast_util.cc
@@ -1095,11 +1095,14 @@ bool DeclsAreInSameClass(const Decl* decl1, const Decl* decl2) {
return decl1->getDeclContext()->isRecord();
}
-bool IsBuiltinFunction(const clang::NamedDecl* decl,
- const std::string& symbol_name) {
+bool IsBuiltinFunction(const clang::NamedDecl* decl) {
if (const clang::IdentifierInfo* iden = decl->getIdentifier()) {
- return iden->getBuiltinID() != 0 &&
- !clang::Builtin::Context::isBuiltinFunc(symbol_name.c_str());
+ unsigned builtin_id = iden->getBuiltinID();
+ if (builtin_id != 0) {
+ const clang::Builtin::Context& ctx = decl->getASTContext().BuiltinInfo;
+ return !ctx.isPredefinedLibFunction(builtin_id) &&
+ !ctx.isHeaderDependentFunction(builtin_id);
+ }
}
return false;
}