https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80183
Bug ID: 80183 Summary: [7 Regression] Conditional jump or move depends on uninitialised value: std::local_Rb_tree_decrement(std::_Rb_tree_node_base*) (tree.cc:97) Product: gcc Version: 7.0.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: trippels at gcc dot gnu.org Target Milestone: --- Running clang-format under valgrind shows: ==69398== Conditional jump or move depends on uninitialised value(s) ==69398== at 0x42D3B08: std::local_Rb_tree_decrement(std::_Rb_tree_node_base*) (tree.cc:97) ==69398== by 0x101B12FF: std::_Rb_tree_const_iterator<clang::tooling::Replacement>::operator--() (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x101B17FF: std::reverse_iterator<std::_Rb_tree_const_iterator<clang::tooling::Replacement> >::operator->() const (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x101B0597: clang::tooling::applyAllReplacements[abi:cxx11](llvm::StringRef, clang::tooling::Replacements const&) (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x101099FB: clang::format::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, llvm::StringRef, bool*)::{lambda(clang::format::TokenAnalyzer&)#1}::operator()(clang::format::TokenAnalyzer&) const (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x10109E67: clang::format::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, llvm::StringRef, bool*) (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x1000C603: clang::format::format(llvm::StringRef) (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x1000D1D7: main (in /home/trippels/llvm_build/bin/clang-format) ==69398== ==69398== Conditional jump or move depends on uninitialised value(s) ==69398== at 0x42D3B08: std::local_Rb_tree_decrement(std::_Rb_tree_node_base*) (tree.cc:97) ==69398== by 0x101B12FF: std::_Rb_tree_const_iterator<clang::tooling::Replacement>::operator--() (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x101B17FF: std::reverse_iterator<std::_Rb_tree_const_iterator<clang::tooling::Replacement> >::operator->() const (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x101B05BF: clang::tooling::applyAllReplacements[abi:cxx11](llvm::StringRef, clang::tooling::Replacements const&) (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x101099FB: clang::format::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, llvm::StringRef, bool*)::{lambda(clang::format::TokenAnalyzer&)#1}::operator()(clang::format::TokenAnalyzer&) const (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x10109E67: clang::format::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, llvm::StringRef, bool*) (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x1000C603: clang::format::format(llvm::StringRef) (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x1000D1D7: main (in /home/trippels/llvm_build/bin/clang-format) ==69398== ==69398== Conditional jump or move depends on uninitialised value(s) ==69398== at 0x42D3B08: std::local_Rb_tree_decrement(std::_Rb_tree_node_base*) (tree.cc:97) ==69398== by 0x101B12FF: std::_Rb_tree_const_iterator<clang::tooling::Replacement>::operator--() (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x101B17FF: std::reverse_iterator<std::_Rb_tree_const_iterator<clang::tooling::Replacement> >::operator->() const (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x101B05E7: clang::tooling::applyAllReplacements[abi:cxx11](llvm::StringRef, clang::tooling::Replacements const&) (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x101099FB: clang::format::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, llvm::StringRef, bool*)::{lambda(clang::format::TokenAnalyzer&)#1}::operator()(clang::format::TokenAnalyzer&) const (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x10109E67: clang::format::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, llvm::StringRef, bool*) (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x1000C603: clang::format::format(llvm::StringRef) (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x1000D1D7: main (in /home/trippels/llvm_build/bin/clang-format) ==69398== ==69398== Conditional jump or move depends on uninitialised value(s) ==69398== at 0x42D3B08: std::local_Rb_tree_decrement(std::_Rb_tree_node_base*) (tree.cc:97) ==69398== by 0x101B12FF: std::_Rb_tree_const_iterator<clang::tooling::Replacement>::operator--() (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x101B06DF: clang::tooling::applyAllReplacements[abi:cxx11](llvm::StringRef, clang::tooling::Replacements const&) (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x101099FB: clang::format::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, llvm::StringRef, bool*)::{lambda(clang::format::TokenAnalyzer&)#1}::operator()(clang::format::TokenAnalyzer&) const (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x10109E67: clang::format::reformat(clang::format::FormatStyle const&, llvm::StringRef, llvm::ArrayRef<clang::tooling::Range>, llvm::StringRef, bool*) (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x1000C603: clang::format::format(llvm::StringRef) (in /home/trippels/llvm_build/bin/clang-format) ==69398== by 0x1000D1D7: main (in /home/trippels/llvm_build/bin/clang-format) This happens even when llvm/clang is build with -O0 and also when build with clang. gcc-6 libstdc++.so.6 works fine. And clang with -stdlib=libc++ also is fine. So it looks like a libstdc++ regression. Sorry, but I have no testcase yet.