<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJy9VV1vmzAU_TXwclUEJgnhgYekaaVpH33opj1GBi7g1bEjbJK1v37XQNokbbdOmyqZYPvi43vPOXZyXd5nn4USGy6hxW2ry64QuUTAn3yzlejFCy9ceeHCm4VDK7qSD1PrdS11zuV6DTstSqi09tjcYyl4ydJLVuPC_lcoCxsu1PDBGKGv-g70S-PLoUUeu4TIi6_GNqyIl4dFq7OEjrf5hNZjiSG8dsMtCAt7YRsoJFf1xThJgHuEPaeMrIbOIBDI7ZYXaD6ohaolGqoaFnLP7w2FQCjQXQtEzg8sbJ_MOSnjkE1Ot7ow9p649BijWpfcYHmjbt2U22CjH4SU3FX76u5ULGOOnaDoXiR9mHxk_onYZ_QPnT9qAIdnkIG6V4fnjUp80VYUCLYhAmyDcPlttYA7bBVKkLxTRUPkG3LbyJLFkigmKQjhrTnMwgBuPrqoHBW37b2TsxSGO_ueyEAC2kYYyKUu7t7J0R67pnaah66qvzf8K1Dq9yIsu5589d5WzXn7DlZ9E7lwxi78R3q_I9TagtEbJGepGlAadBvlxPsJkrHEHDnQYOuMzsD0BA6exMGSsG-wRXdbmUZ3soSG7yiEqA5-LoNjir6icVjPr7YdtkZoBVEchEHol1lcpnHKfd7ZRreZ5M2e8-LB71qZNdZunX5D-TVhdXlQ6A0NpNwdXhePt961MKYjxdn1lM3nkd9kVTVPWYiTaZpWeRJHs1lSsSidTydJEkVJ4kueEy-ZN12SNRTuoYdwFpuu_H_PQGQsZFHE2CyahGkcBtNkHs2iaVkURZXP5nNvEiK5SAYOJ9Bt7RMHDjLvakNBKYw1T0FujKgVYp8wZWiFlf3gmGMKwL7VJPl4ezn1dfXCLUciO68dTnkQBEdHPHWaq7PTRPyAwf5vaThUfl9x1pf7Cx6DNm0>52881</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang-format] wrong formatting of CUDA kernel launches (<<<...>>>) when SpacesInAngles is set to Always
        </td>
    </tr>

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

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

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

<pre>
    Minimal reproducible example:
```cuda
__global__ void foo() {}

int main()
{
  foo<<<1, 1>>>();
}
```

Let's format it with clang-format (we want to use `SpacesInAngles: Always` in our project):
```
$ clang-format -style "{BasedOnStyle: mozilla, SpacesInAngles: Always}" foo.cu
__global__ void
foo()
{}

int
main()
{
  foo< < < 1, 1 > > >();
}
```
Notice that the CUDA kernel launch was re-formatted into `foo< < < 1, 1 > > >()`. OK, let's try to disable clang-format in this block:
```cuda
__global__ void foo() {}

int main()
{
  // clang-format off
  foo<<<1, 1>>>();
  // clang-format on
}
```
But then:
```
$ clang-format -style "{BasedOnStyle: mozilla, SpacesInAngles: Always}" bar.cu
__global__ void
foo()
{}

int
main()
{
  // clang-format off
  foo< <<1, 1> >>();
  // clang-format on
}
```
We got something else, but clang-format still inserted 2 spaces in the block where it should have been disabled.

Tested with clang-format version 13.0.0
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy9lF1vmzAUhn8N3BwVgQkJueAiaVpp2kcvtmmXkYET8OrYETZh6a_fMZA2Sdutk6ZKJgEf-3w857VzXR6yz0KJLZfQ4K7RZVuIXCLgL77dSfTihReuvHDhTcNhFG3Jh6n1upI653K9hr0WJWy09ljqsTl4s6U3W40b-1-hLGy5UMOC0UKr-hfot8bXw4g8dg2RF9-MY9gRL4-bVhcJnYb5hNZjM0P-mi23ICx0wtZQSK6qq3GSHHYIHaeMrIbWIJCTrzteoPmgFqqSaKhqWMiOHwyZQCjQbQME5ycWtk_mEsr4ySbnoa6MPRBLjzGqdckNlnfqq5tyAbb6QUjJXbWvRqdiGXN0gqJ9Efow-Uj-Cewz_MPLX3sAx2doA73eHJ83duKLtqJAsDUBsDXC9ffVAu6xUShB8lYVNcE3pLaRksWSEFMryMNbc5iGAdx9dFY5dtw2B9fOUhju5HvWBmqgrYWBXOri_p0U7bFbGud56M3m3wX_iiv15yYs2x6-em-p5rx5B6m-CS5c0IX_iPcHQqUtGL1FUpaqAKVBFygn7meejCVypECDjRM6A9MDHDSJgyShq7FBd1uZWreyhJrvyYSojnoug1NE39A4X8-vtj02RmgFURyEQeiXWVzO4zn3rbASMy9Znq72khV0jabkx3Po6tCbF84rpeuoHfUaBMGJWOcue3WhC6DTZrC_YAd5-G0js9ranZPMQLyi9Ns8KPSWPqTcH_-uHi_aW2FMSyJjtwlL08ivM57MwnxSRjFnUTLl6bwsWILTMkrDSVRsSl_ynFrhSiU1Kuygd-FUnax8kbGQRRFj02gSzuMwSGZpNI2SsiiKTT5NU28SIslOBi6PQDeV32R9SnlbGTJKYax5MnJjRKWwJ-v889bWmnbwuuO8ePD72Fmf-2_K_SHk">