https://github.com/Xazax-hun created https://github.com/llvm/llvm-project/pull/115482
Lifetimebound annotations can help diagnose common cases of dangling including escaping the address of a stack variable from a function. This is useful in all C family languages, restricting these diagnostics to C++ is an artificial limitation. From 92a177c3034c81733d006a2b2c6a5127550566d5 Mon Sep 17 00:00:00 2001 From: Gabor Horvath <gab...@apple.com> Date: Fri, 8 Nov 2024 13:00:22 +0000 Subject: [PATCH] [clang] Permit lifetimebound in all language modes Lifetimebound annotations can help diagnose common cases of dangling including escaping the address of a stack variable from a function. This is useful in all C family languages, restricting these diagnostics to C++ is an artificial limitation. --- clang/include/clang/Basic/Attr.td | 1 - clang/test/Sema/attr-lifetimebound.c | 8 ++++++++ 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 clang/test/Sema/attr-lifetimebound.c diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td index 24cfb5ddb6d4ca..a631e81d40aa68 100644 --- a/clang/include/clang/Basic/Attr.td +++ b/clang/include/clang/Basic/Attr.td @@ -1886,7 +1886,6 @@ def LifetimeBound : DeclOrTypeAttr { let Spellings = [Clang<"lifetimebound", 0>]; let Subjects = SubjectList<[ParmVar, ImplicitObjectParameter], ErrorDiag>; let Documentation = [LifetimeBoundDocs]; - let LangOpts = [CPlusPlus]; let SimpleHandler = 1; } diff --git a/clang/test/Sema/attr-lifetimebound.c b/clang/test/Sema/attr-lifetimebound.c new file mode 100644 index 00000000000000..e1c714cb27dc8b --- /dev/null +++ b/clang/test/Sema/attr-lifetimebound.c @@ -0,0 +1,8 @@ +// RUN: %clang_cc1 -std=c99 -verify %s + +int *f(int* p __attribute__((lifetimebound))); + +int *g() { + int i; + return f(&i); // expected-warning {{address of stack memory associated with local variable 'i' returned}} +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits