================
@@ -7493,7 +7493,32 @@ void testPointerAliasEscapeMultiple(Foo *F) {
escapeAliasMultiple(&L, &L, &Fp);
Fp->mu.Unlock(); // expected-warning{{releasing mutex 'Fp->mu' that was
not held}}
} // expected-warning{{mutex 'F->mu' is still held at the end of function}}
-
+
+void unlockFooWithEscapablePointer(Foo **Fp)
EXCLUSIVE_UNLOCK_FUNCTION((*Fp)->mu);
+void testEscapeInvalidationHappensRightAfterTheCall(Foo* F) {
+ Foo* L;
+ L = F;
+ L->mu.Lock();
+ // Release the lock held by 'L' before clearing its definition.
+ unlockFooWithEscapablePointer(&L);
----------------
ziqingluo-90 wrote:
Created https://github.com/llvm/llvm-project/pull/181896. Will merge after
tests pass.
https://github.com/llvm/llvm-project/pull/178952
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits