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

    <tr>
        <th>Summary</th>
        <td>
            [RISC-V] Segfault during pass 'RISC-V DAG->DAG Pattern Instruction Selection'
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

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

    <tr>
      <th>Reporter</th>
      <td>
          patrick-rivos
      </td>
    </tr>
</table>

<pre>
    Testcase:
```
int a, b;
_Bool c[2];
_Bool f;
int main() {
  for (long d = 0; d < 1; d += b)
 for (_Bool e = d; e < f; e = 1)
      a = 5 ? c[e] : 0;
}
```

LLVM IR:
```llvm ir
; ModuleID = 'bugpoint-reduced-simplified.bc'
source_filename = "reduced.ll"
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"

define void @main(<vscale x 4 x i1> %0) #0 {
entry:
  %1 = zext <vscale x 4 x i1> %0 to <vscale x 4 x i64>
 %2 = getelementptr [2 x i8], ptr null, i64 0, <vscale x 4 x i64> %1
 %wide.masked.gather = tail call <vscale x 4 x i8> @llvm.masked.gather.nxv4i8.nxv4p0(<vscale x 4 x ptr> %2, i32 0, <vscale x 4 x i1> %0, <vscale x 4 x i8> zeroinitializer)
  tail call void @llvm.masked.scatter.nxv4i32.nxv4p0(<vscale x 4 x i32> zeroinitializer, <vscale x 4 x ptr> zeroinitializer, i32 0, <vscale x 4 x i1> zeroinitializer)
  ret void
}

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(read)
declare <vscale x 4 x i8> @llvm.masked.gather.nxv4i8.nxv4p0(<vscale x 4 x ptr>, i32 immarg, <vscale x 4 x i1>, <vscale x 4 x i8>) #1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(write)
declare void @llvm.masked.scatter.nxv4i32.nxv4p0(<vscale x 4 x i32>, <vscale x 4 x ptr>, i32 immarg, <vscale x 4 x i1>) #2

attributes #0 = { "target-features"="+64bit,+v" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(read) }
attributes #2 = { nocallback nofree nosync nounwind willreturn memory(write) }
```

Backtrace:
```
> /scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/llc bugpoint-reduced-simplified.ll
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/llc bugpoint-reduced-simplified.ll
1.      Running pass 'Function Pass Manager' on module 'bugpoint-reduced-simplified.ll'.
2.      Running pass 'RISC-V DAG->DAG Pattern Instruction Selection' on function '@main'
 #0 0x000055b76e342350 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/llc+0x1c89350)
 #1 0x000055b76e33f75f llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/llc+0x1c8675f)
 #2 0x000055b76e33f8b5 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f8457242520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x000055b76cd08cd3 llvm::RISCVDAGToDAGISel::Select(llvm::SDNode*) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/llc+0x64fcd3)
 #5 0x000055b76e0d44ba llvm::SelectionDAGISel::DoInstructionSelection() (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/llc+0x1a1b4ba)
 #6 0x000055b76e0e239c llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/llc+0x1a2939c)
 #7 0x000055b76e0e5fbf llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/llc+0x1a2cfbf)
 #8 0x000055b76e0e7b35 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (.part.0) SelectionDAGISel.cpp:0:0
 #9 0x000055b76d2cddf7 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#10 0x000055b76d8b6cee llvm::FPPassManager::runOnFunction(llvm::Function&) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/llc+0x11fdcee)
#11 0x000055b76d8b6f39 llvm::FPPassManager::runOnModule(llvm::Module&) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/llc+0x11fdf39)
#12 0x000055b76d8b78a5 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/llc+0x11fe8a5)
#13 0x000055b76cbebcda compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#14 0x000055b76cb4b7c6 main (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/llc+0x4927c6)
#15 0x00007f8457229d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#16 0x00007f8457229e40 call_init ./csu/../csu/libc-start.c:128:20
#17 0x00007f8457229e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#18 0x000055b76cbe2505 _start (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/llc+0x529505)
zsh: segmentation fault (core dumped) /scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/llc
```

Godbolt: https://godbolt.org/z/c8v8h9fxo

