[cfe-dev] [PING][BUG] -Wunreachable-code not working

John McCall via cfe-dev cfe-dev at lists.llvm.org
Sat Apr 14 02:49:32 PDT 2018

> On Apr 13, 2018, at 2:43 PM, Artem Dergachev via cfe-dev <cfe-dev at lists.llvm.org> wrote:
> On 4/13/18 7:48 AM, Martin Galvan wrote:
>> 2018-04-12 22:53 GMT-03:00 Artem Dergachev <noqnoqneo at gmail.com>:
>>> Such suppression might probably be made less brutal, but i'll be surprised
>>> if it were possible to get away with not having it at all. And it's pretty
>>> tricky to find deadcode before the preprocessor runs, when you're still
>>> capable of accidentally concatenating 'ret' and 'urn' into 'return'. So it's
>>> not the most pleasant problem to solve, and it's usually not that terrible
>>> when we don't give a warning (it's much less terrible than emitting a
>>> warning that's not actionable), so people usually make various suppressions
>>> for this sort of stuff.
>> Agreed, but wouldn't it make more sense that the dead code
>> identification happened after the preprocessor is done? I know nothing
>> of clang internals, that's just what makes sense to me.
> Then it'd produce false alarms on the "WINDOWS" example i posted previously. It is inevitable that a deeper analysis that involves exploring both a fully constructed syntax tree and rich preprocessor information is necessary. Clang does provide such information, but probably the deeper analysis is not implemented beyond the "hmm there's a macro, let's silence the warning" level of ingenuity.

Yes, this is exactly right.

I think the fix here would be to try to make the silencing ask whether *everything* about the dead statement is a macro instantiation rather than *anything*.


More information about the cfe-dev mailing list