================
@@ -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
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits