nathanchance wrote:

I am seeing an assertion failure when building the Linux kernel for aarch64 
with LTO enabled. `cvise` spits out:

```
$ cat hda_bind.i
void snd_hda_codec_shutdown();
void hda_codec_driver_shutdown() { snd_hda_codec_shutdown(); }

$ cat hda_codec.i
struct {
  int mfg;
} hda_set_power_state_codec;
void snd_hda_codec_shutdown() {}

$ clang --target=aarch64-linux-gnu -flto=thin -fsplit-lto-unit 
-fvisibility=hidden -g -O2 -c hda_bind.i

$ clang --target=aarch64-linux-gnu -flto=thin -fsplit-lto-unit 
-fvisibility=hidden -g -O2 -c hda_codec.i

$ ld.lld -EL -maarch64elf -r -o /dev/null hda_{bind,codec}.o
ld.lld: llvm/include/llvm/Support/Casting.h:578: decltype(auto) llvm::cast(From 
*) [To = llvm::MDNode, From = llvm::Metadata]: Assertion `isa<To>(Val) && 
"cast<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and 
include the crash backtrace.
 #0 0x0000000001de7f88 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) 
(lld+0x1de7f88)
 #1 0x0000000001de5d90 llvm::sys::RunSignalHandlers() (lld+0x1de5d90)
 #2 0x0000000001de8820 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #3 0x0000ffffae6a0868 (linux-vdso.so.1+0x868)
 #4 0x0000ffffae0af71c __pthread_kill_implementation (/lib64/libc.so.6+0x8f71c)
 #5 0x0000ffffae05b63c gsignal (/lib64/libc.so.6+0x3b63c)
 #6 0x0000ffffae045b88 abort (/lib64/libc.so.6+0x25b88)
 #7 0x0000ffffae0540a0 __assert_fail_base (/lib64/libc.so.6+0x340a0)
 #8 0x0000000004801710 (anonymous 
namespace)::BitcodeReaderMetadataList::getMetadataFwdRef(unsigned int) 
MetadataLoader.cpp:0:0
 #9 0x00000000047f9524 
llvm::MetadataLoader::MetadataLoaderImpl::resolveForwardRefsAndPlaceholders((anonymous
 namespace)::(anonymous namespace)::PlaceholderQueue&) MetadataLoader.cpp:0:0
#10 0x0000000004800ca4 
llvm::MetadataLoader::MetadataLoaderImpl::getMetadataFwdRefOrLoad(unsigned int) 
MetadataLoader.cpp:0:0
#11 0x00000000047f8ae4 
llvm::MetadataLoader::MetadataLoaderImpl::parseGlobalObjectAttachment(llvm::GlobalObject&,
 llvm::ArrayRef<unsigned long>) (lld+0x47f8ae4)
