[PATCH] D142607: [clang][ASTImporter] Handle UsingType in friend declarations.

Balázs Kéri via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Jan 26 01:12:25 PST 2023


balazske added a comment.

The test causes this assert if the fix is not applied:

  Unhandled type of friend class
  UNREACHABLE executed at /local/clang/llvm2/llvm-project/clang/lib/AST/ASTImporterLookupTable.cpp:71!
   #0 0x00007f4380b90e0a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /local/clang/llvm2/llvm-project/llvm/lib/Support/Unix/Signals.inc:567:11
   #1 0x00007f4380b90fdb PrintStackTraceSignalHandler(void*) /local/clang/llvm2/llvm-project/llvm/lib/Support/Unix/Signals.inc:641:1
   #2 0x00007f4380b8f58b llvm::sys::RunSignalHandlers() /local/clang/llvm2/llvm-project/llvm/lib/Support/Signals.cpp:103:5
   #3 0x00007f4380b91751 SignalHandler(int) /local/clang/llvm2/llvm-project/llvm/lib/Support/Unix/Signals.inc:412:1
   #4 0x00007f43840b1980 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12980)
   #5 0x00007f437fa40e87 raise /build/glibc-CVJwZb/glibc-2.27/signal/../sysdeps/unix/sysv/linux/raise.c:51:0
   #6 0x00007f437fa427f1 abort /build/glibc-CVJwZb/glibc-2.27/stdlib/abort.c:81:0
   #7 0x00007f4380a132c4 /local/clang/llvm2/llvm-project/llvm/lib/Support/ErrorHandling.cpp:212:3
   #8 0x00007f438265cc05 clang::(anonymous namespace)::Builder::VisitFriendDecl(clang::FriendDecl*) /local/clang/llvm2/llvm-project/clang/lib/AST/ASTImporterLookupTable.cpp:0:11
   #9 0x00007f438265ca40 clang::RecursiveASTVisitor<clang::(anonymous namespace)::Builder>::WalkUpFromFriendDecl(clang::FriendDecl*) /local/clang/llvm2/build/Debug/tools/clang/include/clang/AST/DeclNodes.inc:71:1
  #10 0x00007f43825e2505 clang::RecursiveASTVisitor<clang::(anonymous namespace)::Builder>::TraverseFriendDecl(clang::FriendDecl*) /local/clang/llvm2/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:1550:1
  #11 0x00007f43825dfa49 clang::RecursiveASTVisitor<clang::(anonymous namespace)::Builder>::TraverseDecl(clang::Decl*) /local/clang/llvm2/build/Debug/tools/clang/include/clang/AST/DeclNodes.inc:71:1
  #12 0x00007f4382648488 clang::RecursiveASTVisitor<clang::(anonymous namespace)::Builder>::TraverseDeclContextHelper(clang::DeclContext*) /local/clang/llvm2/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:1489:7
  #13 0x00007f43825e7038 clang::RecursiveASTVisitor<clang::(anonymous namespace)::Builder>::TraverseCXXRecordDecl(clang::CXXRecordDecl*) /local/clang/llvm2/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:2015:1
  #14 0x00007f43825dff7f clang::RecursiveASTVisitor<clang::(anonymous namespace)::Builder>::TraverseDecl(clang::Decl*) /local/clang/llvm2/build/Debug/tools/clang/include/clang/AST/DeclNodes.inc:295:1
  #15 0x00007f4382648488 clang::RecursiveASTVisitor<clang::(anonymous namespace)::Builder>::TraverseDeclContextHelper(clang::DeclContext*) /local/clang/llvm2/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:1489:7
  #16 0x00007f43825ee041 clang::RecursiveASTVisitor<clang::(anonymous namespace)::Builder>::TraverseTranslationUnitDecl(clang::TranslationUnitDecl*) /local/clang/llvm2/llvm-project/clang/include/clang/AST/RecursiveASTVisitor.h:1599:1
  #17 0x00007f43825e084d clang::RecursiveASTVisitor<clang::(anonymous namespace)::Builder>::TraverseDecl(clang::Decl*) /local/clang/llvm2/build/Debug/tools/clang/include/clang/AST/DeclNodes.inc:645:1
  #18 0x00007f43825df7d4 clang::ASTImporterLookupTable::ASTImporterLookupTable(clang::TranslationUnitDecl&) /local/clang/llvm2/llvm-project/clang/lib/AST/ASTImporterLookupTable.cpp:88:1
  #19 0x0000000000655a44 std::_MakeUniq<clang::ASTImporterLookupTable>::__single_object std::make_unique<clang::ASTImporterLookupTable, clang::TranslationUnitDecl&>(clang::TranslationUnitDecl&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/bits/unique_ptr.h:821:34
  #20 0x0000000000655933 clang::ASTImporterSharedState::ASTImporterSharedState(clang::TranslationUnitDecl&) /local/clang/llvm2/llvm-project/clang/include/clang/AST/ASTImporterSharedState.h:52:19
  #21 0x00000000006558d1 void __gnu_cxx::new_allocator<clang::ASTImporterSharedState>::construct<clang::ASTImporterSharedState, clang::TranslationUnitDecl&>(clang::ASTImporterSharedState*, clang::TranslationUnitDecl&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/ext/new_allocator.h:136:60
  #22 0x00000000006555ed void std::allocator_traits<std::allocator<clang::ASTImporterSharedState>>::construct<clang::ASTImporterSharedState, clang::TranslationUnitDecl&>(std::allocator<clang::ASTImporterSharedState>&, clang::ASTImporterSharedState*, clang::TranslationUnitDecl&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/bits/alloc_traits.h:475:56
  #23 0x000000000065544b std::__shared_ptr<clang::ASTImporterSharedState, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<clang::ASTImporterSharedState>, clang::TranslationUnitDecl&>(std::_Sp_make_shared_tag, std::allocator<clang::ASTImporterSharedState> const&, clang::TranslationUnitDecl&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/bits/shared_ptr_base.h:1327:4
  #24 0x00000000006553ad std::shared_ptr<clang::ASTImporterSharedState>::shared_ptr<std::allocator<clang::ASTImporterSharedState>, clang::TranslationUnitDecl&>(std::_Sp_make_shared_tag, std::allocator<clang::ASTImporterSharedState> const&, clang::TranslationUnitDecl&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/bits/shared_ptr.h:345:4
  #25 0x0000000000655316 std::shared_ptr<clang::ASTImporterSharedState> std::allocate_shared<clang::ASTImporterSharedState, std::allocator<clang::ASTImporterSharedState>, clang::TranslationUnitDecl&>(std::allocator<clang::ASTImporterSharedState> const&, clang::TranslationUnitDecl&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/bits/shared_ptr.h:690:14
  #26 0x000000000064e6f3 std::shared_ptr<clang::ASTImporterSharedState> std::make_shared<clang::ASTImporterSharedState, clang::TranslationUnitDecl&>(clang::TranslationUnitDecl&) /usr/bin/../lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/bits/shared_ptr.h:706:7
  #27 0x000000000064bd3e clang::ast_matchers::ASTImporterTestBase::lazyInitSharedState(clang::TranslationUnitDecl*) /local/clang/llvm2/llvm-project/clang/unittests/AST/ASTImporterFixtures.cpp:113:22
  #28 0x000000000064bf9f clang::ast_matchers::ASTImporterTestBase::lazyInitToAST(clang::TestLanguage, llvm::StringRef, llvm::StringRef) /local/clang/llvm2/llvm-project/clang/unittests/AST/ASTImporterFixtures.cpp:128:1
  #29 0x000000000064c77e clang::ast_matchers::ASTImporterTestBase::getToTuDecl(llvm::StringRef, clang::TestLanguage) /local/clang/llvm2/llvm-project/clang/unittests/AST/ASTImporterFixtures.cpp:191:3
  #30 0x00000000006a5a13 clang::ast_matchers::ASTImporterLookupTableTest_LookupFindsFriendClassDeclWithUsingTypeDoesNotAssert_Test::TestBody() /local/clang/llvm2/llvm-project/clang/unittests/AST/ASTImporterTest.cpp:5165:24
  #31 0x00007f4380c959c4 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /local/clang/llvm2/llvm-project/third-party/unittest/googletest/src/gtest.cc:2433:3
  #32 0x00007f4380c7b132 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /local/clang/llvm2/llvm-project/third-party/unittest/googletest/src/gtest.cc:2488:5
  #33 0x00007f4380c63173 testing::Test::Run() /local/clang/llvm2/llvm-project/third-party/unittest/googletest/src/gtest.cc:2515:3
  #34 0x00007f4380c63a4d testing::TestInfo::Run() /local/clang/llvm2/llvm-project/third-party/unittest/googletest/src/gtest.cc:2687:12
  #35 0x00007f4380c6401c testing::TestSuite::Run() /local/clang/llvm2/llvm-project/third-party/unittest/googletest/src/gtest.cc:2815:44
  #36 0x00007f4380c6cde1 testing::internal::UnitTestImpl::RunAllTests() /local/clang/llvm2/llvm-project/third-party/unittest/googletest/src/gtest.cc:5337:24
  #37 0x00007f4380c991e4 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /local/clang/llvm2/llvm-project/third-party/unittest/googletest/src/gtest.cc:2433:3
  #38 0x00007f4380c7d472 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /local/clang/llvm2/llvm-project/third-party/unittest/googletest/src/gtest.cc:2488:5
  #39 0x00007f4380c6c9aa testing::UnitTest::Run() /local/clang/llvm2/llvm-project/third-party/unittest/googletest/src/gtest.cc:4925:10
  #40 0x00007f43844c4d01 RUN_ALL_TESTS() /local/clang/llvm2/llvm-project/third-party/unittest/googletest/include/gtest/gtest.h:2472:3
  #41 0x00007f43844c4c40 main /local/clang/llvm2/llvm-project/third-party/unittest/UnitTestMain/TestMain.cpp:55:3
  #42 0x00007f437fa23c87 __libc_start_main /build/glibc-CVJwZb/glibc-2.27/csu/../csu/libc-start.c:344:0
  #43 0x00000000005ee18a _start (./tools/clang/unittests/AST/ASTTests+0x5ee18a)


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D142607/new/

https://reviews.llvm.org/D142607



More information about the cfe-commits mailing list