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

    <tr>
        <th>Summary</th>
        <td>
            Clang-Tidy not reporting errors with -MD cl option
        </td>
    </tr>

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

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

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

<pre>
    We recently noticed some clang-tidy errors that only surfaced after our compiler flags were modified.
I was able to create a minimal reproducible example with the following source file -

``` code.cpp
#include <string>

class A {
public:
    A(std::string aa, std::string bb) : b(std::move(bb)), a(std::move(aa)) {}

private:
    std::string a;
    std::string b;
};
```

Running `clang-tify` with `-MT` generates the expected error - 
```
C:\Dev\clang-repro>clang-tidy --extra-arg-before=--driver-mode=cl code.cpp -- cl.exe -MT /W4 /C code.cpp
1 warning generated.
C:\Dev\clang-repro\code.cpp:5:41: warning: field 'b' will be initialized after field 'a' [clang-diagnostic-reorder-ctor]
    A(std::string aa, std::string bb) : b(std::move(bb)), a(std::move(aa)) {}
 ^~~~~~~~~~~~~~~~  ~~~~~~~~~~~~~~~~
 a(std::move(aa))  b(std::move(bb))
```
But when changing `-MT` to `-MD`, nothing is generated - 
```
C:\Dev\clang-repro>clang-tidy --extra-arg-before=--driver-mode=cl code.cpp -- cl.exe -MD /W4 /C code.cpp
C:\Dev\clang-repro>
``` 

There's also something fishy going on with the argument parsing itself, because the tool gives different results when mixing/changing slashes and hyphens in these cl options.

This issue reproduces on LLVM 15 (bundled with Visual Studio 2022) as well as LLVM 16 obtained via `pip install clang-tools`
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMVU2P2zgP_jXKhXDgyHE-DjlkkgZ4gfby7qA9yxJtcyFLhignkz30ty9kJ2k62851NwhsfZCPHpGPScVMjUPcifJFlMeZGmLrw47dBYl5Vnlz3X1DCKjRRXsF5yNpNMC-Q9BWuSaLZK6AIfjAEFsVwTt7BR5CrZKlqiMG8EMA7bueLAaorWoYLhgQOm-oJjRzkR9Fvv8fXBSDqixC9KADqoigoCNHnbIQsA_eDJqSAb6prrcIF4otxBah9tb6C7kG2A9BI9RkEbIJ-fZc5dMftDc4131_W5cFOW0HgyCKA8dArhHFp2dXbRUz7EGsX6aFfqgsaVHc9gEA9kJuOJq0VuwnFFBKyAO8X60qIbcgij1Uzz6dP6OQm3F3_B9A_WI_YW5HgPWLWB-fafaBziriT7T-QUkUL7_frR67Cfoxvkfu-bD_D84lF7HK71qorym6Y07EKs--vKZpgw6DishjnvCtRx3RTKKBDH55wiGRKg9HPIvyMKGP6RfFpyfdZRm-xaAyFZqswtoHFMUxy0ygM4as8ybNtX2kG7IMtJ3jG0L25RWEPH1bpufhnSAWcFFhvNud-12iv-VVHh4Qxb4UxX65SPm94aRhTWgNCLmuhFzDhayFCoEcRVKW_np8LA87lexE-TIdY0g1znMknQX0wWDIdPRBlMf_iAJBlJ--__wDeLfw_Wb6IejHlH6llpchwqVFB7pVrrlp8qa-6KfJMVnLQ6phbbIg_pHcf1GFx9-r8IPT39ez58_ytcWAQq4ZlGU_1urpxjVxe4XGp7F3PyqnCs3QoYvQq8BjaCKjrVOwKtRqYBzNovcWGjojg6G6xpBcAvJgI0_R7-gtaV2eHmlgq7hFBuUMtNe-RcdALsFxaiDg-0je8fxn_sRAzAM-Kj5yIvz589cvsCghqWFwxqKZ7vCVeFAW_oiDIQ8ylzKpSKUeY216T44r8FVU5NDAmVQSRU89kOOorL13M-8ti1U-M7vCbIutmuFusdoWxXa5KpezdifzYr0qK7XearOslnKzLPQix0LpCtcbtZ7RTuayyDdFvljI5WI5z42u5LberEqsNtuiEsscO0V2bu25m_vQzMa77lblIt_MrKrQ8r0fh10yyqqhYbHMLXHkH26RosXdYeT9mnTofMpH70NMob_15DFCSWaPaM-GYHdtjD0nfcmTkKeGYjtUc-07IU_pgNsr64P_E3UU8jSSZCFPI8-_AwAA__8-7IuF">