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

    <tr>
        <th>Summary</th>
        <td>
            mlir-opt says there is no such emit-c-wrappers
        </td>
    </tr>

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

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

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

<pre>
    Hi, I am trying to use mlir tools to convert code in a linalg dialect into a callable function in c++. However, I keep running into the issue that there does not exist an option called emit-c-wrappers in mlir-opt yet there are references in both the [help](https://gist.github.com/segeljakt/ef974041bd529389ec7895a92f3185e6) and [online](https://reviews.llvm.org/D77314) of this option.

This is command in question:
```
/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt linalg_cgemm_naive.mlir -convert-linalg-to-loops -lower-affine --convert-scf-to-cf --convert-cf-to-llvm --emit-c-wrappers -o linalg_cgemm_naive.opt.mlir
mlir-opt: Unknown command line argument '--emit-c-wrappers'.  Try: '/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt --help'
mlir-opt: Did you mean '--test-matchers'?
make: *** [linalg_cgemm_naive.opt.mlir] Error 1
```

Also, if remove `--emit-c-wrappers`, I get the following error:

```
/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt linalg_cgemm_naive.mlir -convert-linalg-to-loops -lower-affine --convert-scf-to-cf --convert-cf-to-llvm -o linalg_cgemm_naive.opt.mlir
mlir-opt: /home/nicholai/prog/software/llvm-project/mlir/lib/Dialect/Linalg/Transforms/Loops.cpp:208: mlir::FailureOr<llvm::SmallVector<mlir::Operation*, 4> > linalgOpToLoopsImpl(mlir::PatternRewriter&, mlir::linalg::LinalgOp) [with LoopTy = mlir::scf::ForOp]: Assertion `linalgOp.hasBufferSemantics() && "expected linalg op with buffer semantics"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /home/nicholai/prog/software/llvm-project/build/bin/mlir-opt linalg_cgemm_naive.mlir -convert-linalg-to-loops -lower-affine --convert-scf-to-cf --convert-cf-to-llvm -o linalg_cgemm_naive.opt.mlir
 #0 0x000000000049cd81 PrintStackTraceSignalHandler(void*) (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x49cd81)
 #1 0x000000000049a794 SignalHandler(int) (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x49a794)
 #2 0x00007fa8f7909630 __restore_rt (/lib64/libpthread.so.0+0xf630)
 #3 0x00007fa8f64f6387 __GI_raise /usr/src/debug/glibc-2.17-c758a686/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:55:0
 #4 0x00007fa8f64f7a78 __GI_abort /usr/src/debug/glibc-2.17-c758a686/stdlib/abort.c:92:0
 #5 0x00007fa8f64ef1a6 __assert_fail_base /usr/src/debug/glibc-2.17-c758a686/assert/assert.c:92:0
 #6 0x00007fa8f64ef252 (/lib64/libc.so.6+0x2f252)
 #7 0x00000000008f0bf4 mlir::FailureOr<llvm::SmallVector<mlir::Operation*, 4u> > linalgOpToLoopsImpl<mlir::scf::ForOp>(mlir::PatternRewriter&, mlir::linalg::LinalgOp) (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x8f0bf4)
 #8 0x00000000008f0cc9 (anonymous namespace)::LinalgRewritePattern<mlir::scf::ForOp>::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x8f0cc9)
 #9 0x00000000033b8e0d 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&)>) (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x33b8e0d)
#10 0x0000000001470fd9 (anonymous namespace)::GreedyPatternRewriteDriver::simplify(llvm::MutableArrayRef<mlir::Region>) [clone .constprop.0] (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x1470fd9)
#11 0x00000000014730c3 mlir::applyPatternsAndFoldGreedily(llvm::MutableArrayRef<mlir::Region>, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig) (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x14730c3)
#12 0x00000000008e9e91 (anonymous namespace)::LowerToLoops::runOnOperation() (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x8e9e91)
#13 0x00000000013fa5da mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) [clone .localalias] (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x13fa5da)
#14 0x00000000013fad08 mlir::detail::OpToOpPassAdaptor::runPipeline(llvm::iterator_range<llvm::pointee_iterator<std::unique_ptr<mlir::Pass, std::default_delete<mlir::Pass> >*, mlir::Pass> >, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) [clone .localalias] (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x13fad08)
#15 0x00000000013f8f13 mlir::detail::OpToOpPassAdaptor::runOnOperationAsyncImpl(bool) [clone .localalias] (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x13f8f13)
#16 0x00000000013fa0c9 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) [clone .localalias] (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x13fa0c9)
#17 0x00000000013fad08 mlir::detail::OpToOpPassAdaptor::runPipeline(llvm::iterator_range<llvm::pointee_iterator<std::unique_ptr<mlir::Pass, std::default_delete<mlir::Pass> >*, mlir::Pass> >, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) [clone .localalias] (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x13fad08)
#18 0x00000000013fbebd mlir::PassManager::run(mlir::Operation*) (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x13fbebd)
#19 0x00000000013bbffd performActions(llvm::raw_ostream&, bool, bool, llvm::SourceMgr&, mlir::MLIRContext*, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>) [clone .constprop.0] (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x13bbffd)
#20 0x00000000013bc475 processBuffer(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, bool, bool, bool, bool, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, llvm::ThreadPool*) (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x13bc475)
#21 0x00000000013bc86d mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer> >, llvm::function_ref<mlir::LogicalResult (mlir::PassManager&)>, mlir::DialectRegistry&, bool, bool, bool, bool, bool) [clone .localalias] (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x13bc86d)
#22 0x00000000013be2ed mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&, bool) (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x13be2ed)
#23 0x0000000000410cee main (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x410cee)
#24 0x00007fa8f64e2555 __libc_start_main /usr/src/debug/glibc-2.17-c758a686/csu/../csu/libc-start.c:300:0
#25 0x000000000047eb94 _start (/home/nicholai/prog/software/llvm-project/build/bin/mlir-opt+0x47eb94)
make: *** [linalg_cgemm_naive.opt.mlir] Aborted (core dumped)
```


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztWltzozgW_jXOi8ouDMbAgx_cuUynKqmkksy-uoQ42EwAMZKI4_31eyRhG7A7mWTi6d2tTjlGFtK5fOeiI0HMk83sezZwz8k1oQVRYpOVS6I4qSWQIs8EtnkudQ_j5QsIhdcESFYSSvKspPmSJBnNgSnsw1GUMJrnNM6BpHXJVMZLPZgN3G_4GZHvfA1IxnJ8BqiIqMtSMzXT1QppS1kDtqjSPwWQhIMkJVcEXjOpCC0JrwxhzQoSAkWmhmy4FrSqQEjNT4s-xFFkA1sqFP8FpNgsGZhBMVcrw3Hgf1tBXg38i4EbrpSq5MCbD9wr_CyR42iZqVUdjxgvsEfCEvI_6LPCNqRRMHEm4zjx3cgLI2BBGPk0clNvHPowHbgRiptoBrxEuOAYCwEvGazlKM9fihEXS-y6CAJvPNGzeYoSZrLReDRwLgbO3H4_6X78oFiFZoIa_VmD1OM0bTty6jQf-9O9WvEC8FJmbMVziqa_qgTXPCVP1RpBwqaWZIjdf6BZ8WdcZ3mir1mJ3ztorfkXbAlFsShp9gIj4zHDxlOGdsBQ8WHOeSUJXtYghjRNEQky3I2TLNWDWNrqs11aEOzsG3jIjzFHmYwAVtWtmAgF-b18Lvm63CGlLYH-sKwLKBUZuMEBC-wbEfIkNno6_vhS4IZD421I9UDSiywhG16TAtDLjWAKLTosqGIrK9bAu2qm0Wew0s3tR3vZW7D4F-RSCC7I-LhvmO95LrkOzizFYCn4CwbH1DmEByeZCF7a8CIpz9G4OoxBs9j73_-PF37Q5z6npKGFvVmss4BNrNi6MZyx8SRoKVMuCql7tT4jVlXIz3VCzdXMR_C9-RXN8lrAHf4810xs72OBKfNfSFTb6Hw_-g6tSk3m0K50TiYD75Lof6vzXfXEDbfrosoxge0n3lOlQJQPsBaZ0nl9qqfv79v5tn3T0NJ5DX11jVmVaKpPG2R10ZqEpmiU4OLOpGVUbS4lmkSnfXSkrVijFZXf6hSz-iNgaKuMITChYaAlmeLFhdcKFYZku17xihjWsZlH5H6ii_FFUgQOkibT3t9czh8viaxjDABc3OJ6iXFRcVwHcbXqLxWtVcJAfmBes7Rp0xGbsFleJ2ACiAkqUSTKnpWgDBr2jwo7SFIX1S6iHMxL-u8eXUngkr1NY_LzTvc_EFmomecQ59XZ_U0iloRjhAHrBgPTk8btMVsipe-Ibq6dMXzhWWJcWjtE-JXwYDXjvFohkPpeynFPShpEE9IXC2U-nUiaY0cktxEpSGmYBpETTRHLxULgysIFLIRqBMGsM53Ya6VWAmgyknzkGLIpzukQ9dpEpxO8HwZI9LfrhaAZFo9Ip5Y6l0mBxd9VAhg6OkiQOBu6o3EwZIEf0mk41WMMPtgYjTQSldJtuZEJVDpa6jJ7tR0vRryy1j8NnxFDv_d9_HL2sk16sgU0CK1sNOZG3Y_IphKbjs1cwy9yu_z8Lj9Ix3SK_KjJWAudUBYx_SgmdvaucZTxtM_Y9d1DYzJtxqkxo6tHdOwYdPw1TJ04nXzdMlK_tY60Z_ZSvnf5NavMCQLMQtTBMOxjyJjhTUtebgpe4-6FFiArTFB6XkvMRqNGv3cQMb9MKTgvk2ZmB6Y-_G8DGOktnVSnAgkx6IAUtUHyvDgEJzmUcF5Vecao4uKr1T0ne__dbk0xByLI5zHucckxh7MIWbSMT75BRC81f5vIfvINXyIO-QPIOld_je5p_L0x1c6Weo3rLMXjSeCkybsO_5sASDZdy1yITB8GWH_PMCdk6QbJ7OG5rZU-S5gLQTcPPYQeYGm2updNPclyjmXHyKCCmlW4cuGW5xSQNBp3IBn3IPEc5rU8EvdN-VZ5if58xfPEIJLln9K47e1Xgv8bym4qeQTV8o_2aGuHZvQ5L9NseSrXaWDo4OR2cyVEEI3fzZW6rmxWDtsj6vKubMV_eLJsbwTsaOB1LO2l1E9oC98EFK6Z2wz1xO-qe1zB5wmtdkkNpe8FtJQHOezH2W2OK8dGZvKWlnRpz9J0BtPXutSlFOi9heqGRc4xm9A8o_JkUWGh6GA16WOVOOGHsbrPKjCHZ-040XldLxNYbpZL6FQnFUftARbbIXgTizh7D0vJP2tYVKpbuFgLnJPduARSiol3kUAOCg7H2rLmyMLTuvfF1uzzucboFmbvhyoeE2Q_gG4PBfFGA-Y9mrdU12XKt3li_jMcBv2h4zB-z2HCdOx92GFaqWEuNyVrTi0srP-4jlqFjo7TflA4WC7-SiCvDRQdrIJfCeRXAvlIAgl7DhNDnPTU2gJ1NJS6OJ-oLrJideSOunLHcZomBGXRh71zs0WQHfcVdL3gaB6gRVPibY2-vba267wWDG6Xhxvn25vrB6wBFbyqxgP-7tZkD29nY_KPlucWvTa8rtODl00CnyA1BrI5QH4H3eMJoFW3Q8HFZkvqrUTwgzn7oO8b8seG_ToTtZ2iee6gdxsIweZg9_xkzgbvjTQnjBFjo44Rx30jhtN2bN9i665St1RT-28x5s8x1nsu9HNKIWOwjkXdnkXBhR9btFnE2IqK7UPPTpZTIiuXes_8lwE6metqPTqKet3HAmOHAZAC9TrNQwBDvyNA70wcXN_3yWKhj4cXUlGhFo00HziiZrIeNGf2tmlGGWrmuNpznMHuvFoL4XdRCCCOJsSyPw0OhsMOh888Mp_rU38wJ3uM65dR6qJq2_bYQ_SzZOYlkRfRM5WpHGa7R2qSbmTzOkqmX2khsmar_vsrZ7XIZ59_tOj7TjQ5W83SZOyMqetOaTSmCQ1dFoQsCNjYjcCjwM5yGkMuZwjBwHVLWNsXb_RTUP_iLJu5jus6E3fq-JOpE45i5scujScODRFSNx1MHECPyXevrZyJmREJHUbizRyjbf9OyxnmMV2JgmGH9GmtVlzMtnZ-qp9pyV_OjAgzo8J_AJs7kMY">