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

    <tr>
        <th>Summary</th>
        <td>
            [Inline] Assert getOperand() out of range! failed.
        </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>
    Reduced LLVM IR
```llvm ir
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128"
target triple = "riscv64-unknown-linux-gnu"

define fastcc void @w() {
entry:
 br label %if.then

land.end.thread:                                  ; No predecessors!
  br label %if.then

if.then: ; preds = %land.end.thread, %entry
  %conv246 = phi i8 [ 0, %land.end.thread ], [ 0, %entry ]
  %0 = load i32, ptr null, align 4
  %.fr = freeze i32 %0
  %conv17 = trunc i32 %.fr to i8
  %cmp21 = icmp eq i8 %conv246, %conv17
  ret void
}

define noundef i32 @main() {
entry:
  call fastcc void @w()
  ret i32 0
}
```

Backtrace:
```
opt: /scratch/tc-testing/tc-apr-2/llvm/llvm/include/llvm/IR/User.h:170: llvm::Value* llvm::User::getOperand(unsigned int) const: Assertion `i < NumUserOperands && "getOperand() out of range!"' failed.
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-apr-2/build-rv64gcv/build-llvm-linux/bin/opt --passes=inline reduced.ll
 #0 0x0000596575f89b60 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2d84b60)
 #1 0x0000596575f86f6f llvm::sys::RunSignalHandlers() (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2d81f6f)
 #2 0x0000596575f870c5 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007c2e96442520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007c2e964969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007c2e964969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007c2e964969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x00007c2e96442476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007c2e964287f3 abort ./stdlib/abort.c:81:7
 #9 0x00007c2e9642871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007c2e96439e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x00005965756eb338 (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x24e6338)