Found via fuzzer
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEWFtz4yoS_jXkhbJKBl0f8iDHcTZVM7upydS8phAgmQ0CF6Dcfv0WSL7IsWfOnhnXmZrYuKXu_r6m6QaItaJVnF-DdAHS5RXp3Vqb6w1xRtDnmREv2l7Vmr1ff-fWUWI5wBWIlyCuQBaP_8NPoRwkAN3AGuDFIHpaaC0hBekCgXR5JG52v71mR4QCqACohCAf5RA22kCACqlVCxkEeAljgBdheAPn4xAt_IMaoHJUG7UGNzyoMf8uD2rNdriE871O-EeCNIUArwJqDtIlBLgKXkfS-fIk--Hzy5cfX-H9t88hkvKlg8KMUryAXzXrJb9fBo8A5XXfbrRQbmY46ylnMyu6jRSN4CyqKUD5oGp1byh_aoTkinR81EajUiQlQGh40xHTcgcZcUSSd9277bt81gFc8dkG4CpLwsdM7AZzVABczVExUxgNskcvOzLrjNjIvXth6UuWzHr1rPSrmkmh-rdZq_qd2vDJeCMUhy9aMAiSeDvn-ObFUiI5fIMJfINiDvAtBCiNQzYgHO9Tgitn3nfhhf6teUDxwd88w3OWoNOfn3rSt6MlgFIUDLXccck7rtzGGehT179a-PxFN9DLVO_DfOP1YewHpw0HbHvrr4LxqCP2mbOoJW7NTXDniJCQEik_WymCkSTkzlQzUm8viSjC1yY-EcKNMyMCFJBidAbpQahPPA0IPrjRQgkniBQf3BwsmT327YweQrWUOLfFitF5sMIn2gk_nwGNtE68-QuG5zkY7gL649W9W6irXlEntIKVc8b6YqC051wT-gyVbgznUGn7rihUulevQjH4KqQ03PVGwY532rwDVBhO2M4v41QSwy8w59tgiK4jpj0bkbPTPS65-aXC8GqE45_i8Afy53y-_OWQBOaTgkWcM6LuHbdjHfL1Ll_4mjcUwlnDiesNt77S4aX_RIssqYUD6AagxQtACO6yampuvjP3Wxl1zjz6TfPbmYI_b3kLQp-dIfTsvmCoMCtLDXF0DdDK0Znj1gnVDj8aXs8Qmvm5B2hV90Ky7XcQDu3Ei3y7WElJ4c-6pZSD34cvt9XjLbR93QkHideBhm-0cb4ZrJ3b-DQGaAXQqhVu3dcR1V1w8LL9mm2M_i-nDqCVsLb307yCRDEoFJU949CtOaSG2DWst3GIBvePzseb9d1mF5g4GrYZD0a3hnSQmLb3jSYsp38iRPMR0LdeKaFauCHWp06-W-wPXvCVKNL6oplDrWAXNi6_2rL4DpmPkUBnvHy7f7yZ_YDL6m4G8O2yuoMPYcUreK-sM_0A4ZFLHkaj_2aLze-JtnuIfNdncQzjtziO4zSt84zjBOE0hiFwuAK4su92GDwYoVyYpO8he1Gxf8mQ1ydtneGkAygL9UO5oT4Uf3ieAFrEb3NalDhsd_Y85lMeuMnT5hSPb716FK0i8l9EMcmN3e6iLwY1y9NmAhUdQy3qFE5AAVSMERzENqIbvy7i8LczhEdDeVMkaY4SlKJ4JCJFDdDqrciesuRwf-kf0MjqKAvwgsoEXHIIjrK4oAwfxNEn4Y9ldfddL6u7-0cuB_GQdZOkeFz-WzMOUHXB6GZJQxme4E8nwY1ZktTkAP9ueUzgL_XBEjpYQRfNDDKvk5pMwGdT8Bzhkv4S_I1m_I6rSrHbTrhldXdp3KjEJZ3gzo9wp03d_BL3IK2kXBAr6EJq-mwnGbQrq1Qr60JluSQr2tTTdVocscprnP6SlenVf9RXQtdC8S2BCatPz7a0og0xLgqHuGPTp5d_eYiPIcpYk8OzjnxvOoB4EttPQZ2w9xmXr8STlsKKOqOcH-BaPXjVbZf8vxFdZPbnDaN8v8_2LObHLBpc_gUWw0XFdMZH0aUZNLicMEBHDPKCHOav5C2h72N333O57zb7VP4nePCCpBMeeNKSal5TRiDV3UZIvgs3XRMTmk3l9x970F--_Ph6o5Xjb9sKIiU9nbfT1lcndU6zcNF2KbJJiXKaTbim05aOSlbG8OnJd-0n64hxT_5s8hRQRQCtqPVNPfJD-24Z3_gtt9o4Obb6Y6VoDXCVhjurbO81O_bKkzjcVDwJJdyxo2Horc-C9YgOV2AAV-ggnPkpoxMqp1icNI7z0sPe2y6OUgKlcQoHq5earBSVabxPzA_rIwktb_2RhIQ-1ZBeBv9UGx7OMnw4cf5hOOdPl3ea1Vo6j-zoxDY8iLQ_0a8-fKCLl2JdNm_6UH-le8XgiyCw6T8-uLli15iVuCRX_Hqex2VapmkWX62vGaFsXmc0KeoMzVE5r1HKeVKUNEVNnZArcY1ilMQ4ThDGJYoj1GBWZDGeZ3WOCa1BEvOOCBmFSwxt2qtwZLwucInKK0lqLm24ZUdI8VcYHgKEQLq8MtchMHXfWpDEUlhn91accDJczw_nJZAu4SNvh6lhvfm9E9VVb-T13z8LB27_CwAA__9uik_z">