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

    <tr>
        <th>Summary</th>
        <td>
            Crash on valid code in instcombine
        </td>
    </tr>

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

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

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

<pre>
    The function below is a valid LLVM IR

```llvm
; ModuleID = 'reduced.ll'
source_filename = "reduced.ll"
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-linux-gnu"

define i1 @f(i8 %0, i32 %1) {
  %3 = and i32 %1, 1
  %4 = sext i8 %0 to i32
  %5 = zext i32 %4 to i64
  %6 = sub i64 0, %5
  %7 = and i64 %5, 15
  %8 = trunc i64 %7 to i32
  %9 = lshr i32 %3, %8
  %10 = and i64 %6, 15
  %11 = trunc i64 %10 to i32
 %12 = shl i32 %3, %11
  %13 = or i32 %9, %12
  %14 = zext i32 %13 to i64
  %15 = trunc i64 %14 to i16
  %16 = sext i16 %15 to i64
  %17 = icmp uge i64 0, %16
  ret i1 %17
}
```
It crashes on instcombine `opt -passes=instcombine`. Encountered in LLVM-18.

```
opt: /home/tanmay/Documents/Tools/llvm-clone/llvm/lib/IR/Instructions.cpp:3454: static llvm::CastInst* llvm::CastInst::Create(llvm::Instruction::CastOps, llvm::Value*, llvm::Type*, const llvm::Twine&, llvm::Instruction*): Assertion `castIsValid(op, S, Ty) && "Invalid cast!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ../../../../../llvm-clone/llvm/build-debug/bin/opt -passes=instcombine reduced.ll
 #0 0x00007f084cc2889a llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/tanmay/Documents/Tools/llvm-clone/llvm/lib/Support/Unix/Signals.inc:723:22
 #1 0x00007f084cc28cb6 PrintStackTraceSignalHandler(void*) /home/tanmay/Documents/Tools/llvm-clone/llvm/lib/Support/Unix/Signals.inc:798:1
 #2 0x00007f084cc25e0b llvm::sys::RunSignalHandlers() /home/tanmay/Documents/Tools/llvm-clone/llvm/lib/Support/Signals.cpp:105:20
 #3 0x00007f084cc280c8 SignalHandler(int) /home/tanmay/Documents/Tools/llvm-clone/llvm/lib/Support/Unix/Signals.inc:413:1
 #4 0x00007f084c042520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #5 0x00007f084c0969fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #6 0x00007f084c0969fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #7 0x00007f084c0969fc pthread_kill ./nptl/pthread_kill.c:89:10
 #8 0x00007f084c042476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #9 0x00007f084c0287f3 abort ./stdlib/abort.c:81:7
