Skip to content

Crash in aarch64 addSplitConstraints / AArch64TargetLowering #98313

@jan-wassenberg

Description

@jan-wassenberg

When building* github.com/google/highway (VQSort) with clang 17.0.6, the compiler crashes in various places:

build: CXX=~/clang17.0.6/bin/clang++ CC=~/clang17.0.6/bin/clang cmake .. && make -j.

 #3 0x00000001065d3c60 CrashRecoverySignalHandler(int) (clang17.0.6/bin/clang-17+0x101f5bc60)
 #4 0x0000000192e9b584 (/usr/lib/system/libsystem_platform.dylib+0x180477584)
 #5 0x0000000105c1b668 llvm::RAGreedy::addSplitConstraints(llvm::InterferenceCache::Cursor, llvm::BlockFrequency&) (clang17.0.6/bin/clang-17+0x1015a3668)
 #6 0x0000000105c1d4b4 llvm::RAGreedy::calculateRegionSplitCost(llvm::LiveInterval const&, llvm::AllocationOrder&, llvm::BlockFrequency&, unsigned int&, bool) (clang17.0.6/bin/clang-17+0x1015a54b4)
 #7 0x0000000105c21db4 llvm::RAGreedy::tryAssignCSRFirstTime(llvm::LiveInterval const&, llvm::AllocationOrder&, llvm::MCRegister, unsigned char&, llvm::SmallVectorImpl<llvm::Register>&) (clang17.0.6/bin/clang-17+0x1015a9db4)
 #8 0x0000000105c216ec llvm::RAGreedy::selectOrSplitImpl(llvm::LiveInterval const&, llvm::SmallVectorImpl<llvm::Register>&, llvm::SmallSet<llvm::Register, 16u, std::__1::less<llvm::Register>>&, llvm::SmallVector<std::__1::pair<llvm::LiveInterval const*, llvm::MCRegister>, 8u>&, unsigned int) (clang17.0.6/bin/clang-17+0x1015a96ec)
 #9 0x0000000105c21bb8 llvm::RAGreedy::selectOrSplit(llvm::LiveInterval const&, llvm::SmallVectorImpl<llvm::Register>&) (clang17.0.6/bin/clang-17+0x1015a9bb8)
#10 0x0000000105c0ad28 llvm::RegAllocBase::allocatePhysRegs() (clang17.0.6/bin/clang-17+0x101592d28)
#11 0x0000000105c247f4 llvm::RAGreedy::runOnMachineFunction(llvm::MachineFunction&) (clang17.0.6/bin/clang-17+0x1015ac7f4)
#12 0x0000000105ac11d4 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (clang17.0.6/bin/clang-17+0x1014491d4)
#13 0x0000000105ea8154 llvm::FPPassManager::runOnFunction(llvm::Function&) (clang17.0.6/bin/clang-17+0x101830154)
#14 0x0000000105eaef24 llvm::FPPassManager::runOnModule(llvm::Module&) (clang17.0.6/bin/clang-17+0x101836f24)
#15 0x0000000105ea8b00 llvm::legacy::PassManagerImpl::run(llvm::Module&) (clang17.0.6/bin/clang-17+0x101830b00)

and

 #3 0x0000000102d57c60 CrashRecoverySignalHandler(int) (clang17.0.6/bin/clang-17+0x101f5bc60)
 #4 0x0000000192e9b584 (/usr/lib/system/libsystem_platform.dylib+0x180477584)
 #5 0x0000000100f05874 llvm::AArch64TargetLowering::LowerCall(llvm::TargetLowering::CallLoweringInfo&, llvm::SmallVectorImpl<llvm::SDValue>&) const (clang17.0.6/bin/clang-17+0x100109874)
 #6 0x0000000103bd6168 llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const (clang17.0.6/bin/clang-17+0x102dda168)
 #7 0x0000000103befa54 llvm::SelectionDAGBuilder::lowerInvokable(llvm::TargetLowering::CallLoweringInfo&, llvm::BasicBlock const*) (clang17.0.6/bin/clang-17+0x102df3a54)
 #8 0x0000000103bdc39c llvm::SelectionDAGBuilder::LowerCallTo(llvm::CallBase const&, llvm::SDValue, bool, bool, llvm::BasicBlock const*) (clang17.0.6/bin/clang-17+0x102de039c)
 #9 0x0000000103bcab44 llvm::SelectionDAGBuilder::visitCall(llvm::CallInst const&) (clang17.0.6/bin/clang-17+0x102dceb44)
#10 0x0000000103bbe5e4 llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) (clang17.0.6/bin/clang-17+0x102dc25e4)
#11 0x0000000103c4891c llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void>, false, true>, bool&) (clang17.0.6/bin/clang-17+0x102e4c91c)
#12 0x0000000103c4812c llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (clang17.0.6/bin/clang-17+0x102e4c12c)
#13 0x0000000103c46054 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (clang17.0.6/bin/clang-17+0x102e4a054)
#14 0x00000001022451d4 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (clang17.0.6/bin/clang-17+0x1014491d4)
#15 0x000000010262c154 llvm::FPPassManager::runOnFunction(llvm::Function&) (clang17.0.6/bin/clang-17+0x101830154)
#16 0x0000000102632f24 llvm::FPPassManager::runOnModule(llvm::Module&) (clang17.0.6/bin/clang-17+0x101836f24)
#17 0x000000010262cb00 llvm::legacy::PassManagerImpl::run(llvm::Module&) (clang17.0.6/bin/clang-17+0x101830b00)

Files are attached.
vqsort_i16a_crash.zip

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions