[cfe-commits] [PATCH] Remove -Wdisabled-macro-expansion

Eli Friedman eli.friedman at gmail.com
Tue Oct 30 13:58:43 PDT 2012


On Tue, Oct 30, 2012 at 12:27 AM, Abramo Bagnara
<abramo.bagnara at bugseng.com> wrote:
> Il 30/10/2012 05:07, Ted Kremenek ha scritto:
>> On Oct 29, 2012, at 8:38 PM, Eli Friedman <eli.friedman at gmail.com
>> <mailto:eli.friedman at gmail.com>> wrote:
>>
>>> I think there's a reasonable workflow for small projects which
>>> involves using -Weverything and subtracting out the warnings which
>>> don't make sense.
>>
>> Right.  I commented about this in my other email before I saw your response.
>>
>>>  I agree that there are limits to what we can/should
>>> do with -Weverything; I'm not trying to argue for getting rid of
>>> warnings because they make -Weverything too noisy.  On the other hand,
>>> I think we should have a high standard for the usefulness of
>>> off-by-default warnings.  And I think that there's future
>>> infrastructure work we can do both to help people write higher quality
>>> code.
>>
>> Agreed.  FWIW, the developers we have spoken to about -Weverything
>> really like how it has been very helpful in discovering warning flags
>> that are very good for their codebase.
>>
>>>
>>>>> it isn't acceptable for it to trigger warnings for usage
>>>>> of headers included with the compiler, and as far as I can tell, there
>>>>> isn't any way to fix the header. (See patch for a testcase that
>>>>> checks we don't trigger any warnings from stdbool.h.)
>>>>>
>>>>> I'm planning to commit this unless someone has an alternative
>>>>> suggestion.
>>>>
>>>> Could you suppress the warning if the spelling location for the token
>>>> which would have been expanded is in a system header?
>>>
>>> I think that would end up being more confusing than helpful because it
>>> suppresses some, but not all, loops involving system macros.
>>>
>>> I would put more effort into this if I thought it was generally
>>> useful, but the fact that it isn't on by default, and that the headers
>>> included with clang manage to trigger it, and there isn't any specific
>>> class of users this is useful for, all indicate it isn't worth the
>>> effort.
>>
>> If others agree with this argument, I can see a strong argument here to
>> remove the warning entirely.
>
> This thread clarifies why the warning is very important for a class of
> users and why to reach the same aim has no pratical alternatives
>
> http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20111226/050687.html
>
> Please do not remove it.

Unless I'm missing something, this warning doesn't address any of the
pieces of "Specifically, the use of token pasting (cf. MISRA-C:2004
Rules 19.12 and 19.13), variable argument lists (ellipses) (cf.
MISRA-C:2004 Rule 16.1), and recursive macro calls are excluded by
this rule. All macros are required to expand into complete syntactic
units (cf. MISRA-C:2004 Rule 19.4)."  Actually, as far as I can tell,
"#define true true" doesn't violate any guidelines at all in the
document you cite, ignoring the vague restriction that macros should
be "simple".

-Eli



More information about the cfe-commits mailing list