#10 0x00007f084c02871b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#11 0x00007f084c039e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#12 0x00007f084d6d66db llvm::CastInst::Create(llvm::Instruction::CastOps, llvm::Value*, llvm::Type*, llvm::Twine const&, llvm::Instruction*) /home/tanmay/Documents/Tools/llvm-clone/llvm/lib/IR/Instructions.cpp:3456:11
#13 0x00007f084ffce926 llvm::IRBuilderBase::CreateCast(llvm::Instruction::CastOps, llvm::Value*, llvm::Type*, llvm::Twine const&) /home/tanmay/Documents/Tools/llvm-clone/llvm/include/llvm/IR/IRBuilder.h:2116:18
#14 0x00007f084ffce84a llvm::IRBuilderBase::CreateTrunc(llvm::Value*, llvm::Type*, llvm::Twine const&) /home/tanmay/Documents/Tools/llvm-clone/llvm/include/llvm/IR/IRBuilder.h:1979:3
#15 0x00007f08500c1d93 llvm::InstCombinerImpl::narrowFunnelShift(llvm::TruncInst&) /home/tanmay/Documents/Tools/llvm-clone/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp:512:43
#16 0x00007f08500c27f8 llvm::InstCombinerImpl::narrowBinOp(llvm::TruncInst&) /home/tanmay/Documents/Tools/llvm-clone/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp:599:48
#17 0x00007f08500c3960 llvm::InstCombinerImpl::visitTrunc(llvm::TruncInst&) /home/tanmay/Documents/Tools/llvm-clone/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp:787:35
#18 0x00007f084ffe15df llvm::InstVisitor<llvm::InstCombinerImpl, llvm::Instruction*>::visit(llvm::Instruction&) /home/tanmay/Documents/Tools/llvm-clone/llvm/include/llvm/IR/Instruction.def:184:1
#19 0x00007f084ffbb042 llvm::InstCombinerImpl::run() /home/tanmay/Documents/Tools/llvm-clone/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp:4069:39
#20 0x00007f084ffbc9dc combineInstructionsOverFunction(llvm::Function&, llvm::InstructionWorklist&, llvm::AAResults*, llvm::AssumptionCache&, llvm::TargetLibraryInfo&, llvm::TargetTransformInfo&, llvm::DominatorTree&, llvm::OptimizationRemarkEmitter&, llvm::BlockFrequencyInfo*, llvm::ProfileSummaryInfo*, unsigned int, bool, llvm::LoopInfo*) /home/tanmay/Documents/Tools/llvm-clone/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp:4368:31
#21 0x00007f084ffbcfc7 llvm::InstCombinePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/tanmay/Documents/Tools/llvm-clone/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp:4426:39
#22 0x00007f085335e4f3 llvm::detail::PassModel<llvm::Function, llvm::InstCombinePass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/tanmay/Documents/Tools/llvm-clone/llvm/include/llvm/IR/PassManagerInternal.h:90:3
#23 0x00007f084d7bea1d llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/tanmay/Documents/Tools/llvm-clone/llvm/include/llvm/IR/PassManager.h:521:20
#24 0x00007f085336bb53 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) /home/tanmay/Documents/Tools/llvm-clone/llvm/include/llvm/IR/PassManagerInternal.h:90:3
#25 0x00007f084d7bdcb5 llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/tanmay/Documents/Tools/llvm-clone/llvm/lib/IR/PassManager.cpp:129:23
#26 0x00007f085336ba83 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/tanmay/Documents/Tools/llvm-clone/llvm/include/llvm/IR/PassManagerInternal.h:90:3
#27 0x00007f084d7be68f llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/tanmay/Documents/Tools/llvm-clone/llvm/include/llvm/IR/PassManager.h:521:20
#28 0x000055d581722107 llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) /home/tanmay/Documents/Tools/llvm-clone/llvm/tools/opt/NewPMDriver.cpp:527:10
#29 0x000055d5817533e4 main /home/tanmay/Documents/Tools/llvm-clone/llvm/tools/opt/opt.cpp:709:27
#30 0x00007f084c029d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#31 0x00007f084c029e40 call_init ./csu/../csu/libc-start.c:128:20
#32 0x00007f084c029e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#33 0x000055d58171edc5 _start (../../../../../llvm-clone/llvm/build-debug/bin/opt+0x60dc5)
Aborted (core dumped)
```

cc @regehr 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWltz3Cry_zT4hfKUBLo--GFsZ-rv-icbl-3NPk4hxMywRqAF5MTn028BmtFlxolz4pOkdvfUiTxCTdP96wtNS8QYvpWMXYD0EqTXZ6SzO6UvLJENebZct0Q-En1Wqfr54mHH4KaT1HIlYcWE-gy5gQQ-EcFr-P79pw_w5g5E1yBa9tcsCv8L8dT0Q_gSflB1J9jNNQT4GgKUa1Z3lNULIQDKA5lRnaZsveGCSdKwnhKNKVGgtERvmYU1sUSQZ9XZPS07bwBesnNeALx0_zA653EG8NJf3F2WALzMknMeI0cQo-JcYhTG7t3YbBGreSsOwhCi6S5LzgWX3ZfzrewO5OFasw2XDPIYgiTaAFTwAgKURgBdQY6R-x0DVEKQX4YJ0A1hz57IekRzBeMRReIpDPtiYc8RWuWoRzSpp_nD0wQ2iSfKkhFRFhh1lRuHXi43dUSRD8JkSXjohBmTFJ7E6k7SPVF-LE_pqYTZ6b08uF-uGFHF0Xy97Gi9OD5eMJ4h4IZQUG4n5gvGYyzjALc6iFXuqcbSx8kRnDE-xjNOT4gWcI-zMV02sqC78VOP2QX0OW1a2G3ZxEgDP82sdzFH33tffj0Lv3B7YyHVxOyYgUpCLo2lqqmci4IsUq2F5y0xhhmAr0cPQRYt4DtJVSct06yGXPpQP4-LxclYD7eqtQA7S6x2qmEArUJGAWh1rWjXMGkNQKsHpYT76_LDORVKsv7G_eEVQKubO3eRxurO5x2zoG3rwjdJXfBCY4nlFPo5eAnw8ooY6-gBWp4aDXeaEcsAKgaC0RLDjI-tcXgPVJ-I6BhAy-now3O7H6RKGjt-9NlBiLLphPFibl7pNFkaw7RPrSCLqJPXfHKJFaBCtW7-vbs8PPuU4Tg6x0E3MmRfNwGg2KUglMMN4YLVvX1u379b3r9zcd5wCwmsui3UrFXaOp_bWdsaJxZaAbTacrvrqgVVzcgQzjitVv9k1AK04sZ0zBktxKmkoqsZtDsWvAtWhD5aTSjrl7-3hD7Cumuc2cJQtID-v1uttpo0kOht7xJ4CRcLgFanLqecpOq4qM9rVnVbd8clQKsXXRmOto99osARjL5EURTlm6hIKEVFUZKRqcyzCT9uNZfW6_LglJs4jyaf18pYzUjT25pLG-z0g-5_37XOUACt_i75FzfAt5IIs-CSArzMEQZ4iYa8h-O5OrTK4Ez2wOP_iKwF0wAVT8p52fKnCFz6jXaQF83kTVlUnYL_rpMTsQ1w2_ObCryXNCSYOEodtNEgKp5DG9ECzrH8SYZPYjzFMZkIFyUoRRH0GPUMvxTZelqsuAd0YdQiA-gy-uKnuFx04JlOeZZZuaFwvW7tTjNSrx-5EGvetII5tYhPXS5OZWsFQKsx2cLL7BJ2ng38s9fwd7uOJOKrnHPvVCNT5ac4j6d9lV1RztgVc3CTPINb4y3iOYWf-0Rlnk3N3NaxapXxxtOEG-Z5o9yVlwPrcsoaFfkGQ1K55OxZ2TqYzw8F6WKncb_pIhxHRxziCq6lWAtF6nWtGsKDXbj06rrhxmwpCeziOHcilQPDaQqJcMnK7PtcyU85uJLjOQnzOquzrK5-wfY825jDdv3t7fkvLWP8iSQeoJqkmc2GshJlY-HuLt2ex_QlMWyM15WvAH4mZj-ES184DAMBor12i50Lljic14oBnWSOTpGQ16Dz4IryCTy_s-JxmbschAe9x7k4jSIa1yWeuexVqHL0TdOKMCqJ1urzqpOSifsd30z9w0Ny8yY6BSd_0ESajdKN6Z29l2h657xw7_7umIWXyUjPbKYnyjfFK_W85PJj-9tpWDpDJiMPzmca4jKLvqnhEzfcHvvwb6BgXrjtA6eDgsU0RFmc1puZgp-cOkoDfPUVxb-Wk_G7ES4vZr2_KlaHJRY12_gMlQzlmMOgnGJQVVGCvmlk3cm3qmq_Ycde-jDI5ba3ZRJlPu0MGzeKZorQsqawP0-N97OPT0yv-t7gxB7D4Mu77D-UfhT8xE68XN4x0wmn9CwlL43pmtYrQeju-Ij94Dt273mliX6-kRv1AsUBqJM016rhklilHzQ7XuNja3nD__CV7x1riH5813Br3TlgRnkpFH1cafavjknaizNT6FarDRfsvmuag8SepJO-Q1uHM-UVrJSaxcZ7pdrDhF_nPDjzXdYhClA8d54NzU9HwS0xZhwEr_CfpSTi2XDzgUiyZdNccpiE3_2kzPgSKAnKZhE1LoVTjFOWbMY7ec0s4X1CcKh8UDUTp5U7CqcxmDPnYobpJ1YH0Jj5c1Dus-7vZ6PTidrjF5a-6c-Rvrwqo0lxhSYld51XjMT1GL2BzSsM8V8ApgcxRfGoQeJgTKaenVVV-hae_ZfB_78QeX2IpLMQqWmVjrQIr_Qe1F5ix3ZZk9YXeafwCBO-C41-ytul9CO37jt_vh-PRspnc8cmxfc59l7bq1dC9laeOUD2kl_-Wjv8mE_m87SdFZtX5I1TxviPBvGFdL0_p6VpnRZxjlAcjasz3XmXvOUtE77OGSl8bzWX2zu2OeXSL1TaHwjdeT7z5sq8Ug-HvzmVUuJjZ9vOrrg4weSHHr-gzlJr8uxGx4bzmIhuy-XRFqJau7auOg-nA7_e_3NZf43qE9N8w5ne0-2r--_7-0P-Y_tnqrUArf7GPt9-uNb86ZAPU9-zjkeeU049J8WYJdD3md9MDNXafYMhKkPffL88nne8y7qM4HoteEXXxhJt15QIsT40vqnpjlvzffP_1KQQL0X4UuSwajxflSUR9HO45Ha-UPjpuJ977qHX7j8zGcXg7PVXz3SiyiktTjLHvmU49GEO76t6K8WspikMXCFAxVu8Z_Xd_iyqaXro9i8rpS2r3QpUaeZf_LJ6eBkw_UwgXCmFIIk027Kdhmf1Ba5LXJIzdhFnZYnjJC3Ls91FhVFd4ZgSmjJaYkxZSsu8zKuyoEke4zN-gSKE4zjKEE7KtFzkdIPyKIs3cZnllFKQRKwhXCycVgult2f-ZfZFHicZPhOkYsL4D6EQkuwz9A8BQiC9PtMXHpaq2xqQRIIbawYullvBLq78628l---hqKoZ5JMPLc46LS7-_At3L-a_AwAA__-PzXE8">