(original) (raw)
Great to see GCC catching the deprecated ctor case - would be great to get that implemented in Clang at some point (& enabled for LLVM builds). (rtrieu@)
The vector one looks like a false positive? You're allowed to form a pointer to an element one past the end of a singular object but it looks like that's what GCC's warning on.
Initializer list - maybe a false positive too, given ArrayRef is intended to refer to a temporary object - I think the initializer\_list's lifetime is to teh end of the full expression where it was written, so this can still be OK.
The ORC/redundant-move one looks correct - I wonder why Clang didn't diagnose that (rtrieu@)?
The vector one looks like a false positive? You're allowed to form a pointer to an element one past the end of a singular object but it looks like that's what GCC's warning on.
Initializer list - maybe a false positive too, given ArrayRef is intended to refer to a temporary object - I think the initializer\_list's lifetime is to teh end of the full expression where it was written, so this can still be OK.
The ORC/redundant-move one looks correct - I wonder why Clang didn't diagnose that (rtrieu@)?
On Thu, Sep 13, 2018 at 12:13 AM Dávid Bolvanský via llvm-dev <llvm-dev@lists.llvm.org> wrote:
\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_Hello,GCC 9.0 introduces a new warning checkers and some of them found possible issues in LLVM.In file included from /home/davidbolvansky/trunk/llvm/include/llvm/Analysis/LazyCallGraph.h:38,from /home/davidbolvansky/trunk/llvm/unittests/Analysis/LazyCallGraphTest.cpp:10:/home/davidbolvansky/trunk/llvm/include/llvm/ADT/ArrayRef.h: In instantiation of ‘llvm::ArrayRef::ArrayRef(const std::initializer\_list<\_Tp>&) \[with T = llvm::LazyCallGraph::Node\*\]’:/home/davidbolvansky/trunk/llvm/unittests/Analysis/LazyCallGraphTest.cpp:1169:52: required from here/home/davidbolvansky/trunk/llvm/include/llvm/ADT/ArrayRef.h:102:37: warning: initializing ‘llvm::ArrayRef::Data’ from ‘std::initializer\_list::begin’ does not extend the lifetime of the underlying array \[-Winit-list-lifetime\]In file included from /home/davidbolvansky/trunk/llvm/unittests/ADT/SmallVectorTest.cpp:14:/home/davidbolvansky/trunk/llvm/include/llvm/ADT/SmallVector.h: In member function ‘virtual void {anonymous}::SmallVectorTest\_InitializerList\_Test::TestBody()’:/home/davidbolvansky/trunk/llvm/include/llvm/ADT/SmallVector.h:502:7: warning: array subscript 1 is outside array bounds of ‘int \[1\]’ \[-Warray-bounds\]502 | ++EltPtr;/home/davidbolvansky/trunk/llvm/unittests/ADT/SmallVectorTest.cpp:994:30: note: while referencing ‘’994 | V2.insert(V2.begin() + 1, 5);/home/davidbolvansky/trunk/llvm/unittests/ExecutionEngine/Orc/CompileOnDemandLayerTest.cpp:79:40: required from here/home/davidbolvansky/trunk/llvm/include/llvm/ExecutionEngine/Orc/CompileOnDemandLayer.h:314:29: warning: redundant move in return statement \[-Wredundant-move\]314 | return std::move(Err);In file included from /home/davidbolvansky/trunk/llvm/utils/unittest/googlemock/include/gmock/gmock-spec-builders.h:75,from /home/davidbolvansky/trunk/llvm/utils/unittest/googlemock/include/gmock/gmock-generated-function-mockers.h:43,from /home/davidbolvansky/trunk/llvm/utils/unittest/googlemock/include/gmock/gmock.h:61,from /home/davidbolvansky/trunk/llvm/include/llvm/Testing/Support/Error.h:17,from /home/davidbolvansky/trunk/llvm/unittests/DebugInfo/MSF/MappedBlockStreamTest.cpp:15:/home/davidbolvansky/trunk/llvm/utils/unittest/googlemock/include/gmock/gmock-matchers.h: In instantiation of ‘testing::internal::PredicateFormatterFromMatcher::PredicateFormatterFromMatcher(M) \[with M = llvm::FailedMatcher\]’:/home/davidbolvansky/trunk/llvm/utils/unittest/googlemock/include/gmock/gmock-matchers.h:1880:10: required from ‘testing::internal::PredicateFormatterFromMatcher testing::internal::MakePredicateFormatterFromMatcher(M) \[with M = llvm::FailedMatcher\]’/home/davidbolvansky/trunk/llvm/unittests/DebugInfo/MSF/MappedBlockStreamTest.cpp:96:3: required from here/home/davidbolvansky/trunk/llvm/utils/unittest/googlemock/include/gmock/gmock-matchers.h:1836:75: warning: implicitly-declared ‘constexpr llvm::FailedMatcher::FailedMatcher(const llvm::FailedMatcher&)’ is deprecated \[-Wdeprecated-copy\]1836 | explicit PredicateFormatterFromMatcher(M m) : matcher\_(internal::move(m)) {}| ^In file included from /home/davidbolvansky/trunk/llvm/utils/unittest/googletest/include/gtest/gtest-printers.h:103,from /home/davidbolvansky/trunk/llvm/include/llvm/Testing/Support/SupportHelpers.h:16,from /home/davidbolvansky/trunk/llvm/include/llvm/Testing/Support/Error.h:15,from /home/davidbolvansky/trunk/llvm/unittests/DebugInfo/MSF/MappedBlockStreamTest.cpp:15:/home/davidbolvansky/trunk/llvm/utils/unittest/googletest/include/gtest/internal/gtest-port.h:873:8: note: because ‘llvm::FailedMatcher’ has user-provided ‘void llvm::FailedMatcher::operator=(const llvm::FailedMatcher&)’873 | void operator=(type const &)| ^\~\~\~\~\~\~\~/home/davidbolvansky/trunk/llvm/utils/unittest/googlemock/include/gmock/gmock-generated-matchers.h:1417:5: note: in expansion of macro ‘GTEST\_DISALLOW\_ASSIGN\_’1417 | GTEST\_DISALLOW\_ASSIGN\_(name##Matcher);\\| ^\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~\~/home/davidbolvansky/trunk/llvm/include/llvm/Testing/Support/Error.h:145:1: note: in expansion of macro ‘MATCHER’145 | MATCHER(Failed, "") { return !arg.Success(); }
LLVM Developers mailing list
llvm-dev@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev