https://github.com/sarnex created https://github.com/llvm/llvm-project/pull/138205
Running CI >From c66ec11d8170a0e4c0b2fc50bdae039fd9c208fb Mon Sep 17 00:00:00 2001 From: "Sarnie, Nick" <nick.sar...@intel.com> Date: Thu, 1 May 2025 14:47:45 -0700 Subject: [PATCH] [clang][Sema] Don't warn for implicit uses of builtins in system headers Signed-off-by: Sarnie, Nick <nick.sar...@intel.com> --- clang/lib/Sema/SemaDecl.cpp | 7 ++++++- clang/test/Sema/Inputs/builtin-system-header.h | 1 + clang/test/Sema/builtin-system-header.c | 8 ++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 clang/test/Sema/Inputs/builtin-system-header.h create mode 100644 clang/test/Sema/builtin-system-header.c diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index a3285e8f6f5a2..37008f9eb3235 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -2376,9 +2376,14 @@ NamedDecl *Sema::LazilyCreateBuiltin(IdentifierInfo *II, unsigned ID, return nullptr; } + // Warn for implicit uses of header dependent libraries, + // except in system headers. if (!ForRedeclaration && (Context.BuiltinInfo.isPredefinedLibFunction(ID) || - Context.BuiltinInfo.isHeaderDependentFunction(ID))) { + Context.BuiltinInfo.isHeaderDependentFunction(ID)) && + (!getDiagnostics().getSuppressSystemWarnings() || + !Context.getSourceManager().isInSystemHeader( + Context.getSourceManager().getSpellingLoc(Loc)))) { Diag(Loc, LangOpts.C99 ? diag::ext_implicit_lib_function_decl_c99 : diag::ext_implicit_lib_function_decl) << Context.BuiltinInfo.getName(ID) << R; diff --git a/clang/test/Sema/Inputs/builtin-system-header.h b/clang/test/Sema/Inputs/builtin-system-header.h new file mode 100644 index 0000000000000..ebd5655e6f8ef --- /dev/null +++ b/clang/test/Sema/Inputs/builtin-system-header.h @@ -0,0 +1 @@ +#define MACRO(x,y) _InterlockedOr64(x,y); diff --git a/clang/test/Sema/builtin-system-header.c b/clang/test/Sema/builtin-system-header.c new file mode 100644 index 0000000000000..83c3c15e314a7 --- /dev/null +++ b/clang/test/Sema/builtin-system-header.c @@ -0,0 +1,8 @@ +// RUN: %clang_cc1 -fms-extensions -fsyntax-only -verify -triple arm64-windows -isystem %S/Inputs %s + +// expected-no-diagnostics +#include <builtin-system-header.h> + +void foo() { + MACRO(0,0); +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits