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

    <tr>
        <th>Summary</th>
        <td>
            [InstCombine][RISC-V] UNREACHABLE executed at InstCombineCompares.cpp:2788
        </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:
```c
char a;
int b;
long *c[5][5];
int main() {
  for (int d = -2041027590; d; d++)
    a |= b <= c[3][d][8] / 309383;
}
```

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

; Function Attrs: nofree norecurse nosync nounwind memory(readwrite, argmem: read, inaccessiblemem: none) uwtable vscale_range(2,1024)
define noundef signext i32 @main() #0 {
entry:
  %0 = getelementptr inbounds i8, <vscale x 2 x ptr> zeroinitializer, i64 64
  %wide.masked.gather = call <vscale x 2 x i64> @llvm.masked.gather.nxv2i64.nxv2p0(<vscale x 2 x ptr> %0, i32 8, <vscale x 2 x i1> shufflevector (<vscale x 2 x i1> insertelement (<vscale x 2 x i1> poison, i1 true, i64 0), <vscale x 2 x i1> poison, <vscale x 2 x i32> zeroinitializer), <vscale x 2 x i64> poison)
  %1 = sdiv <vscale x 2 x i64> %wide.masked.gather, shufflevector (<vscale x 2 x i64> insertelement (<vscale x 2 x i64> poison, i64 309383, i64 0), <vscale x 2 x i64> poison, <vscale x 2 x i32> zeroinitializer)
  %2 = icmp sge <vscale x 2 x i64> %1, zeroinitializer
  %3 = zext <vscale x 2 x i1> %2 to <vscale x 2 x i8>
 %4 = call i8 @llvm.vector.reduce.or.nxv2i8(<vscale x 2 x i8> %3)
  store i8 %4, ptr null, align 1
  ret i32 0
}

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(read)
declare <vscale x 2 x i64> @llvm.masked.gather.nxv2i64.nxv2p0(<vscale x 2 x ptr>, i32 immarg, <vscale x 2 x i1>, <vscale x 2 x i64>) #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i8 @llvm.vector.reduce.or.nxv2i8(<vscale x 2 x i8>) #2

; uselistorder directives
uselistorder <vscale x 2 x i64> poison, { 1, 2, 0 }

attributes #0 = { nofree norecurse nosync nounwind memory(readwrite, argmem: read, inaccessiblemem: none) uwtable vscale_range(2,1024) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic-rv64" "target-features"="+64bit,+a,+c,+d,+f,+m,+relax,+v" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(read) }
attributes #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
```

Backtrace:
```
> /scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt -passes="instcombine" reduced.ll --disable-output
Unhandled icmp predicate!
UNREACHABLE executed at /scratch/tc-testing/tc-feb-22-llvm/llvm/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp:2788!
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/opt -passes=instcombine reduced.ll --disable-output
 #0 0x00005565be2171a0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0x2ce31a0)
 #1 0x00005565be2145af llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0x2ce05af)
 #2 0x00005565be214705 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f8b9f842520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007f8b9f8969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007f8b9f8969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007f8b9f8969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x00007f8b9f842476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007f8b9f8287f3 abort ./stdlib/abort.c:81:7
 #9 0x00005565be14ca5e (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0x2c18a5e)