#12 0x00000000047f86d0 
llvm::MetadataLoader::MetadataLoaderImpl::loadGlobalDeclAttachments() 
(lld+0x47f86d0)
#13 0x00000000047f90e8 
llvm::MetadataLoader::MetadataLoaderImpl::parseMetadata(bool) (lld+0x47f90e8)
#14 0x00000000047cfe78 (anonymous 
namespace)::BitcodeReader::materializeMetadata() BitcodeReader.cpp:0:0
#15 0x00000000034c3d80 llvm::FunctionImporter::importFunctions(llvm::Module&, 
llvm::FunctionImporter::ImportMapTy const&) (lld+0x34c3d80)
#16 0x00000000028f0ee4 llvm::lto::thinBackend(llvm::lto::Config const&, 
unsigned int, 
std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, 
std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine 
const&)>, llvm::Module&, llvm::ModuleSummaryIndex const&, 
llvm::FunctionImporter::ImportMapTy const&, llvm::DenseMap<unsigned long, 
llvm::GlobalValueSummary*, llvm::DenseMapInfo<unsigned long, void>, 
llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary*>> const&, 
llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, 
llvm::DenseMap<llvm::StringRef, unsigned int, 
llvm::DenseMapInfo<llvm::StringRef, void>, 
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int>>, 
llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0u>>*, bool, 
std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream, 
std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine 
const&)>, std::vector<unsigned char, std::allocator<unsigned char>> const&) 
(lld+0x28f0ee4)
#17 0x00000000028e4798 (anonymous 
namespace)::InProcessThinBackend::runThinLTOBackendThread(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream,
 std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine 
const&)>, llvm::FileCache, unsigned int, llvm::BitcodeModule, 
llvm::ModuleSummaryIndex&, llvm::FunctionImporter::ImportMapTy const&, 
llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void>> 
const&, std::map<unsigned long, llvm::GlobalValue::LinkageTypes, 
std::less<unsigned long>, std::allocator<std::pair<unsigned long const, 
llvm::GlobalValue::LinkageTypes>>> const&, llvm::DenseMap<unsigned long, 
llvm::GlobalValueSummary*, llvm::DenseMapInfo<unsigned long, void>, 
llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary*>> const&, 
llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, 
llvm::DenseMap<llvm::StringRef, unsigned int, 
llvm::DenseMapInfo<llvm::StringRef, void>, 
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int>>, 
llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 
0u>>&)::'lambda'(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream,
 std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine 
const&)>)::operator()(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream,
 std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine 
const&)>) const LTO.cpp:0:0
#18 0x00000000028e3c98 (anonymous 
namespace)::InProcessThinBackend::runThinLTOBackendThread(std::function<llvm::Expected<std::unique_ptr<llvm::CachedFileStream,
 std::default_delete<llvm::CachedFileStream>>> (unsigned int, llvm::Twine 
const&)>, llvm::FileCache, unsigned int, llvm::BitcodeModule, 
llvm::ModuleSummaryIndex&, llvm::FunctionImporter::ImportMapTy const&, 
llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void>> 
const&, std::map<unsigned long, llvm::GlobalValue::LinkageTypes, 
std::less<unsigned long>, std::allocator<std::pair<unsigned long const, 
llvm::GlobalValue::LinkageTypes>>> const&, llvm::DenseMap<unsigned long, 
llvm::GlobalValueSummary*, llvm::DenseMapInfo<unsigned long, void>, 
llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary*>> const&, 
llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, 
llvm::DenseMap<llvm::StringRef, unsigned int, 
llvm::DenseMapInfo<llvm::StringRef, void>, 
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int>>, 
llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0u>>&) 
LTO.cpp:0:0
#19 0x00000000028e4384 std::_Function_handler<void (), std::_Bind<(anonymous 
namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule, 
llvm::FunctionImporter::ImportMapTy const&, llvm::DenseSet<llvm::ValueInfo, 
llvm::DenseMapInfo<llvm::ValueInfo, void>> const&, std::map<unsigned long, 
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>, 
std::allocator<std::pair<unsigned long const, 
llvm::GlobalValue::LinkageTypes>>> const&, llvm::MapVector<llvm::StringRef, 
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int, 
llvm::DenseMapInfo<llvm::StringRef, void>, 
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int>>, 
llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 
0u>>&)::'lambda'(llvm::BitcodeModule, llvm::ModuleSummaryIndex&, 
llvm::FunctionImporter::ImportMapTy const&, llvm::DenseSet<llvm::ValueInfo, 
llvm::DenseMapInfo<llvm::ValueInfo, void>> const&, std::map<unsigned long, 
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>, 
std::allocator<std::pair<unsigned long const, 
llvm::GlobalValue::LinkageTypes>>> const&, llvm::DenseMap<unsigned long, 
llvm::GlobalValueSummary*, llvm::DenseMapInfo<unsigned long, void>, 
llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary*>> const&, 
llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, 
llvm::DenseMap<llvm::StringRef, unsigned int, 
llvm::DenseMapInfo<llvm::StringRef, void>, 
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int>>, 
llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 0u>>&) 
(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>, 
std::reference_wrapper<llvm::FunctionImporter::ImportMapTy const>, 
std::reference_wrapper<llvm::DenseSet<llvm::ValueInfo, 
llvm::DenseMapInfo<llvm::ValueInfo, void>> const>, 
std::reference_wrapper<std::map<unsigned long, llvm::GlobalValue::LinkageTypes, 
std::less<unsigned long>, std::allocator<std::pair<unsigned long const, 
llvm::GlobalValue::LinkageTypes>>> const>, 
std::reference_wrapper<llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*, 
llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned 
long, llvm::GlobalValueSummary*>> const>, 
std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule, 
llvm::DenseMap<llvm::StringRef, unsigned int, 
llvm::DenseMapInfo<llvm::StringRef, void>, 
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int>>, 
llvm::SmallVector<std::pair<llvm::StringRef, llvm::BitcodeModule>, 
0u>>>)>>::_M_invoke(std::_Any_data const&) LTO.cpp:0:0
#20 0x000000000212dde8 
std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base, 
std::__future_base::_Result_base::_Deleter> (), 
std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>,
 std::__future_base::_Result_base::_Deleter>, 
std::thread::_Invoker<std::tuple<std::function<void ()>>>, 
void>>::_M_invoke(std::_Any_data const&) BalancedPartitioning.cpp:0:0
#21 0x0000000001e284f4 
std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base,
 std::__future_base::_Result_base::_Deleter> ()>*, bool*) Driver.cpp:0:0
#22 0x0000ffffae0b3260 __pthread_once_slow.isra.0 (/lib64/libc.so.6+0x93260)
#23 0x0000ffffae0b3324 pthread_once@@GLIBC_2.34 (/lib64/libc.so.6+0x93324)
#24 0x000000000212e148 
std::__future_base::_Deferred_state<std::thread::_Invoker<std::tuple<std::function<void
 ()>>>, void>::_M_complete_async() BalancedPartitioning.cpp:0:0
#25 0x000000000212e1e0 std::_Function_handler<void (), std::shared_future<void> 
llvm::ThreadPoolInterface::asyncImpl<void>(std::function<void ()>, 
llvm::ThreadPoolTaskGroup*)::'lambda'()>::_M_invoke(std::_Any_data const&) 
BalancedPartitioning.cpp:0:0
#26 0x000000000213503c 
llvm::StdThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) (lld+0x213503c)
#27 0x00000000021363e4 void* 
llvm::thread::ThreadProxy<std::tuple<llvm::StdThreadPool::grow(int)::$_0>>(void*)
 ThreadPool.cpp:0:0
#28 0x0000ffffae0ad894 start_thread (/lib64/libc.so.6+0x8d894)
#29 0x0000ffffae11860c thread_start (/lib64/libc.so.6+0xf860c)
```

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

Reply via email to