#12 0x00005965756f45a5 bool handleGuaranteedNonPoisonOps<llvm::mustTriggerUB(llvm::Instruction const*, llvm::SmallPtrSetImpl<llvm::Value const*> const&)::'lambda'(llvm::Value const*)>(llvm::Instruction const*, llvm::mustTriggerUB(llvm::Instruction const*, llvm::SmallPtrSetImpl<llvm::Value const*> const&)::'lambda'(llvm::Value const*) const&) ValueTracking.cpp:0:0
#13 0x00005965756f593c programUndefinedIfUndefOrPoison(llvm::Value const*, bool) ValueTracking.cpp:0:0
#14 0x0000596575703516 isGuaranteedNotToBeUndefOrPoison(llvm::Value const*, llvm::AssumptionCache*, llvm::Instruction const*, llvm::DominatorTree const*, unsigned int, UndefPoisonKind) ValueTracking.cpp:0:0
#15 0x000059657570ac94 computeKnownBits(llvm::Value const*, llvm::APInt const&, llvm::KnownBits&, unsigned int, llvm::SimplifyQuery const&) ValueTracking.cpp:0:0
#16 0x000059657570e278 llvm::computeKnownBits(llvm::Value const*, llvm::KnownBits&, unsigned int, llvm::SimplifyQuery const&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2509278)
#17 0x000059657570bcee computeKnownBits(llvm::Value const*, llvm::APInt const&, llvm::KnownBits&, unsigned int, llvm::SimplifyQuery const&) ValueTracking.cpp:0:0
#18 0x0000596575706dda isKnownNonZeroFromOperator(llvm::Operator const*, llvm::APInt const&, unsigned int, llvm::SimplifyQuery const&) ValueTracking.cpp:0:0
#19 0x0000596575708b34 isKnownNonZero(llvm::Value const*, llvm::APInt const&, unsigned int, llvm::SimplifyQuery const&) ValueTracking.cpp:0:0
#20 0x000059657571809f isKnownNonZero(llvm::Value const*, unsigned int, llvm::SimplifyQuery const&) ValueTracking.cpp:0:0
#21 0x0000596575718f44 llvm::isKnownNonZero(llvm::Value const*, llvm::DataLayout const&, unsigned int, llvm::AssumptionCache*, llvm::Instruction const*, llvm::DominatorTree const*, bool) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2513f44)
#22 0x00005965754f9cae simplifyICmpInst(unsigned int, llvm::Value*, llvm::Value*, llvm::SimplifyQuery const&, unsigned int) InstructionSimplify.cpp:0:0
#23 0x00005965754f59c8 simplifyInstructionWithOperands(llvm::Instruction*, llvm::ArrayRef<llvm::Value*>, llvm::SimplifyQuery const&, unsigned int) InstructionSimplify.cpp:0:0
#24 0x000059657550765a llvm::simplifyInstruction(llvm::Instruction*, llvm::SimplifyQuery const&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x230265a)
#25 0x0000596575186e0b llvm::CloneAndPruneIntoFromInst(llvm::Function*, llvm::Function const*, llvm::Instruction const*, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false>>>&, bool, llvm::SmallVectorImpl<llvm::ReturnInst*>&, char const*, llvm::ClonedCodeInfo*) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1f81e0b)
#26 0x0000596575187069 llvm::CloneAndPruneFunctionInto(llvm::Function*, llvm::Function const*, llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false>>>&, bool, llvm::SmallVectorImpl<llvm::ReturnInst*>&, char const*, llvm::ClonedCodeInfo*) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1f82069)
#27 0x00005965751f39ff llvm::InlineFunction(llvm::CallBase&, llvm::InlineFunctionInfo&, bool, llvm::AAResults*, bool, llvm::Function*) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1fee9ff)
#28 0x000059657480a100 llvm::InlinerPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x1605100)
#29 0x0000596573f11426 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::InlinerPass, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0xd0c426)
#30 0x00005965753ea04d llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x21e504d)
#31 0x0000596573f0deb6 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0xd08eb6)
#32 0x00005965753ebdad llvm::ModuleToPostOrderCGSCCPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x21e6dad)
#33 0x0000596573f0de66 llvm::detail::PassModel<llvm::Module, llvm::ModuleToPostOrderCGSCCPassAdaptor, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0xd08e66)
#34 0x0000596575daccb1 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x2ba7cb1)
#35 0x0000596573787ce5 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-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x582ce5)
#36 0x000059657377a316 optMain (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x575316)
#37 0x00007c2e96429d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#38 0x00007c2e96429e40 call_init ./csu/../csu/libc-start.c:128:20
#39 0x00007c2e96429e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#40 0x000059657376ff95 _start (/scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt+0x56af95)
zsh: IOT instruction (core dumped) /scratch/tc-testing/tc-apr-2/build-rv64gcv/build-llvm-linux/bin/opt
```
Godbolt: https://godbolt.org/z/WoaEY7heK

>From some basic printf debugging: The `%.fr = freeze i32 %0` insn triggers this assert.

Found via fuzzer.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1zGynW_jXtG0oqmv6-8IUsRxnXxIlf28nUuzcqGmiJNYJeoJ04v34LWrIafSR2JqrZmUrKsVtweDgfDwdoHWwMX0jGzqPsIsouz3Bnl0qft9hqTh5Gmj8qc1Yr-nR-y2hHGAXv3n26Ble3EbyM4CTKYf8jxOMKcN23WqwXzAKKLRb4SXUWRMkliBBio1WUTNiojZJJnvpfI_78EKMySiYxKkcyQX3bnWtDKIC1mreCbSA1N-QxT0edfJDqsxwJLrsvo4Xsnof1vylruGSgwcYSAh4VpyBK4efI4VcgKi56MSatfoqS9SBQayBwzQSIUMabsV0yOQQVWNIxk3Rsl5phGiUT8N1_UXIB3ivQakYZYcYobSIUr-f73oSbpmTicRyIWXsi21UGTV1rb9AaPUIZUfIRpbkf1C454CWIsgsA1-I7ICDKLn3PQMQj-o4tKvR4QmEKeIKcYGs1kJ0Q7hkLvpAgHciPG-1HNJqxr8yN8Sg7esaFF7K6k2Qj40ZaBXg5lF21KPainKxawP7jrXq2da13j7gZppn1LFh7t7g8QBapOklZ00-dwhXm8jt8AQQLcYRkw5kdItyderOWhppcYPJgNSbseY4dMdVazwY0M0RjS5YRmlkyssxYLhf9B9zqEYrQzC3S7R8uiego2zZc3UZo9tEwPV66dVhAB-z7kkmUTD5h0bEIDZuccP-0YPZDyzSWNEJlJ31SoYBL67xFlDRey4kxTFuuJIhyyEGUTMH7buVQ1oMNiFAeodyt7ADSwbhEohqgsVwwt2QQilABGswFo-PeGzfv3kzu3gDT1StuAQZ1twCatUpbR5qlta1x-qJZhGYLbpddPSZqFbpm1Gr1b0asc5ExHTMRmgEsnTXeYcAuGSAamyWoN9FZT39nMXkAtFu1z-GC437Z32i10HgFsF50KyateXHU6o4LOtKPebogj8-fvaY-2bkmR8yZai0YjVpsDDNRcsmlcCTWfd4eC7EmYIQSCOAXCCHMqjwrsqas6hwOwmqeTP9wo7m03qh7z0FUboU0_jxXxmqGVz5m0020fbR-sl0RuoBfEC3TOofbpRShJN6xJG_y5pAlt5284wuJxW9YUsFczi1PrWzc5E2gLNpRtoAkA4FaESrXXuybzZi0jkvQ_38GStZABUGsytMUZQiuTRG8jtDsS5nP83S4GboOMjZqnHv1_JBAuTTErPKqIWA-b_uNYP7AhZjzVSuYYy_2i3gcoZlsrYjQbCg2JlEySd2uXuRb_Owl-NIyLbH4JnLhTwkDb-SHkIfDvglXVjtwxa5z0yIHC-Pj4ZH6xwjNxv7Tk6GsdUmiVYY7ImjMDfPYqHDHmC10GUKjsmgSgGuXnjyUpX34fFOvXews3iJUewhxDeZSzN3eO6fK7VEei0tvrmtemQXBPVwcF06lddjd-oEhYFKxKn8dlfyQZyo5zHBR5qxOkvKEKy1leZKUgQbhSsubNMMZqJUSYOkX2tsOaywtY_S9kjeKGyU_uK1huk0dq87Ye80XC6Y_XgSZ70oaqzvil0C_taGJy39bibsVFuLG6jtmr1atCHD9Nrodl7zZPHsfepEIFQKvaoojVAQz74x18m9eqdrfwqzhWOB73f7zwOViPx-6cCc74c6qhIC233E_yv40R68a__hB9_H-pgZTT5YXzp4GsxcwyeIccDPkmL1XF-w102_7JsZ0q9ZFZYrJku31fz9sl2rFJbZK32sWzhIe1KbAa9jr9zt3564X2Z_t2I9JlQKiVm1n2e_uUnbBrXm5vTdX0g4IMOwboOWH9B9Q1W1VvHn6v47pp9fSKd8xiKGiHGD_sGk_Q_3TpdEMVqgI02ix44iaeAL9fSNb7hiUU4oBN37290r-i2k102rl7x1W6cC0TeOLrTuRDdWODWWdpDs2_ImQnEZpFN44iriEVfM6pU-kWLyrWJOmA-wf9Osltvhd_-rrZc49ZZbfbGUnTB1x0qTpMHWg8ASWNhXBDJh1pK6mq_bKK1ged8nmfcNLWo9RYNflFRg4cjPoMDGSHQOyipRbA7Yof3C73Ly9OHae2l93WuOnW9bsH6H6w9PJrQvPLBks8gwP7837dr7Ytr9i70ogyjMcEDA8lcRlzmA90HIqlGQTSW90J9mVtD7vrzm5lZp18rCRm44ji_H7y9UH-xq33zpEBwP-YPhhk8o-_XYYbKpkwxcvhnx-O3K3wtped5Z9iZJpg4VhjoP9T0-0PofsXQY-MWKV3rsM3DLbaXn1fBdYg5AlPrZ7-nDQqaLsSjZqfQs4GV_ipowZrAO-5Dt8KWBeHePLJvqONz-FL7_Y8NeyAcG8CtgQnnzjJqmaJljfgm9pEFBgioW4wIbtHXHDMb1hR7w5mdwy0wl3Gp4clgiIdlLfMFY1TeCb4BCdlhDHEO7ZqW-wWfNJd6GH3uGvT85LbzVul2v6TKd7_ppILJ4MN9dY4gXTAaWOQQzHhzIo3zLvGzIhDd_eTacfW4ot6-Nx6n0szmEWQxh4OzjuJ00cpygf6EiZxVysX9djY64VZeLVvhrG7PRB-JMRcJnoF69ewysKSYqCd7Q7XwElDMOUDlT0VPpBB_3izD-BMyhmGUxpQJo4zEWQsvrn56J_IPX-Djr-Wh6vTKklq8OUinZSak3xMKVeK9oJdq9ulLEfNGXa6-zYPqG4tUofDkE_7FUuXw9ZO_G0OSKnOMwRyV6OyF-XIzYGT1_lux9wzjHS_y973NEuD2kXvsqhmJA6fkE6PeTmf67fUI0LUseB44I3RElRFoRlA711J53vbnjL3OE4MPXOai4Xt6w5RNM9D9z7wsVrTJYeZ3Ko9x2vNdZP7lroL9B7UkqJD51tOzvj4gDIn-o-Ys7Bt5TeJ6JbcLm_s23ljaV9W7O5qCbTvh5u6EaHdeFCx_Tmi-I3e6iqtXPrLsD-U29F_-3kcalPTPOGM72R21ygX_f3hHzMSkRYFtAxD-lY4CTOgWrtNebyhIoUWRKHCWWnAAZVtIJgPhe8JnNjsbZzgoWYP5eaENPtF8Osy20ODfLlhZmv4sm3s-7WxlQshb6ccs4lt7sT9Y8OfeTR--oWX0CMtq-598plPGhgyiErDoInReXUfsZOYRivvGmqDPSoJwxXjptqy5uvxvkSXH24B3zwyjlCJVGa-UpERnsi_2xtDhWjvlW0VsKXeu7UWvYdY6XdlF8jNPtD4Tf_XyzZ78Nq15lWK2DUioEaG05Aq7m0DaCs7hYLp24yAfdLBtyEx4uIc-icIYHty1wMsEtuAPa1p-NgOtVJCh45Bk339SvT4zN6ntAqqfAZO4-LGMWwTEt0tjyvWJYwmhVlQbOaJIQkBUrTFJUVQUVN0Rk_RxClMIUJjNMYoXHCCooqlJI6bdIYoyiFbIW5GDt3Oj-c-eLS87JI0_jM13wbX4SPkGSfge-MEIqyyzN97kNQdwsTpVBwY80WxXIrfPV-_wonyi7XVbbge_Wzm8rZs06L8x8vjfUG_DcAAP__xO60aQ">