Author: Gabor Horvath Date: 2021-02-27T08:09:57-08:00 New Revision: dd6738d93de148f2239ef5be82a61cf8f5f71124
URL: https://github.com/llvm/llvm-project/commit/dd6738d93de148f2239ef5be82a61cf8f5f71124 DIFF: https://github.com/llvm/llvm-project/commit/dd6738d93de148f2239ef5be82a61cf8f5f71124.diff LOG: [clang][Lifetimes] Fix false positive warning from BUG 49342 Differential Revision: https://reviews.llvm.org/D97605 Added: Modified: clang/lib/Sema/SemaInit.cpp clang/test/Sema/warn-lifetime-analysis-nocfg.cpp Removed: ################################################################################ diff --git a/clang/lib/Sema/SemaInit.cpp b/clang/lib/Sema/SemaInit.cpp index c1a2be744853..f387e9a33708 100644 --- a/clang/lib/Sema/SemaInit.cpp +++ b/clang/lib/Sema/SemaInit.cpp @@ -7521,6 +7521,8 @@ static bool pathOnlyInitializesGslPointer(IndirectLocalPath &Path) { continue; if (It->Kind == IndirectLocalPathEntry::AddressOf) continue; + if (It->Kind == IndirectLocalPathEntry::LifetimeBoundCall) + continue; return It->Kind == IndirectLocalPathEntry::GslPointerInit || It->Kind == IndirectLocalPathEntry::GslReferenceInit; } diff --git a/clang/test/Sema/warn-lifetime-analysis-nocfg.cpp b/clang/test/Sema/warn-lifetime-analysis-nocfg.cpp index 3319d5aa2db8..b3ca173c1fdb 100644 --- a/clang/test/Sema/warn-lifetime-analysis-nocfg.cpp +++ b/clang/test/Sema/warn-lifetime-analysis-nocfg.cpp @@ -171,12 +171,22 @@ struct basic_string_view { const T *begin() const; }; +template<class _Mystr> struct iter { + iter& operator-=(int); + + iter operator-(int _Off) const { + iter _Tmp = *this; + return _Tmp -= _Off; + } +}; + template<typename T> struct basic_string { basic_string(); basic_string(const T *); const T *c_str() const; operator basic_string_view<T> () const; + using const_iterator = iter<T>; }; @@ -455,3 +465,8 @@ std::vector<int>::iterator noFalsePositiveWithVectorOfPointers() { std::vector<std::vector<int>::iterator> iters; return iters.at(0); } + +void testForBug49342() +{ + auto it = std::iter<char>{} - 2; // Used to be false positive. +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits