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

    <tr>
        <th>Summary</th>
        <td>
            [clang-format] Cannot recognize multiplication semantic of `*`
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-format
      </td>
    </tr>

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

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

<pre>
    Consider the following sample
`enum X {
        two = 2
};

#define FN(N) \
void fn(void *addr) \
{ \
        __builtin_memset(addr, 0, N * two); \
} \

FN(4)

`

And .clang-format containing just `BasedOnStyle: LLVM` 

Then we get the output where clang-format made a 'pointer of type N' instead of multiplication:
`
#define FN(N) \
  void fn(void *addr) { __builtin_memset(addr, 0, N *two); }
`
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMU02P2zgM_TXMhZhAppMoPviQD-Q0mz3souhtoEi0raksGZY8QfrrCztpx9MCg_pAmzLJR74nqhht7ZlLWO9hfVyoITWhL3XDMfnbt2ZxCeZWHoKP1nCPqWGsgnPhan2NUbWdYxBHEDvYCPZDi18R5P5-hI8nXQNCfkR6RMoj5I-Qh6XccGU94-kMtD0DFQjrw_3nW7AGKw-0nb6AdsqY_kMIyP278xP15eUyWJesf2m5jZyAtvfEA4rRnMdSY29ABeT7ebXjzJns1NZqDJx3vRFzd-cNLrVTvn6qQt-qhDr4pKwfmXodYkLYiL2KbP71_6WbY8h3-Pz85R_YCJwX-r9hj1fGmtPEdxhSNyS8NtwzfgBolWFUCCS7YH3iHkOF6dYxnoEkWh8TKzMetoNLtnNWq2SDh_yPET5TAPETDeT-75ieES2Pv9AXpsxNkRdqwWUmKcuKFcls0ZSFMsX2ogXRSl4K2midk6poLSttqBCbhS1J0ErITIp1nmXZkmS23grSeqNMLpSGleBWWbd07q1dhr5e2BgHLotiRHDqwi5Ot55oTioQjXvQl2Pa02WoI6yEszHF90LJJjdtzIfE9REPyvuQsGcdam-_82-8Y-RW-WT1KMnIPU0cDL0rm5S6OOpCJ6BTbVMzXJY6tECnEfbxeur68Mo6AZ2mYSLQ6T7PW0k_AgAA__9Qox34">