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
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to