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

    <tr>
        <th>Summary</th>
        <td>
            [RS4GC] Assertion `(isa<SelectInst>(I) || isa<PHINode>(I)) && "missing instruction case in findBaseDefiningValing"' failed.
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          max-quazan
      </td>
    </tr>
</table>

<pre>
    https://godbolt.org/z/dff5YWEb7

Run opt -passes=rewrite-statepoints-for-gc -S on the following IR:
```
define void @test(i8 addrspace(1)* %arg, i8 addrspace(1)* %arg1, i32 %arg2) #0 gc "statepoint-example" personality i32* ()* @zot{
bb:
  %tmp = freeze i8 addrspace(1)* undef
  %tmp3 = getelementptr inbounds i8, i8 addrspace(1)* %tmp, i64 16
  %tmp4 = bitcast i8 addrspace(1)* %tmp3 to i32 addrspace(1)*
  call void @wibble() #3 [ "deopt"() ]
  %tmp5 = getelementptr inbounds i32, i32 addrspace(1)* %tmp4, i64 undef
  ret void
}

declare i32* @zot()

declare void @wibble()

```
The crash looks like
```
opt: /root/llvm-project/llvm/lib/Transforms/Scalar/RewriteStatepointsForGC.cpp:635: {anonymous}::BaseDefiningValueResult findBaseDefiningValue(llvm::Value*): Assertion `(isa<SelectInst>(I) || isa<PHINode>(I)) && "missing instruction case in findBaseDefiningValing"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/opt -o /app/output.s -S -passes=rewrite-statepoints-for-gc -S <source>
 #0 0x000055988a9efd3f PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #1 0x000055988a9ed7ac SignalHandler(int) Signals.cpp:0:0
 #2 0x00007ff1682503c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x143c0)
 #3 0x00007ff167d1d03b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4303b)
 #4 0x00007ff167cfc859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x00007ff167cfc729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #6 0x00007ff167d0e006 (/lib/x86_64-linux-gnu/libc.so.6+0x34006)
 #7 0x000055988a8cf261 findBaseDefiningValue(llvm::Value*) RewriteStatepointsForGC.cpp:0:0
 #8 0x000055988a8ceeb7 findBaseDefiningValue(llvm::Value*) RewriteStatepointsForGC.cpp:0:0
 #9 0x000055988a8cedd7 findBaseDefiningValue(llvm::Value*) RewriteStatepointsForGC.cpp:0:0
#10 0x000055988a8d58ca findBaseOrBDV(llvm::Value*, llvm::MapVector<llvm::Value*, llvm::Value*, llvm::DenseMap<llvm::Value*, unsigned int, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, unsigned int> >, std::vector<std::pair<llvm::Value*, llvm::Value*>, std::allocator<std::pair<llvm::Value*, llvm::Value*> > > >&) RewriteStatepointsForGC.cpp:0:0
#11 0x000055988a8d5ea1 findBasePointer(llvm::Value*, llvm::MapVector<llvm::Value*, llvm::Value*, llvm::DenseMap<llvm::Value*, unsigned int, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, unsigned int> >, std::vector<std::pair<llvm::Value*, llvm::Value*>, std::allocator<std::pair<llvm::Value*, llvm::Value*> > > >&) RewriteStatepointsForGC.cpp:0:0
#12 0x000055988a8dd100 insertParsePoints(llvm::Function&, llvm::DominatorTree&, llvm::TargetTransformInfo&, llvm::SmallVectorImpl<llvm::CallBase*>&, llvm::MapVector<llvm::Value*, llvm::Value*, llvm::DenseMap<llvm::Value*, unsigned int, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, unsigned int> >, std::vector<std::pair<llvm::Value*, llvm::Value*>, std::allocator<std::pair<llvm::Value*, llvm::Value*> > > >&) RewriteStatepointsForGC.cpp:0:0
#13 0x000055988a8e0903 llvm::RewriteStatepointsForGC::runOnFunction(llvm::Function&, llvm::DominatorTree&, llvm::TargetTransformInfo&, llvm::TargetLibraryInfo const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x32e0903)
#14 0x000055988a8e1d98 llvm::RewriteStatepointsForGC::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x32e1d98)
#15 0x000055988acfb801 llvm::detail::PassModel<llvm::Module, llvm::RewriteStatepointsForGC, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x36fb801)
#16 0x000055988a195b44 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module> >::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0x2b95b44)
#17 0x000055988824e61a llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::StringRef>, llvm::ArrayRef<llvm::PassPlugin>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xc4e61a)
#18 0x000055988818e2bb main (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xb8e2bb)
#19 0x00007ff167cfe0b3 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x240b3)
#20 0x0000559888241eea _start (/opt/compiler-explorer/clang-assertions-trunk/bin/opt+0xc41eea)
Compiler returned: 139
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWdtu4zYQ_Rr7hbAhURdLD3lw4qQbdNM14iBFnwxKpGw2sqiSVG5f3yHlGxU72WCzxaK7gXORSJ6ZOXNmRCqZoE8nS61r1QvGPXwBn4WgmSj1UMgFXD3DNy2K6K8_z7NRz5v0vHH787qpkKg1GtREKQbLJ5I9SK7ZQGmiWS14pdWgEHKwyNFghkSF9JKhQpSleODVAl1eG5MtYuytP_aSsoJXDN0LTlEv9DRTuocTniBCqVQ1yRlc-j2c9vAY9XBEjKdn6NUJvp0R4PUlhkH4M_AQeNfDeOfzgD2SVV0CAkY1k0pUpOT6yaxt0ZINbug9C90bnbZOZ9k2HGSM6FWNgBRUSMae2THnmgqCdVcFdtmCaVayFat0rSXiVSZgqgKY1yOF9XZCHCI_dnFDi5txnROlX4cIkBaWrANTNqA5Kcttih54lhnKkjWtEEN0anilDDQCvzdD0cR1Kno1WEP52TFHNmFt4nWolExb59b6Gk32pUtZXhLJtiltE9km9sC0Q0Huz-uo9wZUnkuilqgU4k6hkt-xgxMNM4EJ40IKY_-iLO9Xg1qKv1m-uTS_eAY_bySpFFTTSsHFDMgnEv64bktutqu4CyF_OxvmdQ3QcRBZA6NTUonqaSUaZZgAmQbjU6LYxNQZlOItKRt2zVRTagR36IsxiNk6Y1eu74wNC4A-huqXmkN5m8CgTBXpBWczyGeuLyuo3OAc7l7a7I_O4IPaGdNPl38IynbDrXRi-BjhrLhSpktwgJBNbg2AcCFp1SEf4adV2QgVhJeMDluKp5_Px7NzpJpsxTUiKGsWII1aSG0U3ul7XC-bbJiL1R73bkbAp4aZBCBSUfAkLxvKbFtrE56R_E5LUOnaPOQlv0O0WdXb3uDBUDqVYiHJCkEjaozq1VoHtlYuwIMaYpDQiepSSGYSDUqsFgOy4VoNgJTqDgYyXrUL0UAYCAKZh-tG140eKtN4v7ZBQ06UaGRuU9KWkW2Q3qMHX1GUJglJWUGDAk0lrLXB3ZhoZ3wBTfITcFIaZxNbeFYgqB1Sa0F69nuL7Xew6YjkqAsGlt4EwmugUVH4cYIjL8g9NJ9LeHAAf3PItq3adSk9JvE8DgegmeZxsKiadqDWS8kIHSoxBBmfeo9-CCjbUm-72p6ZEfWpF2RIEg6qfBs_N8ixRQ4DWOgghw5yXuRJlCKSia_yfA8ZY1joIEdd5JEts3dhjrCLGbs8eMzz4vdhBiEscTBHjhaSvMCx_75mhF5vhh3JJB17jGWj72kv7dqj9LvZM6Xl1m1CoyQnW3tf5Onk9oidM7S7e0XqW-h8QkJveGvu4bsTVikGMEcBmkpBZTPTTfXhpZdVIY4ut63GPEL2V1Km4SHgokwJPx6F40RwjtaIStN27v2GhO2d-jW4A3c7gLB3Ejn5Zky0920fne8Uid8VCSO7opua1bYF_5LJzy0T3JEJ9T3PbMxgLzIlcq0U5Qjloqnsns2ac9IlVrwyId3AuejF6A3siJje7nVtTrtzZiugpdXbJRzUHCrOYMhod8Nl_EuoP5NQA1eozEu9YM_SEax2EPbTX6qdbP8bLbdzPvNMEvlkZqBcmDNTG3u7pfqWQ0G72cKWiN2pFZgKO0z5NE3ewZTDz5WgTfky_jHs158UV1ekIgvmKmG9ZJvlj4vUBOJEGjmR5kWWeP6R2pqCAfCMlYd8dWI7xo8zaQrnDybvGW2ZMAfHd_NjK-FHZz22pDqsxw7rfhplYbhPjWH6uIf_T55wZmlweHKOPQkOWeyTPS8Bx1A15TWDw5R7NJhpOIUvrlnRecYdjrftNFckX1qc8Rt9yD5ZX8wSovxi3yxc8PIAyDcNHwlnLCV5Mnf3E7Sb231UHpxuKSybBWSjOx9yM9fgWHvVuvc7bIBfm3XLJC84k5t5mRl58_eHySi3InFU5BxmEz9hOMvQivDqo2xmFtKxmXZeLDAvC9B8bs75c6WJ1PM9B772VUMIIPtWsNepD58xglr8j-PTgG6tnq2RzCvkRsImCjKO_CDtvMLt05OApkFK-prrkp30otPrWQiPgGjyo74S7Tey7P6v5x3vPKMo8JL-8iT18cgrfEqxF6ZhEWLs0yQocJYXeR6PcL8kGSuVYQTsV-wBWQjjSzTp8xPsYexFXuxD9wvjYZKGIxJQWuAkxbGf9EKPgXLKofHD_BOqL0-sS1mzUDBYcqXVbhDSa7a6NgEGnzR6KeTJijwO_mnIM6n61vqJ9f5fx6UoXQ">