llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-temporal-safety

Author: Utkarsh Saxena (usx95)

<details>
<summary>Changes</summary>



---
Full diff: https://github.com/llvm/llvm-project/pull/177362.diff


1 Files Affected:

- (modified) clang/test/Sema/warn-lifetime-analysis-nocfg.cpp (+12-6) 


``````````diff
diff --git a/clang/test/Sema/warn-lifetime-analysis-nocfg.cpp 
b/clang/test/Sema/warn-lifetime-analysis-nocfg.cpp
index a38a4b440891c..99a796c360a7f 100644
--- a/clang/test/Sema/warn-lifetime-analysis-nocfg.cpp
+++ b/clang/test/Sema/warn-lifetime-analysis-nocfg.cpp
@@ -36,6 +36,8 @@ struct [[gsl::Pointer(long)]] MyLongPointerFromConversion {
 
 struct [[gsl::Owner(long)]] MyLongOwnerWithConversion {
   MyLongOwnerWithConversion();
+  // TODO: Do this behind a macro and run tests without this dtor to verify 
trivial dtor cases.
+  ~MyLongOwnerWithConversion();
   operator MyLongPointerFromConversion();
   long &operator*();
   MyIntPointer releaseAsMyPointer();
@@ -121,7 +123,8 @@ MyIntPointer danglingGslPtrFromTemporary2() {
 }
 
 MyLongPointerFromConversion danglingGslPtrFromTemporaryConv() {
-  return MyLongOwnerWithConversion{}; // expected-warning {{returning address 
of local temporary object}}
+  return MyLongOwnerWithConversion{}; // expected-warning {{returning address 
of local temporary object}} \
+                                      // cfg-warning {{address of stack memory 
is returned later}} cfg-note {{returned here}}
 }
 
 int *noFalsePositive(MyIntOwner &o) {
@@ -152,12 +155,15 @@ void initLocalGslPtrWithTempOwner() {
                          // cfg-warning {{object whose reference is captured 
does not live long enough}} cfg-note {{destroyed here}}
   use(global);           // cfg-note {{later used here}}
 
-  MyLongPointerFromConversion p2 = MyLongOwnerWithConversion{}; // 
expected-warning {{object backing the pointer will be destroyed at the end of 
the full-expression}}
-  use(p2);
+  MyLongPointerFromConversion p2 = MyLongOwnerWithConversion{}; // 
expected-warning {{object backing the pointer will be destroyed at the end of 
the full-expression}} \
+                                                                // cfg-warning 
{{object whose reference is captured does not live long enough}} cfg-note 
{{destroyed here}}
+  use(p2);                                                      // cfg-note 
{{later used here}}
 
-  p2 = MyLongOwnerWithConversion{}; // expected-warning {{object backing the 
pointer 'p2' }}
-  global2 = MyLongOwnerWithConversion{}; // expected-warning {{object backing 
the pointer 'global2' }}
-  use(global2, p2);
+  p2 = MyLongOwnerWithConversion{}; // expected-warning {{object backing the 
pointer 'p2' }} \
+                                    // cfg-warning {{object whose reference is 
captured does not live long enough}} cfg-note {{destroyed here}}
+  global2 = MyLongOwnerWithConversion{};  // expected-warning {{object backing 
the pointer 'global2' }} \
+                                          // cfg-warning {{object whose 
reference is captured does not live long enough}} cfg-note {{destroyed here}}
+  use(global2, p2);                       // cfg-note 2 {{later used here}}
 }
 
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/177362
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to