<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/58911>58911</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Segfault in ARM instruction scheduling
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:ARM,
            crash
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          ostannard
      </td>
    </tr>
</table>

<pre>
    This code causes a segfault during instruction scheduling when compiled for armv7-a or armv8-a at most optimisation levels:

```c
volatile long long a;
unsigned d;

void f() {
  a = 0;
  a = d ? -(long long)d : d;
}
```
```
$ ../ac6/build-llvm-dbg/bin/clang --target=arm-none-eabi -march=armv7-a -c test.c -O1
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: ../ac6/build-llvm-dbg/bin/clang --target=arm-none-eabi -march=armv7-a -c test.c -O1
1.      <eof> parser at end of file
2.      Code generation
3.      Running pass 'Function Pass Manager' on module 'test.c'.
4.      Running pass 'ARM Instruction Selection' on function '@f'
 #0 0x000055ea48d9eb4e llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (.localalias) /work/ac6/main/llvm/lib/Support/Unix/Signals.inc:569:22
 #1 0x000055ea48d9ec09 PrintStackTraceSignalHandler(void*) /work/ac6/main/llvm/lib/Support/Unix/Signals.inc:636:1
 #2 0x000055ea48d9c814 llvm::sys::RunSignalHandlers() (.localalias) /work/ac6/main/llvm/lib/Support/Signals.cpp:104:20
 #3 0x000055ea48d9e35b llvm::sys::CleanupOnSignal(unsigned long) /work/ac6/main/llvm/lib/Support/Unix/Signals.inc:361:31
 #4 0x000055ea48caac81 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) /work/ac6/main/llvm/lib/Support/CrashRecoveryContext.cpp:77:5
 #5 0x000055ea48cab1fc CrashRecoverySignalHandler(int) /work/ac6/main/llvm/lib/Support/CrashRecoveryContext.cpp:398:1
 #6 0x00007f1cd7e01420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #7 0x000055ea456847b6 llvm::TargetRegisterClass::getID() const /work/ac6/main/llvm/include/llvm/CodeGen/TargetRegisterInfo.h:75:35
 #8 0x000055ea4aa2bf22 (anonymous namespace)::RegReductionPQBase::unscheduledNode(llvm::SUnit*) /work/ac6/main/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:2309:56
 #9 0x000055ea4aa26127 (anonymous namespace)::ScheduleDAGRRList::UnscheduleNodeBottomUp(llvm::SUnit*) /work/ac6/main/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:923:1
#10 0x000055ea4aa2634a (anonymous namespace)::ScheduleDAGRRList::BacktrackBottomUp(llvm::SUnit*, llvm::SUnit*) /work/ac6/main/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:955:5
#11 0x000055ea4aa296ad (anonymous namespace)::ScheduleDAGRRList::PickNodeToScheduleBottomUp() /work/ac6/main/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1531:17
#12 0x000055ea4aa29f9c (anonymous namespace)::ScheduleDAGRRList::ListScheduleBottomUp() /work/ac6/main/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:1630:43
#13 0x000055ea4aa23db6 (anonymous namespace)::ScheduleDAGRRList::Schedule() /work/ac6/main/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp:383:3
#14 0x000055ea4aa355d1 llvm::ScheduleDAGSDNodes::Run(llvm::SelectionDAG*, llvm::MachineBasicBlock*) /work/ac6/main/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp:64:1
#15 0x000055ea4aa0a4fd llvm::SelectionDAGISel::CodeGenAndEmitDAG() (.localalias) /work/ac6/main/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:950:61
#16 0x000055ea4aa0899b llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, bool&) (.localalias) /work/ac6/main/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:688:1
#17 0x000055ea4aa0d8be llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (.localalias) /work/ac6/main/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1603:33
#18 0x000055ea4aa0743f llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.localalias) /work/ac6/main/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:468:7
#19 0x000055ea4626dd52 (anonymous namespace)::ARMDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /work/ac6/main/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp:67:12
#20 0x000055ea47b09908 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.localalias) /work/ac6/main/llvm/lib/CodeGen/MachineFunctionPass.cpp:91:33
#21 0x000055ea48249ece llvm::FPPassManager::runOnFunction(llvm::Function&) (.localalias) /work/ac6/main/llvm/lib/IR/LegacyPassManager.cpp:1430:20
#22 0x000055ea4824a197 llvm::FPPassManager::runOnModule(llvm::Module&) (.localalias) /work/ac6/main/llvm/lib/IR/LegacyPassManager.cpp:1476:13
#23 0x000055ea4824a609 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /work/ac6/main/llvm/lib/IR/LegacyPassManager.cpp:1545:20
#24 0x000055ea4824552a llvm::legacy::PassManagerImpl::run(llvm::Module&) (.localalias) /work/ac6/main/llvm/lib/IR/LegacyPassManager.cpp:535:13
#25 0x000055ea4824aedf llvm::legacy::PassManager::run(llvm::Module&) /work/ac6/main/llvm/lib/IR/LegacyPassManager.cpp:1673:1
#26 0x000055ea49c8ca02 (anonymous namespace)::EmitAssemblyHelper::RunCodegenPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile> >&) /work/ac6/main/clang/lib/CodeGen/BackendUtil.cpp:1062:51
#27 0x000055ea49c8cc0a (anonymous namespace)::EmitAssemblyHelper::EmitAssembly(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) /work/ac6/main/clang/lib/CodeGen/BackendUtil.cpp:1087:17
#28 0x000055ea49c8dc84 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream> >) /work/ac6/main/clang/lib/CodeGen/BackendUtil.cpp:1243:25
#29 0x000055ea4a28b216 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) /work/ac6/main/clang/lib/CodeGen/CodeGenAction.cpp:381:24
#30 0x000055ea4c819ac9 clang::ParseAST(clang::Sema&, bool, bool) (.localalias) /work/ac6/main/clang/lib/Parse/ParseAST.cpp:203:14
#31 0x000055ea4a0c8005 clang::ASTFrontendAction::ExecuteAction() (.localalias) /work/ac6/main/clang/lib/Frontend/FrontendAction.cpp:1162:11
#32 0x000055ea4a287638 clang::CodeGenAction::ExecuteAction() (.localalias) /work/ac6/main/clang/lib/CodeGen/CodeGenAction.cpp:1171:5
#33 0x000055ea4a0c78c4 clang::FrontendAction::Execute() /work/ac6/main/clang/lib/Frontend/FrontendAction.cpp:1059:38
#34 0x000055ea49ff312b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (.localalias) /work/ac6/main/clang/lib/Frontend/CompilerInstance.cpp:1044:42
#35 0x000055ea4a273071 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /work/ac6/main/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:266:38
#36 0x000055ea4558021a cc1_main(llvm::ArrayRef<char const*>, char const*, void*) /work/ac6/main/clang/tools/driver/cc1_main.cpp:250:40
#37 0x000055ea4556e15a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) /work/ac6/main/clang/tools/driver/driver.cpp:319:20
#38 0x000055ea49eaae8f clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::'lambda'()::operator()() const /work/ac6/main/clang/lib/Driver/Job.cpp:428:32
#39 0x000055ea49eab49b void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const::'lambda'()>(long) /work/ac6/main/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:40
#40 0x000055ea479033e4 llvm::function_ref<void ()>::operator()() const /work/ac6/main/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:62
#41 0x000055ea48cab40e llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (.localalias) /work/ac6/main/llvm/lib/Support/CrashRecoveryContext.cpp:434:10
#42 0x000055ea49eab0ad clang::driver::CC1Command::Execute(llvm::ArrayRef<llvm::Optional<llvm::StringRef> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, bool*) const (.localalias) /work/ac6/main/clang/lib/Driver/Job.cpp:428:7
#43 0x000055ea49e46680 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (.localalias) /work/ac6/main/clang/lib/Driver/Compilation.cpp:200:22
#44 0x000055ea49e46a0e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&, bool) const /work/ac6/main/clang/lib/Driver/Compilation.cpp:254:62
#45 0x000055ea49e58e65 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*> >&) /work/ac6/main/clang/lib/Driver/Driver.cpp:1820:28
#46 0x000055ea4556f72b clang_main(int, char**) /work/ac6/main/clang/tools/driver/driver.cpp:520:39
#47 0x000055ea4559f57c main /work/ac6/build-llvm-dbg/tools/clang/tools/driver/clang-driver.cpp:11:63
#48 0x00007f1cd787f083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#49 0x000055ea4556c7ee _start (../ac6/build-llvm-dbg/bin/clang+0xba677ee)
clang-16: error: clang frontend command failed with exit code 139 (use -v to see invocation)
clang version 16.0.0 (ssh://omitted)
Target: arm-none-unknown-eabi
Thread model: posix
InstalledDir: /work/scratch/../ac6/build-llvm-dbg/bin
clang-16: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-16: note: diagnostic msg: /tmp/test-998406.c
clang-16: note: diagnostic msg: /tmp/test-998406.sh
clang-16: note: diagnostic msg: 

********************
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztW1lz4yoW_jXOC2WXhPaHPDhbd6bSN5nEPfPoQgjZmpYlj0Dp5N_PAbQh2-1snbp173SnZAkQnO9sHA4oLpPn08U644iWCUOU1JxxRBBnq5TUuUBJXWXFCmUFF1VNRVYWiNM1S-pcFv9cswLe3GyznCUoLStEqs1jMCWouQ3hlgi0KblA5VZkm4wT1UnOHlnOJ858Yl1MrPbqW_qP6ufHMofWOUN5CYOpC5k4Z7qyLni2KmDYpCtq38qAlgkOJzhCk6CpQ4Bq4lwgq2vdliRwvUJTeKEbBt6UpfNh38HFiMj9j9hFs9kEXxHqwzWuszyZ5vnjZprEK1mQFXClOYGRplNBqhUTQATwalqUBZsyEmdouiEVXetixc0pRYJxMaNoemvrge5uLucPl4jX8SYTgCSuV6hi27ISSJRoLcRWcRdfwd8qE-s6noGg4EES0_xMt1X5H0YFPGac14zDDSJFAuKmeQ36INagExXhaxQT-kNUhLIJPkdbGKgqKeMc2M_LutLF8k3CeUkzIqCiqqWuVNlWzDTJDwI6AY3abDu5WzOk_t1V5aoiG9CZVb1hhZC0fw4f7YaCiXPOynTiXKItqTirpNoyAFSmKAUV1I1x0_hcGsuKFaxS2qwrnabyvi4KaRxb4AWa4OCqLrTh3MmCb6QgK1ZBOYKiTQmWxGQrTRfcNMxyD_Q2v_-GrgfW-MBypu6aHtN2NHieuFYqf7S6T7BjIevJgn-ex4gbJhGLXTAuqRAgEGfOn7m-uQOjF0pcCy3zsG9UkZ9LMOeKEVAjX8od2ipTw-EsLynJSZ4RrkuufpbVj06KG6Kk1mpgFsP1od5KpYW770X2JAvAqknOZ6CDMJrnR3DFuMdgjzFQK0IjgnUfX0Ehc8nqULqECZ5_EE2-48PV7knCI5JoaLv72AqyNCjjrZN6J-da8uhWWpZtuZJlVk-fM2aZ48X76DvPGSnq7W1DJZDVOdnGK34E-xzfltcB_1yDPkoIMFAyhYApP2_KmqOCbBjfKlWMGlqlW7pntHxk1fN5WQj2JK4321zXagarNtCPUtBz9E4w-0ZsWB4EUlV7QN4IUGynFBnvjzW0s6EPosiJQlNH_YakILVpEjDLdrGFlssK3E5ZsSVMG0oZmzGeQn_pu1OY5Oun6aqodcVWrMHskxkvZ9YEn1lPtgu9SJF0wwRD5J4fukHsD1RtoRz1PVtlXLDqPAenpiug9PqiMQdagn87wopmhuoLpEv-wmQLc4zrIi1naykjT7JlIKRwSCohOE4xPqZ10Os9BD_Kw97984xwpstBtXRUxJI_ysR0mA9gBeIV3qdH0vn2i_kX-dgMAU_39zcZb2UNfj1SrrLHFo2w-TbMDkew7XSvi7930CSys1KIcvN9-7kII-z02iznAGuMz3HJG_GdNZHNjyPQztFnAva83qNIwPYIcOST5I2A7zL6Q4pyUbYNBsh_GyLbc6Tbt4MeEx5jSiP6Rkzy7lPR-A4sJOau06NxRmicBDzf29C0xb8TgRNKkxrQ75r0O56X2EOV7_t5uJDq08c0psEYw4_s5huh66xg4DczegYRz48PtqGGsgai75pOwzMRWsRNE7Sf8mt4aOIMPey8SC5hoaVGfEfMdhjEaPDOD0g18wcg_BGIMIrioyB06ZDtA4llOWjFMhNyMVNWsA4aVyVMkKzpqQAAS7mShznaaDpYk0iZw71aE6YQ96kbFYI7l0aZaqTL_mTkxGWZq9XNZwnaD0NTWYORnJMwZi-U8zzPe1FzQ9bdWlTFWJ-K0PYt5XEGLmcUgVmB66RHMVZ1cVs0jqSFY2DcqftEkK4vxTiY44xAzMd-knhHg0xY4kOvi_JjYB8HqQNmuIGB9VUO25LQKqhc4ti4Q4aNECyIrSiywl1X35Jz10X6CsheBB8ssT0UtF7VNhURmzkF7EaMDo3t6k6-3GZuPgPF9T1cbtiK0OfB0K0luSr4wFYPAI8AEDsKXgDgW9mEGQO5NUW_j_hAZU8G3HfGxPtWdMxGvr0Z0Xvp91xvxHx3RL_nYTJgfq56amLvvr8-WVGNQqjfLQLP8UYS8MYSYEl6HMGLqH8vu_3AXPphIwCKaEiJddSjytBtzjnbxPnzV5ZvW9oheJX-YsWKu2zLcvAW0JFKKk-6tSErknkXR3CRTJoFf_bfmi23woxQZHJ0-7OC6GXZpkgHLyVMbapABJMzwY686FwiFYz4Lxl3AfHKbS22tbiSyeoXDjp6azDiQclp5uw624ZT30XWzfeWj6WyDUQXjEVHraOr9kOiG5b_-YT2IfwL1ZTbBxM4HPEvoaGLBsglT5qOtFhNxlxkZFWUXGSUXxYrpexKuQZNvjKSsOqByX2TWx1WD0JFo2lD-5FWOrY40ugG7vY1GYSCQm5D3rN0tJ5sfM181OFfRQWwK50f7vNA2Ezs4TDGsCLcRX4OXKw3ra3oNPOiIgXP1YaVTl8NdWP-sGgSyG-z_3aZrDjepRhknIXdjnpz_4mGdkRoNKT-Tm69ASkmbQ9sQxqN0Ouy9vcVs6NJtxqn_YXx2kSqWqHYA4LNtJtFQ7hFJtuuKsm3Ttm0IT4xWgvW6t_rEgYmqW33g1uDybat3Kzdu1lzOwp0JPCdcI_l_iaCf60Tth1Ipeg12tycAhYHITWc2i_4--v82Cv5aHmR0tmeMiOui9LUsXFs8lEdfKhkroEUlO1n5WEorwzwDuIZ09HvA8oEmNuv2cx9KYIDxwpsYwLRtPcdPgJhuzh2gP8yi7ef7oWy4KuDI7Ym6fsjqRjxn-eFFrYJotRe6uEGkei8qsiznDOcc7omVTu1zJscj1nW5oReBEUA8fKwRFJlj3L77qodv6Vape3cfo0w2hfzfGZ7BLXgz23NjWEadUPy_F-MirJZKOyB8BI_vUOpvmk9tK121wd0miEGI4SF6VBDmn60GpzbILcNTC5jq9wrg75Qz_UkNwr7Kb6dQQcz8HJJn55sWz_EMrklp9tMUqUYYzSWBUtRkUweI9HVo-6At1LNVHqxqddDzvvJZd5tRep3JjjIySZOiDxRoRyPLi-3TaZSl71gC9M0iItWMv8o4zaLhGUWyRkYbjQSS-xGsdLXQTDUnvxYVordqrYl9LLhDACXJ3mWaSGR_1-s-8V62ZwFO76C3dmGnl9A8HL1sLhp00Akv3wCornag3Z90y24ZhItshyHua8T6evV722kq8Sm36uka-bMKKikNcyZ7TubMGkX3Q8kZWrZ9lKoH3BI5heHJVxH7RQN5ILH9maR5O_uBt8aqRx0cP3K1nVMfru-H1oH-a1iBbITDbZCMEKV0YuywaFV6C-azo3lx0fxYwCkW4CoxO7AytwxYwhY2SsZA3znh7kCtXJb-NDCeycO6bRnSzKpOM3hqpcy0khrjfn5Tu557shHeSb3vJD53iFKLwb3RlS6JwA-xPXP5N5rte1iGPjZIVaa1sfV7iiu9tOgXe20kXVLq3I08zdGykb86SkqnKinYhQnR6kXUCT73Blo50hwO9ThIF1WTA0ClC_1-0y428a_-phcGKRW6KDlEngpXS2pxLIh5thZOSpPyfnqlBx2oZPulJwcJRrxmgaMId2_8iovO_isOo-JH8DbXfcapC0DDcSqSvr2uRYjSpullzyxr9QqJerc_s9MrBF7yoT-CMB21GRbc4amj_IwOQfissFScDgSAl5yuaFs-zNrZskXOV-ruEqePC83mRAs6d5pthqBpO6kdl38KMqfhTqx3TRSpwzl2Wi1-Ym2Jc-edJVaceZA9EWmgPVKwSmEQXQNd8e4t8OmopRJvTlKuvwo2vCV6r6R2Dv-Bh8mNEf254vF_PwrWny9RFe3Nze3_77-4wu6ur65fECLW1V89v0Lur-8u71fSEbqd_cduQ_VpHPw2H3XoJJfUFBVS0TX5QtZAIa02cor42IaRaFr-TP67h5AR14vh4-SRvvJxgk7tWWkEXg4ik6SUyeJnIiciEzk7PSh_QQGzF0eut__CcxJXeWnb__awgsj2z5ZnzrYdonDYo8yNwixTOqlYYJjihOcWk54kpOY5fx04p1NMI51kneijgrAs_TK8EP1cWc88S5OslNsYejHtuC_60Uzl6SW5bosiEMSpJhMIFwHV5bPJGmzslqdVKeKyrhecaiUR214XwkKJs9OM0UB9E9qsS6r01ImgApSJScK0qnC8z9B8e3d">