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

    <tr>
        <th>Summary</th>
        <td>
            LLVM subprojects that use their own tablegen cannot be built with LLVM_ENABLE_WARNINGS=OFF
        </td>
    </tr>

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

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

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

<pre>
    Building `mlir` with `-DLLVM_ENABLE_WARNINGS=OFF` results in an error that `-no-warn-on-unused-template-args` is not defined for internal tablegen executable `mlir-src-sharder`.

```bash
cmake -G "Ninja" -DLLVM_ENABLE_PROJECTS="mlir" -DLLVM_ENABLE_WARNINGS=OFF -B build/Debug llvm
cmake --build build/Debug
```

```
mlir-src-sharder: Unknown command line argument '-no-warn-on-unused-template-args'.  Try: '/Users/riscript/projects/llvm-project/build/Debug/NATIVE/bin/mlir-src-sharder --help'
```

The problem is caused by [`llvm/camke/modules/TableGen.cmake::tablegen`](https://github.com/llvm/llvm-project/commit/d968b173d33be1a5819e9f5f9a8b4258775a65ed#diff-af6c3a2cba6f2d0e48d7e6f6c6ab7084527c8083d5c3ba64f02babec58e0a7eaR84) which adds `-no-warn-on-unused-template-args` to any tablegen executable.

```cmake
  if (NOT LLVM_ENABLE_WARNINGS)
 list(APPEND LLVM_TABLEGEN_FLAGS "-no-warn-on-unused-template-args")
 endif()
```

However, some other subprojects (e.g. mlir) can use CMake function `tablegen` from LLVM with their own tablegen executables that do not have this flag, e.g. [`add_sharded_ops`](https://github.com/llvm/llvm-project/commit/1b232fa0e9864dde230db8da82a906c588baf792#diff-ac43f9356d1ba6701fbc1dcf42ebce1250eec9db8bc5d1d539738e89b8b8ab4bR183).

Currently, to build LLVM one should either avoid using `-DLLVM_ENABLE_WARNINGS=OFF`, or set `-DLLVM_INCLUDE_TESTS=OFF` (this excludes invocations to `add_sharded_ops`).

### Possible solutions
1. Somehow make `llvm/camke/modules/TableGen.cmake::tablegen` detect non-llvm tablegen and omit `-no-warn-on-unused-template-args` flag
2. Generalize fix from (#55716) 983cb6c92fec7b39ec9760f1410d3003484df3a9 to other tablegen usages in MLIR.

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysVk1v27oW_DX05kCGRH1RCy-c2M7LQ-oGidu3DPhxZLGVSIOkkub9-gtKaZu0LtqLewEhCMkj8sxoZmjuvT4axBUpL0i5WfAxdNat7q69vLs-hYWw6nl1MepeaXMEUqVDrx2pUnjSoYvjZHNz8_Hdw3a_vrjZPvxvfbe_3l_dk3zzfreLdQ792AcP2gA3gM5ZB6HjYXrX2OSJO5NYk4xm9KiSgMOp5wET7o4-vq89GBtAYasNKmitA20COsN7CFz0eEQD-AXlOI2-tph4JxPfcacwtrsk6Yak65e_VTo_gvtunpID_4yQXAGhdK_NJ04ohbfQbu_e_3d7eYjQCKUTDT_VvIUPyQWISB2huw2K8Qh9_zi8OTCZ1t9W_dDk2c7n4U9A8zV8MJ-NfTIg7TBwo6DXBoG74zigCUBo_VvSab0EOLjnuBuhNaG7Dx6dJ3TntJdOnwKhu5Ozn1CGOBtBJS9jQndvsdDdfn24_riNC9oQuvuxZ0iSDvtTPOjXuA8dwslZ0eMQBSF5bBvEM0TVVulEK91JPnzGeIRVY4-xtUOUxBWa5UQ3ydckX38VTTyi3BDKuhBOPq7RHaG7ow7dKJbSDi_QfkYYqdXxH9VUTGR1rvJcYMZLljXYtGXbcCYKWrK6LnlVoiI0V7ptE95WMudUCl61VKVYMFVj1Vay4qJOWVHSWrKU5aqUueBV0aZUcIGyZJjyGvkdKwht4KnTsgOulP9TEwUL3Dyf88t5Y8x0TXMAugVC2f79Ac5KnTYvhb32gVC2vr3d7jdz7SGWXm33D7ub9dV9NNfv1Ue_74hG6ZZQ9m3mrDj-Y5_wER2hl-DtgGBDhw78KL5qNLaPy-MSZtM2ILmB0SNcvosmbEcjg7YmkvlKHNA6O0ww5qwLHWoH0VpnaPRzpik7hVXHHxFCpz20PT_GxqbjZ7FypR5m7asHe_L_ggwzQXPa8hQbVhVKIc1TJZjijPImrWTJmOBt3dBvMpRF3jZ5WalM8KpOs1bITMm2oCgkZrRMEWWjBBOyVJkq86bOGbJGMMG4KMRdxnJCmzfSuRydQxP654g22DnRZvasQfCdHXsFqKdvwx-tVjD6lyvlN1dI3NE68BheFV_vL28-bLYPh-394dVtQyibeMcvsh8Vxmvn0UoeP6-PbZ3n_wcshObzA7fWex1vFW_7cdpkrsiWcG8H7OwTTDn-DzIIFAaUAYw1Sdzju7piettB__FNOWltao8u4QoNOt7r_yO0-sus5clJeVnWWRVd0LBciko2tEVZi7xB2dRV2mZFlqo8TfOCFarNeRN5mz31rbXR8-NELry7ub57IW-hVrlq8oYvcJXVtElZWtXVolvVrKoVZ3nRFI0SSjRY01SWVVbSPEt5utArmtIiS7Mqo1mWVcuilI1sswZVnVHOOClSHLjul5GhpXXHhfZ-xFWW0ZKyRc8F9n76CUOpwSeYVmOUlJuFW02-EePRkyKNIeW_bxN06HE1yfR1YExmjglxxvSSm-hxgZPGwxwOvxbwYnT96m97ewIQ1fOC8HFF_woAAP__7b0AwQ">