diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -1271,6 +1271,8 @@ FunctionDecl *FD = FunctionDecl::Create( Ctx, Ctx.getTranslationUnitDecl(), SourceLocation(), SourceLocation(), II, FuncionTy, nullptr, SC_PrivateExtern, false, false); + // Avoid generating debug location info for the function. + FD->setImplicit(); StartFunction(FD, ReturnTy, Fn, FI, Args); diff --git a/clang/test/CodeGen/debug-info-oslog.c b/clang/test/CodeGen/debug-info-oslog.c new file mode 100644 --- /dev/null +++ b/clang/test/CodeGen/debug-info-oslog.c @@ -0,0 +1,15 @@ +// RUN: %clang_cc1 -triple x86_64-darwin-apple -debug-info-kind=limited \ +// RUN: %s -emit-llvm -o - | FileCheck %s +void test_builtin_os_log(void *buf, int i, const char *data) { + __builtin_os_log_format(buf, "%d", i); +} + +// CHECK: define linkonce_odr {{.*}}@__os_log_helper_1_0_1_4_0( +// CHECK-SAME: !dbg ![[OS_LOG_HELPER:[0-9]+]] + +// This helper is going to be uniqued, so it should not have a line +// number between file and type. + +// CHECK: distinct !DISubprogram(name: "__os_log_helper_1_0_1_4_0", +// CHECK-SAME: file: !{{[0-9+]}}, type +// CHECK-SAME: flags: DIFlagArtificial