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

    <tr>
        <th>Summary</th>
        <td>
            opt: ../include/llvm/Support/Casting.h:708: auto llvm::cast_if_present(Y *) [X = llvm::Constant, Y = llvm::Value]: Assertion `isa<X>(Val) && "cast_if_present<Ty>() argument of incompatible type!"' failed. with opt -passes=globalopt
        </td>
    </tr>

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

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

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

<pre>
    llvm commit: cf60d3f1a6886
Reproduce with: ```opt -passes="globalopt" bbi-80589.ll -o /dev/null```
Result:
```
opt: ../include/llvm/Support/Casting.h:708: auto llvm::cast_if_present(Y *) [X = llvm::Constant, Y = llvm::Value]: Assertion `isa<X>(Val) && "cast_if_present<Ty>() argument of incompatible type!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: build-all/bin/opt -passes=globalopt bbi-80589.ll -o /dev/null
 #0 0x0000000002e65d68 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (build-all/bin/opt+0x2e65d68)
 #1 0x0000000002e638fe llvm::sys::RunSignalHandlers() (build-all/bin/opt+0x2e638fe)
 #2 0x0000000002e663e6 SignalHandler(int) Signals.cpp:0:0
 #3 0x00007fba1b02c630 __restore_rt sigaction.c:0:0
 #4 0x00007fba18773387 raise (/lib64/libc.so.6+0x36387)
 #5 0x00007fba18774a78 abort (/lib64/libc.so.6+0x37a78)
 #6 0x00007fba1876c1a6 __assert_fail_base (/lib64/libc.so.6+0x2f1a6)
 #7 0x00007fba1876c252 (/lib64/libc.so.6+0x2f252)
 #8 0x00000000026ac7d5 llvm::ConstantExprKeyType::ConstantExprKeyType(llvm::ConstantExpr const*, llvm::SmallVectorImpl<llvm::Constant*>&) crtstuff.c:0:0
 #9 0x00000000026ac4de llvm::ConstantUniqueMap<llvm::ConstantExpr>::MapInfo::getHashValue(llvm::ConstantExpr const*) crtstuff.c:0:0
#10 0x00000000026a0285 llvm::ConstantUniqueMap<llvm::ConstantExpr>::remove(llvm::ConstantExpr*) crtstuff.c:0:0
#11 0x0000000002691f10 llvm::Constant::destroyConstant() (build-all/bin/opt+0x2691f10)
#12 0x0000000003172eb9 CleanupPointerRootUsers(llvm::GlobalVariable*, llvm::function_ref<llvm::TargetLibraryInfo& (llvm::Function&)>) GlobalOpt.cpp:0:0
#13 0x000000000316d38a processInternalGlobal(llvm::GlobalVariable*, llvm::GlobalStatus const&, llvm::function_ref<llvm::TargetTransformInfo& (llvm::Function&)>, llvm::function_ref<llvm::TargetLibraryInfo& (llvm::Function&)>, llvm::function_ref<llvm::DominatorTree& (llvm::Function&)>) GlobalOpt.cpp:0:0
#14 0x000000000316ccdd processGlobal(llvm::GlobalValue&, llvm::function_ref<llvm::TargetTransformInfo& (llvm::Function&)>, llvm::function_ref<llvm::TargetLibraryInfo& (llvm::Function&)>, llvm::function_ref<llvm::DominatorTree& (llvm::Function&)>) GlobalOpt.cpp:0:0
#15 0x000000000316ad2a optimizeGlobalsInModule(llvm::Module&, llvm::DataLayout const&, llvm::function_ref<llvm::TargetLibraryInfo& (llvm::Function&)>, llvm::function_ref<llvm::TargetTransformInfo& (llvm::Function&)>, llvm::function_ref<llvm::BlockFrequencyInfo& (llvm::Function&)>, llvm::function_ref<llvm::DominatorTree& (llvm::Function&)>, llvm::function_ref<void (llvm::Function&)>, llvm::function_ref<void (llvm::Function&)>) GlobalOpt.cpp:0:0
#16 0x0000000003168ee2 llvm::GlobalOptPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x3168ee2)
#17 0x000000000308441d llvm::detail::PassModel<llvm::Module, llvm::GlobalOptPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) crtstuff.c:0:0
#18 0x00000000027d91ab llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (build-all/bin/opt+0x27d91ab)
#19 0x000000000073cbf3 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) (build-all/bin/opt+0x73cbf3)
#20 0x000000000074b1f2 main (build-all/bin/opt+0x74b1f2)
#21 0x00007fba1875f555 __libc_start_main (/lib64/libc.so.6+0x22555)
#22 0x0000000000735e50 _start (build-all/bin/opt+0x735e50)
Abort (core dumped)
```
[bbi-80589.ll.gz](https://github.com/llvm/llvm-project/files/11060204/bbi-80589.ll.gz)

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWE1v4zgS_TX0hYghkfrywQfHbu80poMOkkwwczJKUsnmNkVqSCrdnl-_oGQ7luN89U6we5gggSOz-Oq9qlKJKrBWrBXilMSXJF6MoHUbbaa1-AYoN1rWqEa5LrdTKR9qWui6Fo7wGS2qJCh5FUKSZQkJFiSY3WBjdNkWSL8Lt_FGJAn6X904etGAtWgJXxDG1lLnIHXjCGM0z8VFFsTZZCwlvdCUsGWJD4QtVSvlAWPvxLbSM-gvT1Y9IJ_R8ZiwpVCFbEskbOmpE7a8bZtGG0fYcg7WCbUee5JpkPkt0DpNO0M-I3xWgHUrUa0agxaVIyz7gxI2I2xCSXz5OyV8cWQ918o68GZz-sfJ2j3IFkm88E5m1qJxQisfGWGB8PnvhH8iLLsH2WGzhLCEEsZOCfD53bY39XZg1m2NylFdUaEKXTfgRC6Rum2DhIWEMcJSWoGQWI772Fx_-TS7_URtm9fCUaB5u6YGfUSo03TjXGM9Y7YkbLkWbtPm40LXj-HzHxeN0f_GwsdQWNuiJWxJQZV0F2zqNkgLA3ZDcyi-OQMF7tzfOii-0bKtm0PygjEJJtdGrw3UB0meBM1bIcsLkJKwZS4UYcthBR3K55Xa6dxQwnhAgx_B_odhEpdJdpQku7X9P9dGKNdRvfPcCcsejQx8X2nrDELd5WlOhU-5z1p2ljBhl8GPnTPCJo9swhM2PKvwHJubVt2KtQL5C6hSorG79L_m0OMNHLIThwnHhA6gCct2avqv7bhofKaC7u8AxHdAaZVDmAesSHhAVyuD1mmDK-OoFWsofI2Pi6fbo-PtWZpynqXUgLBIO2lLKfIk6j-LsdXjpJPEE56lA0HxCVAEaUYh98X8IlAK6TAVyRAoKUJI6GoF3Z268jfQKodX6DHfBgeo6Skqi9krECxmA4hskLIEirSMz7ScTz8a8ytu7_x9_-zCcRUfr9PCX3R9bX6EfVuDlPdYOG0-140kfH6u1c26duR108I469qqOpfyyamOqMQzOn5T4s8Wr6A5682T9e66L6-g-awq3V-s0f0CdtN32TfofJ6svy-DE7IBy84F_R1kDdb64Xlmb-A0bBbJJKzC4Nyzp7sq0Tqjt49ZekO_6CEPxed9DvoFD1OG-YTOJYJqm2stlENzo7X7zfY96ZHNv7rGfA9GQC7xSWVVrep6w8pgNYjdHZg1ui8iN2C2XXa7x-AR8nK3tS-5rvYmtHf3tXFPu5WXwYcykpJnQBujC7T2sxehQPYQ7xHRL986cK3dV1byLp13BpSttKnfqvTjYvgm5IWuhQKnzZ1B_FsyE51kpijKcp-ZFzLS3eT_xPp9sY5PYg0lA6obJ2rxF_Z77Wd1pctWDhvV_quTgC_AwRfY6tb9XPV_RNQ-MteXUhfflgb_bFEV_-Nkv4D6oEX54ftfLbbkpNgyRPakd35t3DXY3SHXtOotVTdTILdW2CtQsEYzCONuy-E88uLzbkdq8LxLB6yDLIrC8sh3iQ6E3L0hgLVXukR5jsGZ58Re62Dp2r_VmQcse1Vof0br4Yjx9wfwpfPI8GCalpMQ8mNpPj7Pu_j_0vnywajXNiiUwWk2SHmRV_zIt2mV138tGpRCDbvprTNCrW-wGtJ9RkXf0K6g2HQ4s3OrR420O6c_sdJafm1d07qlOHOO-e-Wn5EzMwa2NydtrouJbNdCPWlCunErp_Xu5ur9_SpU-ZLVPRpRCTR7u9yvvPnzlaz3OT1OOguGSY_ysGK0BqFeQeoMB0jh8L0wruI4pquVfxdcWQfGrfawz78psjiOB6DspCZjjAPaw70m1ZsesGb71-dCG-wmNVg-OhoO2kh8eTx5Ga__IvGCsOzdY6RKyG6KFIZBErDA6z0F3lMYlVNeTvgERjgNk3SSRFkapaPNNI7ikIcFn_CUVRHEmJU8iHiYJbwAXsYjMWUB4wFnUTAJ4igdR5izOMoKlk7yMAIgUYA1CDn27MbarEfdeGuahEkajSTkKG03IWVM4XfaLRLGSLwYmW4yepG3a0uiQArr7COKE07i9J-p5LmpZDclps_M9UatkdOfn0l2eftPAAAA__-B0dzm">