[clang] [LifetimeSafety] resolved lifetimeBound violation in constructor (PR #204797)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 22 02:56:55 PDT 2026
================
@@ -194,59 +176,9 @@ struct TrailingReturn {
}
};
-#define GNU_LIFETIMEBOUND_MACRO __attribute__((lifetimebound))
-
-View return_view_with_gnu_macro(View a) {
- // CHECK: :[[@LINE-1]]:33: warning: parameter in intra-TU function should be marked
- // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:39-[[@LINE-2]]:39}:" GNU_LIFETIMEBOUND_MACRO"
- return a;
-}
-
-struct OnlyGNUMember {
- MyObj data;
-
- View get_view() {
- // CHECK: :[[@LINE-1]]:18: warning: implicit this in intra-TU function should be marked
- // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:18-[[@LINE-2]]:18}:" {{\[\[}}clang::lifetimebound]]"
- return data;
- }
-};
-
-#define LIFETIMEBOUND_MACRO [[clang::lifetimebound]]
-#define MY_LIFETIMEBOUND_MACRO [[clang::lifetimebound]]
-
-View unnamed_macro(View);
-// CHECK: :[[@LINE-1]]:20: warning: parameter in intra-TU function should be marked
-// CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:20-[[@LINE-2]]:20}:"MY_LIFETIMEBOUND_MACRO "
-View unnamed_macro(View a) {
- return a;
-}
-
-View return_view_with_macro(View a) {
- // CHECK: :[[@LINE-1]]:29: warning: parameter in intra-TU function should be marked
- // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:35-[[@LINE-2]]:35}:" MY_LIFETIMEBOUND_MACRO"
- return a;
-}
-
-#define FIRST_LIFETIMEBOUND_MACRO [[clang::lifetimebound]]
-#define SECOND_LIFETIMEBOUND_MACRO [[clang::lifetimebound]]
-
-View return_view_with_latest_macro(View a) {
- // CHECK: :[[@LINE-1]]:36: warning: parameter in intra-TU function should be marked
- // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:42-[[@LINE-2]]:42}:" SECOND_LIFETIMEBOUND_MACRO"
- // CHECK-MACRO: :[[@LINE-3]]:36: warning: parameter in intra-TU function should be marked
- // CHECK-MACRO: fix-it:"{{.*}}":{[[@LINE-4]]:42-[[@LINE-4]]:42}:" LIFETIMEBOUND_MACRO"
- return a;
-}
-
-struct MacroMember {
- MyObj data;
-
- View get_view() {
- // CHECK: :[[@LINE-1]]:18: warning: implicit this in intra-TU function should be marked
- // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:18-[[@LINE-2]]:18}:" SECOND_LIFETIMEBOUND_MACRO"
- // CHECK-MACRO: :[[@LINE-3]]:18: warning: implicit this in intra-TU function should be marked
- // CHECK-MACRO: fix-it:"{{.*}}":{[[@LINE-4]]:18-[[@LINE-4]]:18}:" LIFETIMEBOUND_MACRO"
- return data;
- }
+struct ViewWithMember {
+ ViewWithMember(const char *data) : mData(data) {}
+ // CHECK: :[[@LINE-1]]:18: warning: parameter in intra-TU function should be marked
+ // CHECK: fix-it:"{{.*}}":{[[@LINE-2]]:34-[[@LINE-2]]:34}:" {{\[\[}}clang::lifetimebound]]"
+ const char *mData;
};
----------------
NeKon69 wrote:
This file is related to lifetimebound attribute inference, not placement correctness, use this file instead:
https://github.com/llvm/llvm-project/blob/00086d64086043269c3ed1c15dc08f5b6d517292/clang/test/Sema/LifetimeSafety/misplaced-lifetimebound-intra-tu.cpp
https://github.com/llvm/llvm-project/pull/204797
More information about the cfe-commits
mailing list