#10 0x00005565bd1c1139 llvm::InstCombinerImpl::foldICmpDivConstant(llvm::ICmpInst&, llvm::BinaryOperator*, llvm::APInt const&) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0x1c8d139)
#11 0x00005565bd1d710e llvm::InstCombinerImpl::foldICmpBinOpWithConstant(llvm::ICmpInst&, llvm::BinaryOperator*, llvm::APInt const&) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0x1ca310e)
#12 0x00005565bd1d7393 llvm::InstCombinerImpl::foldICmpInstWithConstant(llvm::ICmpInst&) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0x1ca3393)
#13 0x00005565bd1e46eb llvm::InstCombinerImpl::visitICmpInst(llvm::ICmpInst&) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0x1cb06eb)
#14 0x00005565bd1457a5 llvm::InstCombinerImpl::run() (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0x1c117a5)
#15 0x00005565bd146e85 combineInstructionsOverFunction(llvm::Function&, llvm::InstructionWorklist&, llvm::AAResults*, llvm::AssumptionCache&, llvm::TargetLibraryInfo&, llvm::TargetTransformInfo&, llvm::DominatorTree&, llvm::OptimizationRemarkEmitter&, llvm::BlockFrequencyInfo*, llvm::ProfileSummaryInfo*, llvm::LoopInfo*, llvm::InstCombineOptions const&) InstructionCombining.cpp:0:0
#16 0x00005565bd147ef5 llvm::InstCombinePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0x1c13ef5)
#17 0x00005565bc1e5c96 llvm::detail::PassModel<llvm::Function, llvm::InstCombinePass, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0xcb1c96)
#18 0x00005565be044751 llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0x2b10751)
#19 0x00005565bc1dd5b6 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0xca95b6)
#20 0x00005565be04344b llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0x2b0f44b)
#21 0x00005565bc1e5746 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0xcb1746)
#22 0x00005565be0412c1 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0x2b0d2c1)
#23 0x00005565bba77e55 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0x543e55)
#24 0x00005565bba6a296 optMain (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0x536296)
#25 0x00007f8b9f829d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#26 0x00007f8b9f829e40 call_init ./csu/../csu/libc-start.c:128:20
#27 0x00007f8b9f829e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#28 0x00005565bba5f5a5 _start (/scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt+0x52b5a5)
zsh: IOT instruction (core dumped) /scratch/tc-testing/tc-feb-22-llvm/build/build-llvm-linux/bin/opt reduced.ll
```

Godbolt: https://godbolt.org/z/9qdYfPTrE

Found via fuzzer.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWltz6ygS_jXkhbJLQveHPNhOvJPaczapJDNT--RCqGWzkUADyLn8-i2QL5JjJzmX1M7snMqxJGia7q8vNEJUa74UAOcomqLo4oy2ZiXVeUON4uxhpPha6rNcFs_n96ANoxpQMEHeBfImKPa6P9Y9sxVVmKJg2j1yYXC-e6qkWGJEJgxF0whFF9tLn7qmXCCSIpJhlGzaMS6lwoiklqDAKLjAI-KFvkeSKPNQMMVF90Om7i_bDsOYYpTM7IAco8Dd2MmDbvKiu6QousCIzHHgZUEa7MRBycWBkptH93sLRcugwF--_PYVX92-RqSq1jXmatMaTPFXWbQVXF04BRBJVMdhXFWIJB2Zlq1isCh5BYLWsKEkCooxQ4R0RIaqJRhcUEMr-ixbsyWDUY2CCYwaFEzi0P2M-O7GJykKJj5JRyIgXdudbTtgaxRvqv3MXLN1HI5a8SDkoxhVXLRPo6Vod8P2-s1bwQyXAk-MURoFEyxkqQCwkApYq7S908-CYSFb8chFgWuopXpGJFVAi0fFDSAyw1Qta7CqYNtsW7igjIHWPK9g0yWkAOsl7aOheQV4rRmtYKGoWAIiKUFk5nsk3HlDASUX4KYuoMTO458M5gHBKPT6bkcCb-97IIx63hkXY0Qiz4GzBANWGGEaozAXuWWsMU-tvCiYdfLgJ0zwE26MQsElfgElueCG04q_gHKaxSGOwx73R17AuKb6AYrxkpoVKDcdo1X1iq0z7qWV3zrbcNRYPK0Jj0N3bTyr3HGhrEZOkoDgo8Jz35LpVVuWFayBmS4Yj5NxoUFtkTlN1kiupXDT-tioFrZYeNZgJ4XYD3vVb336CMLHmXW4bbllPfh9h7Yu-Pok2sdsZGd5H6GOwfsQDcXrgNkkp_dgOhz6cZz2GBCHAWd1g_US3sDBtzMcstrzCRyfFxtmx83p5jLydW-KgssNI0SicB8BPN15e4fzuMuiY7lx-PQYnulmsqCnpzZSgeNHotDqYcNYtDYZzzCt-FJgf0uroEsU3uHC8GbuswLnlD3s0-Aw-T3yqlJgWiWGebCXslhF1WkD_EjYbyOe1zVVy5MRd9rHNqnS_xlI6AZYW9EukR-DZZPsh7B8vy9sZH-1grUaKm4dowCFC66AGb4G3REMOt-Pu2SKXXjYhQjbBWXgM9QYxfPWgN6sN3a5TaZ_khXTrvxCjoyiTcPFclRTs7ILfnCBCOmyNbE02lD2MGqUNA7_Ud6WJaiR5i-wI083tF15MWJNu-taggDF2Uit43BIVQI1rQK9I0VkGoc5N4jMEJnS7sK6S9Fdyu5SdxcFFX3qbteO9xb_IfJ-D_kfiNdT7Mk3sP9oEOC369IpZQ9GUXakRt86us2Fc80UNWyFyNywkQFtuFh2DyXkI0JGNrAQmectr4rt1TV2RaBtsjXTXDYGjxqqNejOVlxow2Sdc-H8ZF_m4tGo4NrqN5KtaVrTCfSrWFFRVFB0S06joOCMWsfeJJdf_3V7OZn9Mpl-ucTwBKw1UGBqvkWLgwvPEZnfKyp0KVWtEZlfCW1mW6H7TzNZN1SBHrPG1tUkSdOdYDdfLid3l1i3ec0Npjhvl1hBI5Wxq9rKmMYmQETmiMyX3KzafMzkgTg2fP4DzCAy51q31ufnmIoCc8GqtgBsVoCZonqF861px930dzb8cNHWzc7W3hi7fzdKLhWtbWJobZnhEvHnWb1n8vft3WU878nzPC-K4igH4ic-9bCbO5igYKKfdXdzo7gwTs9759Mk3RMp-riQ2iigNSJxl_RMl73Sn6wqIlPviTAIfOrtawiXP4Z6hBEtj-lx24o7vhS0-sW5utK7zcZniepFtByISg5FTbwID4TqdthWrK556_Oe-79jFGwYJWWaZ2Uakoh4G0W6wHpK40Uc9veKtoONtRzHTjw3ZCBcOOSZxVnJ8GLRmJXNsIsHXlULXjddzUxdfTFGZC4aUyEy75ONGQomod30JvGef_QR_sKAErR6k3PiNtE9NOJjnPvD3mSXZgfskkNwwyTGS-3s4Th1t4jMx-7pWRfQ2JzRSM2tIyjKNTjeJLG7_D3rdMiapEkZYJrbbOVYmaIzn2vqpPOtxnsO2cCF_JDRCD7Phf2URvuqzwbbIGsUPvP9IOtFWy9rq6u6qbrWUlbF1axuLvh6JoU21Lp4L43YPjtyk0P2HVMuqHq-bkBRIxUik2H35OZKGMzkduinBbPP0sIPsgES_hCJIvE9-DASUy6um9-5Wf1V8aCB7w09gxziEWTBh_GwvR-D41N1CrJgoFMw1AnCGPJ3dVpzzc1e5v-BIrkXQz5QJBwqEkYJjd5VRLXic9dImz4SGg0kjQ4kjSGN8KawsWKq1u1t9fUa1HajOwB533gQPL3Rv0v1YHeSr2gmk1vQbWX069jSuq0bO3hG2Qpejbx326YvPFdUPV-JUp6g2JW8R2kuZM2Fje17Ba_nuG4Mr_mLW3xvoabq4bLmxtiy4TBRVJI9zBX80YJgG3EOFLpRsuQV3LV1vZP4gOSLlM3Rjp6_XDtM9CDr9JDuqLhYvi5krLXjA2snUJ7wyxuqdd8tP2DwiaDVs-b6KxV0CQoFsyODgsvPjkY_gHLo40lfa-ZDxLK4J3cBhvJNDFq1v8oCquPSn7KKQ-u7wLB_fz2UWe6zLB6AnA4qJS8Mk8jvu78F9i2R_0bokdz3ksgfwJcNfbQoovxn-Oinwf43MhejWZQPnJ14B84ehGG_UOnOPe_lVkRrhUlBG1tEHgWgG_BN6m-GfL6vemUYDqob4h_m0yT8Nl_dqjv7IGbfAcopV_vzIs1yPwmHbkYO3Mwn7CM59Ri8_6-okdwrCBvkUjLYRuQ0SSDqVzmqdc51wxuo3MvPnqJ3RnGxvIXymHOeKDG_UrZyfCbvlKiu1H9FJWV17d4Vznl1hMkPdZ9QZ6IUfbatfYM5TKp2ycXr_L6n16bYbCV36Xe2lrzAAxgtr6k13aZWzo6tGrIxCyPlJlN0WvyTi-Itqt9A8ZKD2tLltuebr5_mjVEYQDQoPkk4dMaYkizGsjFfKRefJkYQk2F5Rg5eB5KsyDy8WFQ8ZwttqDILRqtqUVupxojMmW5fv3HbvNM7Nmi8QsEkcq8K4_2s8eGsEHruWHvBBTeHE3W3lvvIcXdv5LqPeMh-E0OSY0wHqhzT4ijzIMms2Hve6dBaURnRCHdcP81YJI96m_IXbZHEV9f3mO_3dXZyJhW4sw_oDuB-8tlG7-Os02dt_5BFLitjJTw47Ok6xlJZCV4QmWd_FP8ub-7VZX_8XLaiwGtOcdm-vIAanxXnQZEFGT2Dcz_xsijL_Ng7W50nRRxRjyYhTVlMUj_LirL0_MSDkniUZGf8nHgk9AIv8rwgI96YMRqGZUTjnGSFl0co9KCmvBpbha1gZ-646TwNssA_q2gOlXYfABIi4BG7TkQIii7O1LkDKW-XGoVexbXRey6Gm8p9Odg_QXPf1d1e3c1Gv6HoAp86wHv7mO2sVdX59x-iOcX-GwAA__-idX3M">