vbe-sc wrote:

> I'm hitting an assertion on some Firefox code after this landed:
> 
> ```
> clang++: /tmp/llvm/llvm/include/llvm/Support/Casting.h:566: decltype(auto) 
> llvm::cast(const From &) [To = cl
> ang::RecordType, From = clang::QualType]: Assertion `isa<To>(Val) && 
> "cast<Ty>() argument of incompatible ty
> pe!"' failed.
> (...)
> 1.      
> /tmp/g/obj-x86_64-pc-linux-gnu/dist/include/mozilla/MozPromise.h:1348:5 
> <Spelling=/tmp/g/obj-x86_64-
> pc-linux-gnu/dist/include/mozilla/MozPromise.h:1348:38>: current parser token 
> '&&'
> 2.      
> /tmp/g/obj-x86_64-pc-linux-gnu/dist/include/mozilla/MozPromise.h:48:1: 
> parsing namespace 'mozilla'
> 3.      
> /tmp/g/obj-x86_64-pc-linux-gnu/dist/include/mozilla/MozPromise.h:1339:1: 
> parsing struct/union/class body 'mozilla::MozPromise::Private'
> 4.      
> /tmp/g/obj-x86_64-pc-linux-gnu/dist/include/mozilla/MozPromise.h:1347:75: 
> parsing function body 'mozilla::MozPromise::Private::Resolve'
> 5.      
> /tmp/g/obj-x86_64-pc-linux-gnu/dist/include/mozilla/MozPromise.h:1347:75: in 
> compound statement ('{}')
> 6.      
> /tmp/g/obj-x86_64-pc-linux-gnu/dist/include/mozilla/MozPromise.h:1348:5 
> <Spelling=/tmp/g/obj-x86_64-pc-linux-gnu/dist/include/mozilla/Assertions.h:468:6>:
>  in compound statement ('{}')
>   #0 0x00007f5c64d183f9 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) 
> /tmp/llvm/llvm/lib/Support/Unix/Signals.inc:723:11
>   #1 0x00007f5c64d188ab PrintStackTraceSignalHandler(void*) 
> /tmp/llvm/llvm/lib/Support/Unix/Signals.inc:798:1 
>   #2 0x00007f5c64d16b6f llvm::sys::RunSignalHandlers() 
> /tmp/llvm/llvm/lib/Support/Signals.cpp:105:5
>   #3 0x00007f5c64d17d69 llvm::sys::CleanupOnSignal(unsigned long) 
> /tmp/llvm/llvm/lib/Support/Unix/Signals.inc:368:1
>   #4 0x00007f5c64bca842 (anonymous 
> namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) 
> /tmp/llvm/llvm/lib/Support/CrashRecoveryContext.cpp:0:7
>   #5 0x00007f5c64bcaba6 CrashRecoverySignalHandler(int) 
> /tmp/llvm/llvm/lib/Support/CrashRecoveryContext.cpp:391:1
>   #6 0x00007f5c62e5b050 (/lib/x86_64-linux-gnu/libc.so.6+0x3c050)
>   #7 0x00007f5c62ea9ebc __pthread_kill_implementation 
> ./nptl/pthread_kill.c:44:76
>   #8 0x00007f5c62e5afb2 raise ./signal/../sysdeps/posix/raise.c:27:6
>   #9 0x00007f5c62e45472 abort ./stdlib/abort.c:81:7
>  #10 0x00007f5c62e45395 _nl_load_domain ./intl/loadmsgcat.c:1177:9
>  #11 0x00007f5c62e53eb2 (/lib/x86_64-linux-gnu/libc.so.6+0x34eb2)
>  #12 0x00007f5c72cbf024 decltype(auto) llvm::cast<clang::RecordType, 
> clang::QualType>(clang::QualType const&) 
> /tmp/llvm/llvm/include/llvm/Support/Casting.h:567:43
>  #13 0x00007f5c72cbaaa9 clang::RecordType const* 
> clang::Type::castAs<clang::RecordType>() const 
> /tmp/llvm/obj/tools/clang/include/clang/AST/TypeNodes.inc:96:1
>  #14 0x00007f5c730e72ca 
> clang::CXXRecordDecl::FindBaseClass(clang::CXXBaseSpecifier const*, 
> clang::CXXBasePath&, clang::CXXRecordDecl const*) 
> /tmp/llvm/clang/lib/AST/CXXInheritance.cpp:371:32
>  #15 0x00007f5c730e868c 
> clang::CXXRecordDecl::isDerivedFrom(clang::CXXRecordDecl const*, 
> clang::CXXBasePaths&) const::$_0::operator()(clang::CXXBaseSpecifier const*, 
> clang::CXXBasePath&) const /tmp/llvm/clang/lib/AST/CXXInheritance.cpp:83:16
>  #16 0x00007f5c730e8625 bool llvm::function_ref<bool (clang::CXXBaseSpecifier 
> const*, 
> clang::CXXBasePath&)>::callback_fn<clang::CXXRecordDecl::isDerivedFrom(clang::CXXRecordDecl
>  const*, clang::CXXBasePaths&) const::$_0>(long, clang::CXXBaseSpecifier 
> const*, clang::CXXBasePath&) 
> /tmp/llvm/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:5
>  #17 0x00007f5c730e9cd9 llvm::function_ref<bool (clang::CXXBaseSpecifier 
> const*, clang::CXXBasePath&)>::operator()(clang::CXXBaseSpecifier const*, 
> clang::CXXBasePath&) const 
> /tmp/llvm/llvm/include/llvm/ADT/STLFunctionalExtras.h:69:5
>  #18 0x00007f5c730e6e5e 
> clang::CXXBasePaths::lookupInBases(clang::ASTContext&, clang::CXXRecordDecl 
> const*, llvm::function_ref<bool (clang::CXXBaseSpecifier const*, 
> clang::CXXBasePath&)>, bool) /tmp/llvm/clang/lib/AST/CXXInheritance.cpp:242:9
>  #19 0x00007f5c730e6586 
> clang::CXXRecordDecl::lookupInBases(llvm::function_ref<bool 
> (clang::CXXBaseSpecifier const*, clang::CXXBasePath&)>, clang::CXXBasePaths&, 
> bool) const /tmp/llvm/clang/lib/AST/CXXInheritance.cpp:314:7
>  #20 0x00007f5c730e650e 
> clang::CXXRecordDecl::isDerivedFrom(clang::CXXRecordDecl const*, 
> clang::CXXBasePaths&) const /tmp/llvm/clang/lib/AST/CXXInheritance.cpp:80:3
>  #21 0x00007f5c73dd0869 FindBestPath(clang::Sema&, (anonymous 
> namespace)::EffectiveContext const&, (anonymous namespace)::AccessTarget&, 
> clang::AccessSpecifier, clang::CXXBasePaths&) 
> /tmp/llvm/clang/lib/Sema/SemaAccess.cpp:956:8
>  #22 0x00007f5c73dcf305 IsAccessible(clang::Sema&, (anonymous 
> namespace)::EffectiveContext const&, (anonymous namespace)::AccessTarget&) 
> /tmp/llvm/clang/lib/Sema/SemaAccess.cpp:1402:16
>  #23 0x00007f5c73dccdee CheckEffectiveAccess(clang::Sema&, (anonymous 
> namespace)::EffectiveContext const&, clang::SourceLocation, (anonymous 
> namespace)::AccessTarget&) /tmp/llvm/clang/lib/Sema/SemaAccess.cpp:1437:3
>  #24 0x00007f5c73dcd379 CheckAccess(clang::Sema&, clang::SourceLocation, 
> (anonymous namespace)::AccessTarget&) 
> /tmp/llvm/clang/lib/Sema/SemaAccess.cpp:1501:3
>  #25 0x00007f5c73dcedde clang::Sema::CheckLookupAccess(clang::LookupResult 
> const&) /tmp/llvm/clang/lib/Sema/SemaAccess.cpp:1922:5
>  #26 0x00007f5c72ba1a83 clang::LookupResult::diagnoseAccess() 
> /tmp/llvm/clang/include/clang/Sema/Lookup.h:765:3
> ```

Thanks for this important information.  Do you have a small code reproduction 
for this problem? It would help us to fix it as soon as possible 

https://github.com/llvm/llvm-project/pull/118003
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to