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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] --arith-unsigned-when-equivalent crashed with function returns non 64-bit integer.
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            mlir
      </td>
    </tr>

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

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

<pre>
    git version: 5fc76e6b6da7986574596134d83872b460c332cc

system: Ubuntu 20.04.6 LTS (Focal Fossa)

reproduced with: ```mlir-opt --arith-unsigned-when-equivalent a.mlir```

a.mlir:
```
// Seems that there are always troubles with integer and index...
// Will crash with any bit width except 64
func.func private @func1() -> index {
  %1 = arith.constant 1 : i1
  llvm.return %1 : i1
}
func.func @func2() {
  %8 = call @func1() : () -> index
 llvm.return
}
```

trace:
```
<unknown>:0: error: value bit width (1) doesn't match index type internal storage bit width (64)
mlir-opt: /data/bin/llvm-project/mlir/include/mlir/IR/StorageUniquerSupport.h:180: static ConcreteT mlir::detail::StorageUserBase<ConcreteT, BaseT, StorageT, UniquerT, Traits>::get(mlir::MLIRContext*, Args&& ...) [with Args = {mlir::Type&, const llvm::APInt&}; ConcreteT = mlir::IntegerAttr; BaseT = mlir::Attribute; StorageT = mlir::detail::IntegerAttrStorage; UniquerT = mlir::detail::AttributeUniquer; Traits = {mlir::TypedAttr::Trait}]: Assertion `succeeded(ConcreteT::verify(getDefaultDiagnosticEmitFn(ctx), args...))' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /data/bin/llvm-project/build/bin/mlir-opt --arith-unsigned-when-equivalent a.mlir
 #0 0x000056380e22853f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/bin/llvm-project/build/bin/mlir-opt+0x165f53f)
 #1 0x000056380e225594 SignalHandler(int) Signals.cpp:0:0
 #2 0x00007f87a10dd420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #3 0x00007f87a0bc800b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
 #4 0x00007f87a0ba7859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
 #5 0x00007f87a0ba7729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
 #6 0x00007f87a0bb8fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #7 0x00005638110331ac mlir::IntegerAttr::get(mlir::Type, llvm::APInt const&) (/data/bin/llvm-project/build/bin/mlir-opt+0x446a1ac)
 #8 0x0000563810eb9ce1 mlir::dataflow::IntegerValueRangeLattice::onUpdate(mlir::DataFlowSolver*) const (/data/bin/llvm-project/build/bin/mlir-opt+0x42f0ce1)
 #9 0x0000563810e74188 mlir::DataFlowSolver::propagateIfChanged(mlir::AnalysisState*, mlir::ChangeResult) (.part.0) DataFlowFramework.cpp:0:0
