hokein wrote:
Heads-up: this patch triggers a MSAN failure in an lldb test
(`lldb/test/API/commands/expression/call-function/TestCallStdStringFunction.py`),
the stacktrace:
```
==5633==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 in decltype(auto)
clang::ASTNodeImporter::CallOverloadedCreateFun<clang::ClassTemplateSpecializationDecl>::operator()<clang::ASTContext&,
clang::TagTypeKind, clang::DeclContext*&, clang::SourceLocation&,
clang::SourceLocation&, clang::ClassTemplateDecl*&,
llvm::SmallVector<clang::TemplateArgument, 2u>&, bool,
clang::ClassTemplateSpecializationDecl*&>(clang::ASTContext&,
clang::TagTypeKind&&, clang::DeclContext*&, clang::SourceLocation&,
clang::SourceLocation&, clang::ClassTemplateDecl*&,
llvm::SmallVector<clang::TemplateArgument, 2u>&, bool&&,
clang::ClassTemplateSpecializationDecl*&)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:234:16
#1 in bool
clang::ASTNodeImporter::GetImportedOrCreateSpecialDecl<clang::ClassTemplateSpecializationDecl,
clang::ASTNodeImporter::CallOverloadedCreateFun<clang::ClassTemplateSpecializationDecl>,
clang::ClassTemplateSpecializationDecl, clang::ASTContext&,
clang::TagTypeKind, clang::DeclContext*&, clang::SourceLocation&,
clang::SourceLocation&, clang::ClassTemplateDecl*&,
llvm::SmallVector<clang::TemplateArgument, 2u>&, bool,
clang::ClassTemplateSpecializationDecl*&>(clang::ClassTemplateSpecializationDecl*&,
clang::ASTNodeImporter::CallOverloadedCreateFun<clang::ClassTemplateSpecializationDecl>,
clang::ClassTemplateSpecializationDecl*, clang::ASTContext&,
clang::TagTypeKind&&, clang::DeclContext*&, clang::SourceLocation&,
clang::SourceLocation&, clang::ClassTemplateDecl*&,
llvm::SmallVector<clang::TemplateArgument, 2u>&, bool&&,
clang::ClassTemplateSpecializationDecl*&)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:281:13
#2 in GetImportedOrCreateDecl<clang::ClassTemplateSpecializationDecl,
clang::ClassTemplateSpecializationDecl, clang::ASTContext &,
clang::TagTypeKind, clang::DeclContext *&, clang::SourceLocation &,
clang::SourceLocation &, clang::ClassTemplateDecl *&,
llvm::SmallVector<clang::TemplateArgument, 2U> &, bool,
clang::ClassTemplateSpecializationDecl *&>
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:251:14
#3 in
clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:6323:9
#4 in clang::declvisitor::Base<std::__msan::add_pointer,
clang::ASTNodeImporter, llvm::Expected<clang::Decl*>>::Visit(clang::Decl*)
llvm/llvm-project/clang/include/clang/AST/DeclNodes.inc
#5 in clang::ASTImporter::ImportImpl(clang::Decl*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9126:19
#6 in
lldb_private::ClangASTImporter::ASTImporterDelegate::ImportImpl(clang::Decl*)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp:1134:23
#7 in clang::ASTImporter::Import(clang::Decl*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9521:27
#8 in std::__msan::conditional<std::is_base_of_v<clang::Type,
clang::RecordDecl>, llvm::Expected<clang::RecordDecl const*>,
llvm::Expected<clang::RecordDecl*>>::type
clang::ASTNodeImporter::import<clang::RecordDecl>(clang::RecordDecl*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:203:31
#9 in clang::ASTNodeImporter::VisitRecordType(clang::RecordType const*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:1559:40
#10 in clang::TypeVisitor<clang::ASTNodeImporter,
llvm::Expected<clang::QualType>>::Visit(clang::Type const*)
llvm/llvm-project/clang/include/clang/AST/TypeNodes.inc:76:1
#11 in clang::ASTImporter::Import(clang::Type const*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9157:36
#12 in clang::ASTImporter::Import(clang::QualType)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9171:31
#13 in import<clang::QualType>
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:217:23
#14 in llvm::Expected<clang::TemplateArgument>
clang::ASTNodeImporter::import<clang::TemplateArgument>(clang::TemplateArgument
const&) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:832:32
#15 in
clang::ASTNodeImporter::ImportTemplateArguments(llvm::ArrayRef<clang::TemplateArgument>,
llvm::SmallVectorImpl<clang::TemplateArgument>&)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:2453:24
#16 in
clang::ASTNodeImporter::VisitClassTemplateSpecializationDecl(clang::ClassTemplateSpecializationDecl*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:6219:11
#17 in clang::declvisitor::Base<std::__msan::add_pointer,
clang::ASTNodeImporter, llvm::Expected<clang::Decl*>>::Visit(clang::Decl*)
llvm/llvm-project/clang/include/clang/AST/DeclNodes.inc
#18 in clang::ASTImporter::ImportImpl(clang::Decl*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9126:19
#19 in
lldb_private::ClangASTImporter::ASTImporterDelegate::ImportImpl(clang::Decl*)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp:1134:23
#20 in clang::ASTImporter::Import(clang::Decl*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9521:27
#21 in std::__msan::conditional<std::is_base_of_v<clang::Type,
clang::RecordDecl>, llvm::Expected<clang::RecordDecl const*>,
llvm::Expected<clang::RecordDecl*>>::type
clang::ASTNodeImporter::import<clang::RecordDecl>(clang::RecordDecl*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:203:31
#22 in clang::ASTNodeImporter::VisitRecordType(clang::RecordType const*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:1559:40
#23 in clang::TypeVisitor<clang::ASTNodeImporter,
llvm::Expected<clang::QualType>>::Visit(clang::Type const*)
llvm/llvm-project/clang/include/clang/AST/TypeNodes.inc:76:1
#24 in clang::ASTImporter::Import(clang::Type const*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9157:36
#25 in clang::ASTImporter::Import(clang::QualType)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9171:31
#26 in import<clang::QualType>
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:217:23
#27 in clang::QualType
clang::ASTNodeImporter::importChecked<clang::QualType>(llvm::Error&,
clang::QualType const&) llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:692:30
#28 in
clang::ASTNodeImporter::VisitTypedefNameDecl(clang::TypedefNameDecl*, bool)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:2823:27
#29 in VisitTypedefDecl
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:2862:10
#30 in clang::declvisitor::Base<std::__msan::add_pointer,
clang::ASTNodeImporter, llvm::Expected<clang::Decl*>>::Visit(clang::Decl*)
llvm/llvm-project/clang/include/clang/AST/DeclNodes.inc:466:1
#31 in clang::ASTImporter::ImportImpl(clang::Decl*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9126:19
#32 in
lldb_private::ClangASTImporter::ASTImporterDelegate::ImportImpl(clang::Decl*)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp:1134:23
#33 in clang::ASTImporter::Import(clang::Decl*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9521:27
#34 in std::__msan::conditional<std::is_base_of_v<clang::Type,
clang::TypedefNameDecl>, llvm::Expected<clang::TypedefNameDecl const*>,
llvm::Expected<clang::TypedefNameDecl*>>::type
clang::ASTNodeImporter::import<clang::TypedefNameDecl>(clang::TypedefNameDecl*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:203:31
#35 in clang::ASTNodeImporter::VisitTypedefType(clang::TypedefType const*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:1441:45
#36 in clang::TypeVisitor<clang::ASTNodeImporter,
llvm::Expected<clang::QualType>>::Visit(clang::Type const*)
llvm/llvm-project/clang/include/clang/AST/TypeNodes.inc:81:1
#37 in clang::ASTImporter::Import(clang::Type const*)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9157:36
#38 in clang::ASTImporter::Import(clang::QualType)
llvm/llvm-project/clang/lib/AST/ASTImporter.cpp:9171:31
#39 in
lldb_private::ClangASTImporter::CopyType(lldb_private::TypeSystemClang&,
lldb_private::CompilerType const&)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTImporter.cpp:54:56
#40 in
lldb_private::ClangASTSource::GuardedCopyType(lldb_private::CompilerType
const&)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp:1486:26
#41 in
lldb_private::ClangExpressionDeclMap::GetVariableValue(std::__msan::shared_ptr<lldb_private::Variable>&,
lldb_private::Value&, lldb_private::TaggedASTType<1u>*,
lldb_private::TaggedASTType<0u>*)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp:1513:30
#42 in
lldb_private::ClangExpressionDeclMap::AddOneVariable(lldb_private::NameSearchContext&,
std::__msan::shared_ptr<lldb_private::Variable>,
std::__msan::shared_ptr<lldb_private::ValueObject>)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp:1654:8
#43 in
lldb_private::ClangExpressionDeclMap::LookupLocalVariable(lldb_private::NameSearchContext&,
lldb_private::ConstString, lldb_private::SymbolContext&,
lldb_private::CompilerDeclContext const&)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp:1094:7
#44 in
lldb_private::ClangExpressionDeclMap::FindExternalVisibleDecls(lldb_private::NameSearchContext&,
std::__msan::shared_ptr<lldb_private::Module>,
lldb_private::CompilerDeclContext const&)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp:1418:9
#45 in
lldb_private::ClangExpressionDeclMap::FindExternalVisibleDecls(lldb_private::NameSearchContext&)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp:721:5
#46 in
lldb_private::ClangASTSource::FindExternalVisibleDeclsByName(clang::DeclContext
const*, clang::DeclarationName, clang::DeclContext const*)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp:180:3
#47 in
lldb_private::ClangASTSource::ClangASTSourceProxy::FindExternalVisibleDeclsByName(clang::DeclContext
const*, clang::DeclarationName, clang::DeclContext const*)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h:219:25
#48 in clang::DeclContext::lookupImpl(clang::DeclarationName,
clang::DeclContext const*) const
llvm/llvm-project/clang/lib/AST/DeclBase.cpp:1913:17
#49 in clang::DeclContext::lookup(clang::DeclarationName) const
llvm/llvm-project/clang/lib/AST/DeclBase.cpp:1873:31
#50 in LookupDirect(clang::Sema&, clang::LookupResult&, clang::DeclContext
const*) llvm/llvm-project/clang/lib/Sema/SemaLookup.cpp:1127:39
#51 in CppNamespaceLookup(clang::Sema&, clang::LookupResult&,
clang::ASTContext&, clang::DeclContext const*, (anonymous
namespace)::UnqualUsingDirectiveSet&)
llvm/llvm-project/clang/lib/Sema/SemaLookup.cpp:1225:16
#52 in clang::Sema::CppLookupName(clang::LookupResult&, clang::Scope*)
llvm/llvm-project/clang/lib/Sema/SemaLookup.cpp:1524:15
#53 in clang::Sema::LookupName(clang::LookupResult&, clang::Scope*, bool,
bool) llvm/llvm-project/clang/lib/Sema/SemaLookup.cpp:2280:9
#54 in clang::Sema::BuildUsingDeclaration(clang::Scope*,
clang::AccessSpecifier, clang::SourceLocation, bool, clang::SourceLocation,
clang::CXXScopeSpec&, clang::DeclarationNameInfo, clang::SourceLocation,
clang::ParsedAttributesView const&, bool, bool)
llvm/llvm-project/clang/lib/Sema/SemaDeclCXX.cpp:12832:5
#55 in clang::Sema::ActOnUsingDeclaration(clang::Scope*,
clang::AccessSpecifier, clang::SourceLocation, clang::SourceLocation,
clang::CXXScopeSpec&, clang::UnqualifiedId&, clang::SourceLocation,
clang::ParsedAttributesView const&)
llvm/llvm-project/clang/lib/Sema/SemaDeclCXX.cpp:12367:7
#56 in clang::Parser::ParseUsingDeclaration(clang::DeclaratorContext,
clang::Parser::ParsedTemplateInfo const&, clang::SourceLocation,
clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier)
llvm/llvm-project/clang/lib/Parse/ParseDeclCXX.cpp:899:26
#57 in
clang::Parser::ParseUsingDirectiveOrDeclaration(clang::DeclaratorContext,
clang::Parser::ParsedTemplateInfo const&, clang::SourceLocation&,
clang::ParsedAttributes&)
llvm/llvm-project/clang/lib/Parse/ParseDeclCXX.cpp:537:10
#58 in clang::Parser::ParseDeclaration(clang::DeclaratorContext,
clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&,
clang::SourceLocation*) llvm/llvm-project/clang/lib/Parse/ParseDecl.cpp:2081:12
#59 in
clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*,
32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*,
clang::ParsedAttributes&, clang::ParsedAttributes&)
llvm/llvm-project/clang/lib/Parse/ParseStmt.cpp
#60 in
clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*,
32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*)
llvm/llvm-project/clang/lib/Parse/ParseStmt.cpp:125:20
#61 in clang::Parser::ParseCompoundStatementBody(bool)
llvm/llvm-project/clang/lib/Parse/ParseStmt.cpp:1267:11
#62 in clang::Parser::ParseFunctionStatementBody(clang::Decl*,
clang::Parser::ParseScope&)
llvm/llvm-project/clang/lib/Parse/ParseStmt.cpp:2577:21
#63 in clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&,
clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*)
llvm/llvm-project/clang/lib/Parse/Parser.cpp:1520:10
#64 in clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&,
clang::DeclaratorContext, clang::ParsedAttributes&,
clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*,
clang::Parser::ForRangeInit*) llvm/llvm-project/clang/lib/Parse/ParseDecl.cpp
#65 in
clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&,
clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier)
llvm/llvm-project/clang/lib/Parse/Parser.cpp:1244:10
#66 in
clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&,
clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier)
llvm/llvm-project/clang/lib/Parse/Parser.cpp:1266:12
#67 in clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&,
clang::ParsedAttributes&, clang::ParsingDeclSpec*)
llvm/llvm-project/clang/lib/Parse/Parser.cpp:1069:14
#68 in
clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&,
clang::Sema::ModuleImportState&)
llvm/llvm-project/clang/lib/Parse/Parser.cpp:758:12
#69 in clang::ParseAST(clang::Sema&, bool, bool)
llvm/llvm-project/clang/lib/Parse/ParseAST.cpp:171:20
#70 in
lldb_private::ClangExpressionParser::ParseInternal(lldb_private::DiagnosticManager&,
clang::CodeCompleteConsumer*, unsigned int, unsigned int)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp:1347:5
#71 in
lldb_private::ClangExpressionParser::Parse(lldb_private::DiagnosticManager&)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp:1204:10
#72 in
lldb_private::ClangUserExpression::TryParse(lldb_private::DiagnosticManager&,
lldb_private::ExecutionContext&, lldb_private::ExecutionPolicy, bool, bool)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangUserExpression.cpp:579:35
#73 in
lldb_private::ClangUserExpression::Parse(lldb_private::DiagnosticManager&,
lldb_private::ExecutionContext&, lldb_private::ExecutionPolicy, bool, bool)
llvm/llvm-project/lldb/source/Plugins/ExpressionParser/Clang/ClangUserExpression.cpp:673:24
#74 in
lldb_private::UserExpression::Evaluate(lldb_private::ExecutionContext&,
lldb_private::EvaluateExpressionOptions const&, llvm::StringRef,
llvm::StringRef, std::__msan::shared_ptr<lldb_private::ValueObject>&,
std::__msan::basic_string<char, std::__msan::char_traits<char>,
std::__msan::allocator<char>>*, lldb_private::ValueObject*)
llvm/llvm-project/lldb/source/Expression/UserExpression.cpp:280:27
#75 in lldb_private::Target::EvaluateExpression(llvm::StringRef,
lldb_private::ExecutionContextScope*,
std::__msan::shared_ptr<lldb_private::ValueObject>&,
lldb_private::EvaluateExpressionOptions const&, std::__msan::basic_string<char,
std::__msan::char_traits<char>, std::__msan::allocator<char>>*,
lldb_private::ValueObject*)
llvm/llvm-project/lldb/source/Target/Target.cpp:2853:9
#76 in
lldb_private::CommandObjectExpression::EvaluateExpression(llvm::StringRef,
lldb_private::Stream&, lldb_private::Stream&,
lldb_private::CommandReturnObject&)
llvm/llvm-project/lldb/source/Commands/CommandObjectExpression.cpp:426:38
#77 in lldb_private::CommandObjectExpression::DoExecute(llvm::StringRef,
lldb_private::CommandReturnObject&)
llvm/llvm-project/lldb/source/Commands/CommandObjectExpression.cpp:667:7
#78 in lldb_private::CommandObjectRaw::Execute(char const*,
lldb_private::CommandReturnObject&)
llvm/llvm-project/lldb/source/Interpreter/CommandObject.cpp:853:7
#79 in lldb_private::CommandInterpreter::HandleCommand(char const*,
lldb_private::LazyBool, lldb_private::CommandReturnObject&, bool)
llvm/llvm-project/lldb/source/Interpreter/CommandInterpreter.cpp:2085:14
```
https://github.com/llvm/llvm-project/pull/125791
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits