<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=http://email.email.llvm.org/c/eJylVN9v2yAQ_mvwyymRjWsnefBDuzRS36Zp0p6xOTtMGFzAida_fmecrkmaVpsWAbmPO-4Xn6mt_FV93yO0Vmt7VKaDxkqE4FTXofMgYLABTVBCQyu0R8JeBXVAUAZYmf4YjUGUKBc99jW6RTuaJihrSMfSLUvvTyvBeURoRI9-EA3CSb16mAUf3NgE2Fl7pQD6Tbt8zfgGWL4Fia0YdWD5mcW1La1UkfGB8fLtnMaAF8eicQl2QCeCdWT1d2dvhIvG5Wc5fhTs85Nstb2Qz-IfrJLQnjJuowPq2qXNvCoToBfKzF280eH2NZWop_E-5OVFXkFvR9dQfx5Zfl-cJhyFM0StSZxJAq8kAcZXMdwKlAdjA8xkAmEkHJXWca9GwF6FQPuseFh8TLli-09cKR5vlxTXpxaewGFvieqBvpDIhImbdGP8y2mLPpUjxeWrQKAflMbluY9vODg7lb0PYfAkML6j0VlZWx2W1nWEXmg2e5H558fVcyKrXG7yjUjEGPbWVY1w2vpO6AO-DMnodHXlS4X9WC8pOgGtD69_C4r8Exvi7k55P6InoeDrvEj21bpJMc24LNKybHEj641s2zqtmyLNa85XiRY1al9RsxnnjRZ0d5xPVf-B-X3rrKGXQU6aYpv8f16q4inPMs45zTUvlxlymWWCt8Vdk2atYHcpEnn1cvIzNS9xVXRZj50npVY--Del8F51RJRYBmUYVNARzBUUW9jFB-3r2YMWqXWLWfkuielWMdffblWF1w>52835</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang] False Positive in Wunneded-member-function?
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang,
            clang:frontend
      </td>
    </tr>

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

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

<pre>
    The following code triggers a potential false positive in `Wunneeded-member-function`

```
namespace 
{
struct Foo
{
    Foo() = default;
    
    Foo(Foo const&) = delete;
    Foo& operator=(Foo const&) = delete;

    Foo(Foo&&) = default;
    Foo& operator=(Foo&&) = default;
};
}

void f(Foo f) {}


int main()
{
    f(Foo());
}
```
```
source>:5:5: warning: member function 'Foo' is not needed and will not be emitted [-Wunneeded-member-function]
    Foo() = default;
    ^
```

If I remove the constructor, the code won't compile.

Repro: https://godbolt.org/z/cha1sqE7q
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyVVFGPmzAM_jXhxWoF4YD2gYfeepXubZom7TmAQzOFhEtCq92vn0l7u7brnTaUGDt24s_mC43tftXf9wjSam2PyvTQ2g4hONX36DwIGG1AE5TQIIX2SLZXQR0QlAFWpj8mYxA77BYDDg26hZxMG5Q15GPplqWbsyTzNKJpxIB-FC3C2V09nhQf3NQG2Fl74wB65lW-YnwNLN9Ch1JMOrD8IuI2liRVZHxgvHzfpzHg1bYYXIId0YlgHUX929476WJw-RnGj5J9vpNV2yv9Iv_Bqg7kGbGMB1DXrmNOUpkAg1Dm1MU7HZZvUKKfxt8prz_kjent5FrqzxPLN8V5wlE4Q9Sa1RNJ4I0kwHgV01WgPBgb4EQmEKaDo9I6rjUIOKgQaJ0Vj4uPKVds_4srxdP9kqJ8lvAMDgdLVA90QyITZm7SF-Nfzkt0VY6Ul1eBjGFUGpeXZ3zD0dm57H0IoyeF8R2N3naN1WFpXU_WK812LzL_8lS9JF2dd-t8LZKggsaa6m21oN4VW9jF-_f14v7FTtxrRL5LJqfrm7Qq7KdmSUDJ0Prw9loQyJ_YEs13yvsJPSkFX-VFsq-lLNdVWT2IVY6FqLJ1VmXtql0VOe_atJWJFg1qP-NknJ-gcj436I-Zb6Szhn4i3ewptomqecqzjHNOc8XLZYa8yzLBZfHQppkU7CFFYqlezujmLiWujkCbqffk1MoH_-4U3queGBFB0PliCnvr6lY4bX0v9AFfxyRWVseyfgPc82_u">