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

    <tr>
        <th>Summary</th>
        <td>
            [mlir] GPU-to-LLVM Pass triggered Assertion failure "attempting to construct a TypeRange with null types"
        </td>
    </tr>

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

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

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

<pre>
    MLIR built at commit https://github.com/llvm/llvm-project/commit/159cac50
Reproduced with: 
`mlir-opt temp.mlir --gpu-to-llvm`

temp.mlir:
``` milr 
func.func private @async_execute_fn() -> (!async.token, !async.value<f32>) {
  %0 = async.runtime.create : !async.token
  %1 = async.runtime.create : !async.value<f32>
  %2 = async.coro.id
  %3 = async.coro.begin %2
  %4 = async.coro.save %3
  async.coro.suspend %4, ^bb3, ^bb1, ^bb2
^bb1:  
  cf.br ^bb2
^bb2:   
  cf.br ^bb3
^bb3:  
  return %0, %1 : !async.token, !async.value<f32>


```
 
trace:
```console  
Assertion failed: (llvm::all_of(types, [](Type t) { return t; }) && "attempting to construct a TypeRange with null types"), function TypeRange, file TypeRange.cpp, line 20.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: mlir-opt temp.mlir --gpu-to-llvm
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  mlir-opt 0x00000001048e0818 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  mlir-opt                 0x00000001048df880 llvm::sys::RunSignalHandlers() + 112
2  mlir-opt 0x00000001048e0eb0 SignalHandler(int) + 344
3  libsystem_platform.dylib 0x00000001aad414c4 _sigtramp + 56
4  libsystem_pthread.dylib 0x00000001aad29ee0 pthread_kill + 288
5  libsystem_c.dylib 0x00000001aac64340 abort + 168
6  libsystem_c.dylib 0x00000001aac63754 err + 0
7  mlir-opt                 0x000000010664c39c mlir::TypeRange::TypeRange(llvm::ArrayRef<mlir::Type>) (.cold.2) + 0
8 mlir-opt                 0x0000000106018698 mlir::TypeRange::TypeRange(mlir::OperandRange) + 0
9  mlir-opt 0x0000000105ffe9dc mlir::Operation::create(mlir::OperationState const&) + 60
10 mlir-opt                 0x0000000105f89228 mlir::OpBuilder::create(mlir::OperationState const&) + 28
11 mlir-opt 0x0000000105a29d30 mlir::LLVM::UndefOp mlir::OpBuilder::create<mlir::LLVM::UndefOp, mlir::Type&>(mlir::Location, mlir::Type&) + 140
12 mlir-opt                 0x0000000105a29984 (anonymous namespace)::ReturnOpLowering::matchAndRewrite(mlir::func::ReturnOp, mlir::func::ReturnOpAdaptor, mlir::ConversionPatternRewriter&) const + 572
13 mlir-opt                 0x0000000105a29644 mlir::ConvertOpToLLVMPattern<mlir::func::ReturnOp>::matchAndRewrite(mlir::Operation*, llvm::ArrayRef<mlir::Value>, mlir::ConversionPatternRewriter&) const + 168
14 mlir-opt                 0x0000000105f2df88 mlir::ConversionPattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const + 200
15 mlir-opt 0x0000000106191010 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<mlir::LogicalResult (mlir::Pattern const&)>) + 1420
16 mlir-opt                 0x0000000105f38500 (anonymous namespace)::OperationLegalizer::legalize(mlir::Operation*, mlir::ConversionPatternRewriter&) + 1948
17 mlir-opt 0x0000000105f31c78 (anonymous namespace)::OperationConverter::convertOperations(llvm::ArrayRef<mlir::Operation*>, llvm::function_ref<void (mlir::Diagnostic&)>) + 936
18 mlir-opt 0x0000000105f33d68 mlir::applyPartialConversion(mlir::Operation*, mlir::ConversionTarget&, mlir::FrozenRewritePatternSet const&, llvm::DenseSet<mlir::Operation*, llvm::DenseMapInfo<mlir::Operation*, void>>*) + 80
19 mlir-opt                 0x0000000105a31678 (anonymous namespace)::GpuToLLVMConversionPass::runOnOperation() + 544
20 mlir-opt 0x0000000105ef66c4 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) + 428
21 mlir-opt 0x0000000105ef6bf4 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) + 320
22 mlir-opt                 0x0000000105ef8570 mlir::PassManager::run(mlir::Operation*) + 1148
23 mlir-opt 0x0000000105ef1934 performActions(llvm::raw_ostream&, bool, bool, std::__1::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, bool, bool) + 504
24 mlir-opt                 0x0000000105ef1504 mlir::LogicalResult llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool)::$_0>(long, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) + 704
25 mlir-opt                 0x0000000105f5c9a0 mlir::splitAndProcessBuffer(std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, bool, bool) + 656
26 mlir-opt 0x0000000105eef92c mlir::MlirOptMain(llvm::raw_ostream&, std::__1::unique_ptr<llvm::MemoryBuffer, std::__1::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool, bool, bool) + 216
27 mlir-opt                 0x0000000105eefe20 mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) + 1208
28 mlir-opt 0x000000010478341c main + 108
29 dyld 0x0000000109801088 start + 516

```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWUtv4zgS_jXKhYghkZIsHXJwXjMNJEiQZAbYvRg0VZK5TZFakkqP59cvSEm25EfHne1DY7GNRiyLxXrXV0WTGsMrCXAVJNdBcntBW7tW-uoGBBjLJbzW3K4vVqrYXD0-fHlBq5YLi6hFTNU1t2htbWMCsgjwfYDvK27X7WrGVB3geyHeh4_LRqt_AbMBvu_2Bfg-SnJGWRIG4W0QLl6g0apoGRToG7frgCxQtxCkYS24vlSNRRbqZua-ocvLqmkvrbr0QtKeSfd3S-XUGnh0_1HNhe4Zl61kM_cHNZq_UwsoiENqNpIt4S9grYVlKQOcBThHlwG5Q_458hQzq76CDPAN2r55p6KFgNyUBAfkzm0K5tedJIQCnIQoILeoo9WttLyGGdPg5Tpjp5x3-6Iz9-3J3zHAIwZMaTXjxWiV7K-uoOLS7xtRxftUhr6D3z4Qjdda04As_D7vouRutSLbp2j71Evo3xInqufGytlKHxJhT3SMioyoyISVBttqb1DYxct79MDh3wllx3l-i8ZJtk2pXk6fepoyOEw7pqRRAgalFsaAtlxJVFIuoOjUyXwqk0VAFlSIpSoDnNlNA6bzl6vOAGdvmwaQ7dNrMM4G5BoF81v_GqcBTlGAMbWuEiyXFbIKOR2sbplFFDkmL1RW4GsNyVYI1IvCAc6dQFcYXsUtrX_LBezezFjTuLeCS0A4nHXWPT_cLV7vkGlXDh8oWrUV0tAobZ0aP4wX3JjWKXaPqCwQl0y0BSC7BsQ0NWu0ouyrd3sv_tVS9hUVbd1s4-A0y5-1qjStEdVVW4O0Tgn0IbLssfT-Uq1FZlOvlECS1mBc7ECaVgPaqBatXWl4Izoi_jdoxKVb0-h58fY7UhoZsN4GkO9cK-kUQu9UoyANHx7-fFy-_uPx-unhyz_vXpZui4Muq1CjuPRedACa7-xDO0PCv8LuXxTGGYRZlKFdXpmN6R6eNZfWm_XmM3acfJp-WypjNdDa59IN4rJLOHyNkrQTGY1E7v-bqFCUWRYeU-Glla-8klT8TmUhQJseap2UKOqrHp-2DFYhmjAIcDZSlMRxx4IgJPjKbIyFetkIakul61mxEXw1YklpEUcxi9HS8MpqWjcTc-MJE7vWQItjPHAOEKKeYPmVC-HZ4Czr-CRjPuwIB5bGJA4RXbly8a5I-63px1vJPIkRaO039sA0Py9QaRozkjM0tE2y2NX93tdxriy0ppsXKANyM905tECczZgSxQwPcenVys7TKoyyNM_O02pH9NSAprLoFyZy8-MJlZQl5MXYfM_DAWD3teu4h1Icxat1zdjjqy-YTuDQGaLwLFOTMssxziYaXLdcFKA_qwHuMyeKjttMcV6QcCTRIU_39IcsoHxqPtRmHPaD3Q469rICpz4xRjY8KNa5-SjxgAfx4Ex8njMpzvMsdulHpZKbWrWmw-rGo13eQ5Dvnk_Ng_oGmsuqe1tTy9YLWbzAN833PO664nTvVO_D9UVBG6v0lOxGyXfQhiv57Jq0lr0s3dvsI9kB0LxHwoicbXkaxwey7FPzplyEeoGTyB2xitx97IxdieCFHwO-Dwt_dlPV3WddsUXCKD6zorBrPt-T9eM27lY-UheHQ84mR8svjfIojMJDjoumEZxRlzQ_Wb1xiIb5bql9mFZKuVaVHTAYo0ofvJNM3hUv_msmY2ioOKPiBUwr7Hl8B7jAg-_TM1OFZEkYfoQXW28_QEX9XNe9F_3XM0PzUcp7E_J4yPb5iY5FIjbPzla5h4Etfg-o0C-bj9v6xKAfzoRbTiupjOXsIFw5GYbK7JSppEjHhUybRmyeqbacip03f9j9b1RXYPvS2BHca_U3DEHpQ_QKdpRsY8tvQRp4BXvaV4fkj7T5Ikv13S3OhR6G7_yLzlXZkNf5md2AROnHSfJb03bNYZyZpp_TdSuf5Ei57ZCeDBM2Do-HDco0ZeNWVIClXAzmvqmnxokZOuQgba_QjTmI4OnYLiQVG8PNI5W0At91HbK5z1b6H7qK8WkmHkYkfGJEgjJdlT9uwjNvwB2K9zLSkW41S3-6TVP4N-aLP_C7o6WbPw76w5hgNOkOuj9TDdK6NB0Sf5uFZIBXfOY4BmWWzMM96YM9R-M-dcdwKhwwEZNT4YpyEqMGtDvkLdghsh0ebgdfDp_GFh3pchn1R9Y11VAsG6sDcrNj9apazeCx0gG5m2DDzorHhy8vN0pa-MseAMHn2t40gYZmOrWhL89wKM8zxyUooyQc5_pUkc9ofujLVvJ_t3Dgy0eold5ct2XZJfjhxgJK2gq7LECAP3ic2Nwj5tjT-zHPt9Mto0KsKPu6LKcD8aPg-qmxj5TLD7Ln17DwZ-bSpGULYPYFKm6s3pyol_M--04T4HgZdkdAoWT163jwIEd8Dc23NZScOUcmLKdjoDON4HYhi2etGBgzaP-LVMb_RCV_l-I4NqbD73o4PdFIoMzx-Oeg_yPCT0eE7pQcDZGYn9mloAQcnoxMPwixNe1Gnr2m-2o1l5U72ZxtVz974HCYPY4fUuJ5RuKIoZr627NrFG035KjYiGJMnGdhFGYZMpb2P_Mmgx_2bo4uiitS5CSnF3AVpXOS43ke44v1VZnENE9YnpZlsiqKgiTlfJ7GrIgphrigF_wKh5iEUTQPSZKHeJaVc5zmSR6nGV7Ns3kQh1BTLmbOPTOlqwt_1XKVhmGeXAi6AmH8rTDGEr4hvxhgHCS3F_rK32-s2soEcSi4sWbHxXIr_HWy929yi357_uPSqkt3wEAux5DVvKpAQ4GmN2Gths_fW120Wlx9_nbJW_2fAAAA__8mQ1Ul">