#10 0x0000563810ec3e92 mlir::dataflow::AbstractSparseForwardDataFlowAnalysis::visitOperation(mlir::Operation*) (/data/bin/llvm-project/build/bin/mlir-opt+0x42fae92)
#11 0x0000563810ec406b mlir::dataflow::AbstractSparseForwardDataFlowAnalysis::visit(mlir::ProgramPoint) (/data/bin/llvm-project/build/bin/mlir-opt+0x42fb06b)
#12 0x0000563810e747ad mlir::DataFlowSolver::initializeAndRun(mlir::Operation*) (/data/bin/llvm-project/build/bin/mlir-opt+0x42ab7ad)
#13 0x000056380e56e716 (anonymous namespace)::ArithUnsignedWhenEquivalentPass::runOnOperation() UnsignedWhenEquivalent.cpp:0:0
#14 0x0000563810ede9ee mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/bin/llvm-project/build/bin/mlir-opt+0x43159ee)
#15 0x0000563810edeeca mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/bin/llvm-project/build/bin/mlir-opt+0x4315eca)
#16 0x0000563810edf6f4 mlir::PassManager::run(mlir::Operation*) (/data/bin/llvm-project/build/bin/mlir-opt+0x43166f4)
#17 0x0000563810ed0463 performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#18 0x0000563810ed1934 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::MlirOptMainConfig const&, mlir::DialectRegistry&, llvm::ThreadPool*) MlirOptMain.cpp:0:0
#19 0x0000563810ed1ae4 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::'lambda'(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#20 0x0000563810fd0dd4 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) (/data/bin/llvm-project/build/bin/mlir-opt+0x4407dd4)
#21 0x0000563810eca347 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/bin/llvm-project/build/bin/mlir-opt+0x4301347)
#22 0x0000563810ed1c31 mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x4308c31)
#23 0x0000563810ed2096 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/bin/llvm-project/build/bin/mlir-opt+0x4309096)
#24 0x000056380e15fcb3 main (/data/bin/llvm-project/build/bin/mlir-opt+0x1596cb3)
#25 0x00007f87a0ba9083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#26 0x000056380e1f889e _start (/data/bin/llvm-project/build/bin/mlir-opt+0x162f89e)
Aborted (core dumped)
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzcWd1v2zgS_2uUFyIGRerzIQ-OE-MCtGgQp7ePBkWNZF5lUktS-bi__kBKtiU1adNNdm_vitSWxfn6zQyHQ5IZI2oJcBHEl0F8dcY6u1P6gkkln_eqM59Xm7NClc8XtbDoAbQRSgZ0ieKKpwkkRVKyNM-SOI3iPAlpVGY0S0kRJZhTSjgP8FWAl_2neTYW9o77a9FJ2yGCFzhaJOjT_QYFJFsrzhq0VsawgORjTg2tVmXHoUSPwu6ciCDB_d--EfpctRadnzMt7O68kx5Sef64A3kOv3figTUgLWILR3tkHCsYhujwc05D1gFZow3A3iC7YxbZHWhAzP1vHtmzQVarrmjAePuQkBZq0IjJEglZwtNisZiI-k00DeKamV3PwOQzKoRFj6K0OwRPHFqLkqjnqTrJF-4DtVo8MAsoiLD7HQYkC0iOzgN63etBQXrZMyEUkDhEAb1C3i0LrqSxTFrkXi6RCA90TfOwX2iwnZYHntNwkF7NjRiUk0H5VGPmNXLWNHMjfdDm9g6cIxNmal-MltWMw6vBoqtOfpPqUQb0OqBL7BSD1sqFFz2wpoORqwOShc6kUoGRAUkt2jPLd4M37XMLPphasgYZqzSrZ9xJdMzVQyb2SNclsywg60LIgKwdwvNWq38BtwFZ-2wjayF505VwenFzF5D1ptfzVYrfO9Cbrm2VtguX9WHm0RjLrOBopSTXYOEeHZKXLkuwTDT980GOAX3JDAR0deQIyAq5d_5hoPPPg1L_fK-ZsKb3YkCXNdiAZCdVnz_d3K2UtPBkA7J0DEtdm4AkAUmQS3gX9PjS57cb8ZkRpJcnCffPLXj6FfLZ6fOgH1re3kjrxtKrgF6OoDohJwk3_URbWqsdmYc0I3FjougsOIID1BnN2GsjkQO1Yzz45QeMR0UDrWPrXfgy8rK32v90ZA5qfOXiuzQGtBVKuipnOs4BSigDkp3i59keQIvqOSBZDfYKKtY19kqwWipjBb_eC7uWAcm4fXIpSlaI6dr0gfF_KaqYaKAcStPtp-vl5hqZrtgLixgquhppcLmHrEI7a1vj1PoCVgu764oFV_sht79PcWFMB8YVu74K-kx3hXOoewXj3_xEHtRvLOPfUNnt2-PMxgvk_91qVWu2d_Z3e5AuJ386w4pONOVx8JcXib4uBYRihJ8wxjhOaIaBkCym1ShPzbPpH261kNZjuPfViWQnIs0et8pYDWw_pLtwyZ339fAPwAjIJX4Kk7iKaXUsP87acGZtHOcR2ohasuYfTJYN6IBkg_L-tVnwth3KJD4JIoOgtMpSFuKyjAhG260GVwRhq-1geyOKgKyfsmSbROeNkN3TeS27fqC1Ow2sXBi1wL3FUUTwxF46VoMLnmFcIM2EgTfI505y4iVHFONiIjmaSmZpFueIFepNlo8ku4jnE8nxXHJ6jOSbZaZkKjOZyiyyqkx-TSalVZlMZKajXAhDTGnI-Gul86X63lfn1bwo96Xa5_E7EziKEhYyPjE6GxuNocg5hON6yyyrGvU4gfBPt6bfMVnDJ2at6FsDulTya1syCxNQV8yydaMeN6p5cJNh6VD0i8_7sJAKcwgnWPIpljQKswy9aop_12rVsppZuKlWO4eonFi_lKx5NsJsrMflF93TaM9xB6ZrDtVl0TJt3ezL0UHdWrM9PCr97fuJ7woInhrNKeTk1QAsC-NKuN20TBtYK_3IdHlQdDB2WKuEEfZLC5q5hW2CavR2-f6kIhWDnJw2EISG4QxThJPiwzBNoAwr1a36iAIfkarASTGBQuY5lbLyJzklpLCCNeLfsJTlXfen-p4VKSsnBtPJihQnkIa-sh13mEiyPZjWr5n5EAK3RH8dVujfdiCvj-vzLTOD83Unv8hxQjnzX2Z6OdOjqStLyAFeae2-tPfqS-t0L0vWWqWPJkyj74ybz8qph8cjh2T6zCSrXTFaoUKpxn0f2pMPaRQiGsY5wCQs8Rw8cPbL4G9FC42QMMsoR3rElHy4N8ZMTtWNNFb7vlDp76ROCXrN_cBg-y3TIO2NrNRhYfuAeUDDGDibODyZObxKqmhm5wH5i7n1sROVhklSRRMD05mBOEooakFXSu-X3Gk2P2lqjS2HpnjHNJTb1nUWqxPHRnWaw-dau-3_qYsYh-v7PeVorBH6S2s_MyFXSlainnQio9GXp_ussyjDnEao1YqDMZddVfnW-E3wOr-_-w7eZ9gr_XwQNaIv-63ZtoQG3Db0NR630b5-O-Yx3ZVgDXB7B7UwVj8P4yc9974Tv_Xzafkmd-VzdzEY5-snVQvOmr7ZGCmqOulzZauhCujqNYaAZH-dO18Pan483OCsadyOdFvJidkjP_0N0-PlsL9xyvQkAUkbti9KFpD07xQVkjVK1n-tY39g0k8nDJk2zlXp9syjUJi2EXYpy9tZxflvoPsfnKQ_pDh1Cv33u_elOC3LyepI5lsIRqP05Yn2_1Ym3ttp4JBG6cSXZL60cBq-6suh5eM71jd3y2kqbKwWsr6D6gevf-yI9wPMOA0nAOkMIMF58iEA_2wkOc6TCZJosnsL44oXFO2ZkO88uozzhBd0omp-rJbjjKLtthEF3xrLtN2O9L71oC3C2VRLMgVUZVkOqJf_3tNYUmX5aZO1LJS2UDqhXGnwB9sw2hofLq3Oygta5jRnZ3ARppiENEvi7Gx3UYVVkkZJmhDCq7CocFLkCSMJ8DTNIszOxAXBhIYE52ESpjRbhGVCWEV4FOIicrZEGPZMNAt_vaZ0febP5C_SKKfpWcMKaIy_9yWkv34iQXx1pi886KKrTRDhRhhrTgKssI2_K_YM8dXPz9P9Yf9wb4sOCw_q7_oMkkqiJDovhD3cmS7OOt1c_PHbBg_uPwEAAP__swZvhg">