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

    <tr>
        <th>Summary</th>
        <td>
            `-Wimplicit-fallthrough` suggests to use a macro from a random third-party library instead of `[[fallthrough]]`
        </td>
    </tr>

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

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

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

<pre>
    Here's the code:
```cpp
#define FMT_FALLTHROUGH [[fallthrough]]

void a();

void b(int x)
{
    switch (x)
    {
      case 1:
        a();
 case 2:
        a();
    }
}
```
When compiled with Clang 17 (or trunk), it says:
```none
<source>:11:7: warning: unannotated fall-through between switch labels [-Wimplicit-fallthrough]
   11 | case 2:
      |       ^
<source>:11:7: note: insert 'FMT_FALLTHROUGH;' to silence this warning
   11 |       case 2:
      |       ^
 |       FMT_FALLTHROUGH; 
<source>:11:7: note: insert 'break;' to avoid fall-through
   11 |       case 2:
      |       ^
      | break; 
```
Notice how it suggests using `FMT_FALLTHROUGH` instead of `[[fallthrough]]`, presumably because it finds a macro that expands to this attribute.

Now this is clever in theory, but in my case, the macro comes from a third-party library (libfmt in this case), and I wouldn't want to use their internal macro in my code.

I suggest that this warning should suggest always suggest `[[fallthrough]]`, never a macro.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVVGPmzgQ_jXOyygRmATCAw_ZtLmt1OtJp576eBpgAr41dmQPS_PvTwaSTbNbbU8XoWBmhpnv-2Zs0HvVGKJCbB7E5sMCe26tKx6tPj9orJ72yIvS1ufikRwJmXnglqCyNYlkJ6IPItqJNJqu6nSaLTKp6agMweH3r38fdp8_f33884-_fnuEscrDEbXm1tm-acXmQ7im18b_Z6tqQCG3QuYieXjlKoXcKsPwPfgnZzZHAQD4QXHVgpDbl4Bg_yEIoEJPEF85wPy7rzvFyffjxgoXHtfFRZnp8VtLBirbnZSmGgbFLew1mgbiLOC1Dtj15inklXtQDB7P_rXMxhqaTcne295VJJKPItnFgU8mkh0M6IwyTVj2Bo2xjEw1BN2Xs_BQEg9E5iKYxpK0Dw1aflPdSatK8fKuUReqcQwi27-tTXDMq83Hd2Aay2GMQBlPjkHI7G5egr4yA7bglSZTEXCr_JXeHZ6bzv4Cqhvb66rwn5GXjvDpBS-Os3or-P9Ee3VcCsGbM_bFsqoIWjuMA9Q3DXn20HtlGhBpdE81jQIHJqzBHkPAz3ZoGoWhPDnyfYelPkNJFfaeQpmjMrUHhA4rZ4FbZKDvJwxGtlPLkNmpsmda3W7oL3aY3MpDpemZHCgTThjrzqFc2XMwdOdRp2AJp89UprIdeTg62wGGJK5entDxGbQqHbpz2FJalceOp5yhxJhk3F1oavgEg-11bYTMGAY0HNAGStySCkiYnEE915tx2PpHCp8uIk-8b-cTfBvyXwNQD3j218d3xTajILOsq0VdJHWe5LigIk7zXGb5JpKLtqB8Q3VebbMsrre1XJe4WecU5Tlu0-goo4UqZCSTOI7SeB2tN3KVR0i0lbXEHMt4k4p1RB0qvdL6uVtZ1yyU9z0VWZzk2WI6GcYPhJSGBhidQsrwvXBFeGdZ9o0X60grz_4lCyvWVIg0-smRkkYvEzpLfxmiua8OTW27N9v7q2O76J0uWubTeJTKg5CHRnHbl6vKdkIeAtr5tjw5-w9VLORh5OiFPIwa_BsAAP__5UYarg">