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

    <tr>
        <th>Summary</th>
        <td>
            [clang-tidy] [offload] Clang-tidy fails with `--offload-new-driver`
        </td>
    </tr>

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

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

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

<pre>
    Using the new offload driver via `--offload-new-driver` will cause clang-tidy to crash with
```
clang-tidy: .../clang/lib/Tooling/Tooling.cpp:112:
 bool ignoreExtraCC1Commands(const driver::Compilation *):
    Assertion `Actions.size() > 1' failed.
```
 due to the assertion in L112 here:
https://github.com/llvm/llvm-project/blob/2191137dff5e1568319e0605c065678b79184346/clang/lib/Tooling/Tooling.cpp#L100-L126

To reproduce:
```bash
# 1. Create testfile that includes something like CUDA, HIP etc.
(echo "#include <cuda.h>"; echo "auto main() -> int { return 0; }") > test.cpp

# 2. Without --offload-new-driver things work as expected
clang++ -Xarch_host -MJtest.cdf -I/usr/local/cuda/include/ -xcuda test.cpp

# 3. "Fix" syntax to valid json
(echo [; cat test.cdf | sed '$ s/.$//'; echo ];) > compile_commands.json

# 4. Working as expected.
echo "INVOKING CLANG TIDY ON"
cat test.cdf
clang-tidy test.cpp
rm test.cdf
echo "WORKED WITHOUT --offload-new-driver"

# 5. Same thing again, but with --offload-new-driver
clang++ -Xarch_host -MJtest.cdf -I/usr/local/cuda/include/ -xcuda --offload-new-driver test.cpp
(echo [; cat test.cdf | sed '$ s/.$//'; echo ];) > compile_commands.json
# Crash :(
echo "INVOKING CLANG TIDY ON"
cat test.cdf
clang-tidy test.cpp
rm test.cdf
```
Adding `--offload-host-only` will make things work again. So a very hacky workaround is to supply `-Xarch_host --offload-host-only` to heterogeneous compilations, at the cost of getting a million `unused-command-line` warnings :smile: 
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8Vl9v2zYQ_zT0y0GCSFmy9eAHW47brFkyrOmyPRUUebbYUKRBUkm8Tz9Qlh03SIHtYQWCWCTF4_3-8E7ce7UziAtSrEixnvA-tNYtOHfWdNZIrieNlYfFF6_MDkKLYPAZ7HarLZcgnXpCB0-KAymzJBnnE4PPyXGNlBk8K61B8N4jCM3NLglKHiBYEI77Fp5VaEm2JtmSlNn4NwxfXyb5EtI0JWwzzBG20aohbHNvrVbDeHxKxX5P8iWljOTLYxRorNWgdsY6vHoJjtc1rW3XcSM9YXNhjQ8jkLgnX9a22yvNg7IGCFsSVr3GAoCl9-iOi2W2FPHJp179jYTNCauA5FdACZvBliuNMn0XGsgeIwORUH4OqAzcUMqgRYfnM9sQ9j6O2IawzU6Ftm9SYbtIgn46_SR7Z7-hCIRtGm0jN4xWlOYzud0WSItyntMKszIrRFYW5WzezCo6n-bT8l-SyvIbmmXJDWXliGj4f2_B4d5Z2YvXlM9gG-5P0rIcaAq1Qx4QAvqwVRohtDyAMkL3Ej1422Foo9G0ekSov6yXhNXw8fo3wCBOTLI5itYCYYywfNwLJK9FL3nakvwqruQrOL3F-2Ch48qMAiVRIWUCkNkKHIbeGcjiBjJbD0GPGsYcB-QXaCMKlsKDCq3tA7xneBgAeHi27hG4B3zZowgoLyxN2IqwFSR_cifar631AZJffzmeJ7eQXBO26b2LgljBdRSol5ywzQiWsA0kL3Huh0nmaUS-US-EMfAHE_hLtNsT10rCN2_NGy6LVSRA8ADnNMisBo8SCJsRNgVP2CYlbHq0YZw8U1ysSb460SaG24NfxXjF0ovTzulNU3iw7jEqfUHRKPBJt-vbP-4-Xd9-gPpmefsB7q_Xf8HdbVToSOVFsm_rxRteXPfmzdMRD3e_f7paw8P1_ce7L_fv6nk-7zX7IoXPvMOj0sB3g7VqaPow1LL3w_wv8r9vwO898XMlZjnUQ1UfKtb8pyn6pr4upYzafNeUItOJNfpw7kkdf8Tv72vUMoXPFjg8oTtAy8XjYVjjzvZGgvLxHvl-v9eHIfyliu8fFSy0GNDZHRq0vR_5GxqMj8aJsFsEEWPYLewwhMFY0Cmtx0bTm96jTEbKE60MDjC4M0P6JF_6TulYg2EiF7ms8opPcEHLsqpyWmTZpF3M5jjjfJpV2GCz5XRa5rRitMkqKpic4kQtWMYYZRlltKDTLBVl02zntJzjtqqwoWSaYceVTmPPSa3bTZT3PS6KilV0onmD2p8-JdxiaExNv_Nkmmnlg3_dFlTQw0fHRZMv1tGlI4dxVL_KH5upP16vH39pTHqnF_-5Xw4IovcHEP8EAAD__016yaU">