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

    <tr>
        <th>Summary</th>
        <td>
            AArch64 backend crashing on trivial but non-canonical code with Assertion failed: (isVirtual() && "Not a virtual register
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            backend:AArch64,
            crash-on-valid
      </td>
    </tr>

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

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

<pre>
    seeing this on `clang -O0` output

```
~/alive2-regehr/build$ cat r1.ll 
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"
target triple = "aarch64-unknown-linux-gnu"

; Function Attrs: noinline optnone
define i64 @tf_0_foo() #0 {
entry:
  %conv203 = zext i32 0 to i64
  ret i64 %conv203
}

attributes #0 = { noinline optnone }
~/alive2-regehr/build$ ~/llvm-project/for-alive/bin/llc r1.ll
Assertion failed: (isVirtual() && "Not a virtual register"), function virtRegIndex, file Register.h, line 83.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /Users/regehr/llvm-project/for-alive/bin/llc r1.ll
1.      Running pass 'Function Pass Manager' on module 'r1.ll'.
2.      Running pass 'Register Coalescer' on function '@tf_0_foo'
 #0 0x000000010bac68f4 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/Users/regehr/llvm-project/for-alive/lib/libLLVMSupport.dylib+0x1568f4)
 #1 0x000000010bac3f44 llvm::sys::RunSignalHandlers() (/Users/regehr/llvm-project/for-alive/lib/libLLVMSupport.dylib+0x153f44)
 #2 0x000000010bac73ec SignalHandler(int, __siginfo*, void*) (/Users/regehr/llvm-project/for-alive/lib/libLLVMSupport.dylib+0x1573ec)
 #3 0x000000019ad78624 (/usr/lib/system/libsystem_platform.dylib+0x1804ac624)
 #4 0x000000019ad3e88c (/usr/lib/system/libsystem_pthread.dylib+0x18047288c)
 #5 0x000000019ac47c60 (/usr/lib/system/libsystem_c.dylib+0x18037bc60)
 #6 0x000000019ac46eec (/usr/lib/system/libsystem_c.dylib+0x18037aeec)
 #7 0x000000010c4a5808 (anonymous namespace)::RegisterCoalescer::joinCopy(llvm::MachineInstr*, bool&, llvm::SmallPtrSetImpl<llvm::MachineInstr*>&) (/Users/regehr/llvm-project/for-alive/lib/libLLVMCodeGen.dylib+0x46d808)
 #8 0x000000010c4a1494 (anonymous namespace)::RegisterCoalescer::copyCoalesceWorkList(llvm::MutableArrayRef<llvm::MachineInstr*>) (/Users/regehr/llvm-project/for-alive/lib/libLLVMCodeGen.dylib+0x469494)
 #9 0x000000010c49d1c8 (anonymous namespace)::RegisterCoalescer::run(llvm::MachineFunction&) (/Users/regehr/llvm-project/for-alive/lib/libLLVMCodeGen.dylib+0x4651c8)
#10 0x000000010c49ebe4 (anonymous namespace)::RegisterCoalescerLegacy::runOnMachineFunction(llvm::MachineFunction&) (/Users/regehr/llvm-project/for-alive/lib/libLLVMCodeGen.dylib+0x466be4)
#11 0x000000010c295cf0 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/Users/regehr/llvm-project/for-alive/lib/libLLVMCodeGen.dylib+0x25dcf0)
#12 0x000000010ce386b8 llvm::FPPassManager::runOnFunction(llvm::Function&) (/Users/regehr/llvm-project/for-alive/lib/libLLVMCore.dylib+0x1bc6b8)
#13 0x000000010ce401f0 llvm::FPPassManager::runOnModule(llvm::Module&) (/Users/regehr/llvm-project/for-alive/lib/libLLVMCore.dylib+0x1c41f0)
#14 0x000000010ce38fec llvm::legacy::PassManagerImpl::run(llvm::Module&) (/Users/regehr/llvm-project/for-alive/lib/libLLVMCore.dylib+0x1bcfec)
#15 0x000000010229cbbc compileModule(char**, llvm::LLVMContext&) (/Users/regehr/llvm-project/for-alive/bin/llc+0x10001cbbc)
#16 0x000000010229ac08 main (/Users/regehr/llvm-project/for-alive/bin/llc+0x10001ac08)
#17 0x000000019a99eb98
zsh: abort      ~/llvm-project/for-alive/bin/llc r1.ll
~/alive2-regehr/build$ 
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzEWN9v47gR_mvoF8IGRerngx-U7LpdINsLkvb6GFDUSOYtRQok5Y3voX97QcmxJW_2upteWkMQRGr08ZuPMxqNuXOy1QBblNyg5MOKD35v7NZCC3u7qkx93DoAqVvs99JhozFKiVBct3j9C0EpwWbw_eARKcORktNByn8huuNKHoCuJzREd9UgVY1ojAX32EYbpTAipee2BY9r7rniRzN4jNgHjCiFdYdYCeueZgSxktHxFIbRchiu0ng8rWWOWJlPt2SUIlaOpzA6m0Q0GEQ0X2s2Pbt-DKNdGFJ64eSt7BW88OHcin0arwf9RZuveq2kHp7XrR6mZ8LBbvBu0MJLo3HpvXWIlVgbqZXUgE3vtdGASFlDEyZkGmMUE988kafGGERzRAuMKCMYZTeIlKC9PSIWsDFGNBFGHyhhI6Pf4dljySgm2JsANRpZ8BPs2Tjwyj5MBLn3VlaDB3daJXiW3XxDEU9P_OEmhptKHbp1b81vIDyiu8bY9Wgf7KQeDcS004iUpXNgR2kaLhXUQRtEc-l-ldYPXJ3dTxFNg-B_Mx5zfJjuYgutdB5sUJsWiN7i5kXqYPIA7Sddw_N4QyrADyf7zT5Mjd7lbINIeX_3sXz8iN1QdTIsUA0tttAb64OQe-_7sG2I7hDdtdLvh2ojTHfy9lunpXMDOER3mOsaSy3UUAP2e8DCcrfHFRdfvOUCwtqPnosvuB66ftpVskGkuLemtbzD3LZDB9q7SZndPxzYAHzW_qfkjgL0w6B1SN-eu7Dl2Tk678PEZ655GxTNQmp3ph5CtNNsgqBZYExfg3nRFt8arsCJM8Z5SxDNFpGdhegcY448k-kXkYqLNG9iPArLSsRKd3TTxb2V2o9q_T1oh2h-MbL865Nx3gLvxmC5xVL7KXTyn5RNyWo63939-vlx6EMUbOrjOH1DnqMk8AvhNrGPrtizJn6V_cOgH2Wrufor17Ua6eTvRDBQuBCkVwQzBgIvqISMC2rd4qcnJ1upG4NoGcYHI-vx8l14BiYXnmzGs-B1lqc0Pq06OHvGc0fnoZuG0_VTr7hvjO3m4DmJuUjpTId4ic8gz8UP4vu9BV5fwWc0z2f0kwW8iDORkh-DF0tgllUiJRfg9Ao4BfhB3t8Ac5gLns0DQ8Q8yUkegLk2-tiZwWHNO3D9mGvFKYpPWX5J8nH6NyP1remPi5z8zMVeaviknbeneKqMUaf8vNg9dlype28fwX_qeoXY7fcx2Mfx8f86HG9NDX8BPRMoTuuc5Bd18it1oriI36iOMP3xZeqfxn65k84vlRo8rxSU1vLjAzT_UYF3cb-Ii1m2FEv3izoSbw0OO-jX4uKl7rzfhiaROG1oeE-TK4-ggp_f0DtouTie_fpFf-PM_8PRtIL44uiiIglaJKIh-LusQtWf-fOqI-_tAU1q0ZCLB4uSJYDlaZXPPNjdB9IvXyr_Y-4W5m_VSqTVLMbYknhMooX03yP-efzMWsbOaeo9SIs4mqsdX6vdgJiRVrOQn9GfXtWv5vc7Uq9E81LCAvV50SWUFqKqBBam66WCs6hiz6f6Uy7rzoSvPTz7N5M9f2NP9AKPwOHCML1iyAXJccel_nMWC3CXxbLFp0JRQFXkiJS_u31oH3gV-pnx99ON2h-2ffM-f1VvWV2wgq9gG2VJTJMkomy132YxjSCNacQS0WQNpVlBi4SRVDQi5SldyS0lNCE5YTQiCWUbEUWC1AVNRUwAcoZiAh2XahOYb4xtV2OftY2SKM_zleIVKDf-bUFp6LBAh36yLMcWfWwRbxGlYwe2Nnp94Cp83FKUfFjZ7ahGNbQOxURJ591lFS-9gu0JB5-Qp04uNEBGY2_lQXKFq8FjbfRahJoiBVdYmBrwV-n3-E9qdVeDVdu3N6QnrQ5b-u8AAAD__wNBfac">