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

    <tr>
        <th>Summary</th>
        <td>
            IPSCCP crashes with vscale
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            ipo,
            crash-on-valid
      </td>
    </tr>

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

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

<pre>
    `opt -passes=ipsccp file.ll` crashes on:

```llvm
define ptr @fn(ptr %a, i64 %idx) {
  %a2 = getelementptr inbounds [4 x <vscale x 2 x i32>], ptr %a, i64 1
  ret ptr %a2
}
```

```
opt: include/llvm/Support/TypeSize.h:183: constexpr llvm::details::FixedOrScalableQuantity<LeafTy, ValueTy>::ScalarTy llvm::details::FixedOrScalableQuantity<LeafTy, ValueTy>::getFixedValue() const [with LeafTy = llvm::TypeSize; ValueTy = long unsigned int; ScalarTy = long unsigned int]: Assertion `(!isScalable() || isZero()) && "Request for a fixed element count on a scalable object"' failed.

#7 llvm::TargetTransformInfoImplCRTPBase<(anonymous namespace)::NoTTIImpl>::getGEPCost(llvm::Type*, llvm::Value const*, llvm::ArrayRef<llvm::Value const*>, llvm::Type*, llvm::TargetTransformInfo::TargetCostKind)
#8 llvm::TargetTransformInfo::getInstructionCost(llvm::User const*, llvm::ArrayRef<llvm::Value const*>, llvm::TargetTransformInfo::TargetCostKind) const
#9 llvm::CodeMetrics::analyzeBasicBlock(llvm::BasicBlock const*, llvm::TargetTransformInfo const&, llvm::SmallPtrSetImpl<llvm::Value const*> const&, bool)
#10 llvm::FunctionSpecializer::run()
#11 runIPSCCP(llvm::Module&, llvm::DataLayout const&, llvm::AnalysisManager<llvm::Function>*, std::function<llvm::TargetLibraryInfo const& (llvm::Function&)>, std::function<llvm::TargetTransformInfo& (llvm::Function&)>, std::function<llvm::AssumptionCache& (llvm::Function&)>, std::function<llvm::DominatorTree& (llvm::Function&)>, std::function<llvm::BlockFrequencyInfo& (llvm::Function&)>, bool)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVktz6jYU_jViowljS2DsBQswl06m97ZpoF10J8vHoFaWXD1SnF_fkQwE59HJIjMMY5_Hp-8758gSs1YcFMASzddovpkw747aLJVXupO6AzupdN0vUZbozuG7jlkLFtGN6CznHW6EhKmUKEswN8wewWKtEF2hZIOSy3-WDD8pn9rBVEMjFODOGYxmSaMQyeMzmTNESiyyWXgW9QmRAqPFesjCMYBgRDf4AA4ktKBcSBSq0l7VFqP5eoZPGNHyyXImAZ8wwScsKEH0G5pvAvrrldILugF3dZIz98XmlYh3lQ2vunOIrrBQXPoaENlGwWS7812njUNku-872IlnmB4RXaU5DeFcK-vg1Bkcw-kK0VUNjglph5etOEH9q9lxJlkl4TfPlBOuR7T8DqzZ90HHH0x62PdBZMyJwWbffyXmAVxMi3ZE8tCbSD5U_V_hjnjIjf15WfeiGdH1BXKI0OqAvYrjV2OhXAi48n4_Yr4JFVtZC8YJrXAofSCSCnuRciaGFiValFjYP8HowRbNJEMkw4iQR_jHg3W40QYz3ARh-DxRmGuvHNYKM2zPsFhXfwF3iBBEFrhhQkI9Hc0CoYtb1cwcwO0NU7bRpr1Xjb5vO1k-7h_WzAKiJSI5U1r1rfYWK9aC7RiHwDMC_KL3-_uQclv_n749lNo6RPJxfRFZhY69GGOhh-688a2MYf0jNIiWHybQb-Ocdxd5R-OtIzD9Wag6SLqUKP9M-gHcvbLOeB6a_Ebw7xbMV0r7tIozxkVLcQNS6hp-gDOCnzcYU0z2z7BmVvC11PzvkYQX8wdC3iF1iczGkbuWSfngzA7cMC3_p3yEUWktb3uTJjewW69i9XcdcMGkeAYzOIxX5-10zUux8er-YVeWDyOVP3Ttw4Z8xXjDHPvOeu3dB5JWoXZW2B9MsUNYt3zLK7YxFs26enA1V1f5upDfRWWY6UdlxCOuV9xApjgPyWegx4PzBbAra33bxcln_AhfAbnRrVDMabM38CWAcXS3JnxCFe8_r3w8cpfTc1IvaV3Qgk1gmWbFrJjNSZZPjsskTat8MctpkiUFyWkzh4xz4GlRpRVnMBFLkhCaFOkiTZLFLJ_yZs7rOqVp3dR5sSBolkDLhJwGYlNtDhNhrYdlls2L2USyCqSNVx9CRKfj171EhMS7zJ1Wd09MijqY55uJWQaQu8ofLJolUlhnX2CdcBKWwya4XoXioThcRCbeyOXRuS5-H8gWke1BuKOvply3L1eFuEJn9HDWbCNZi8g28v0vAAD__8sJ-54">