On Thu, Dec 12, 2013 at 8:04 AM, Alp Toker <[email protected]> wrote:
>
> On 12/12/2013 12:47, Alp Toker wrote:
>>
>> Author: alp
>> Date: Thu Dec 12 06:47:48 2013
>> New Revision: 197150
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=197150&view=rev
>> Log:
>> Suppress -Wshadow / -Wold-style-cast expanded from system header macros
>>
>> Thanks to Jonathan Sauer for providing initial test cases.
>>
>> Fixes PR16093 and PR18147.
>>
>> Added:
>>      cfe/trunk/test/SemaCXX/warn-sysheader-macro.cpp
>> Modified:
>>      cfe/trunk/lib/Sema/SemaDecl.cpp
>>      cfe/trunk/lib/Sema/SemaExpr.cpp
>>
>> Modified: cfe/trunk/lib/Sema/SemaDecl.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=197150&r1=197149&r2=197150&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Sema/SemaDecl.cpp (original)
>> +++ cfe/trunk/lib/Sema/SemaDecl.cpp Thu Dec 12 06:47:48 2013
>> @@ -5599,6 +5599,8 @@ void Sema::CheckShadow(Scope *S, VarDecl
>>     DeclarationName Name = R.getLookupName();
>>       // Emit warning and note.
>> +  if (getSourceManager().isInSystemMacro(R.getNameLoc()))
>> +    return;
>
>
>
> Incidentally, isInSystemMacro() calls are scattered all over the place right
> now to suppress various warnings.
>
> It'd be great to replace those with a diagnostic TableGen bit indicating
> which warning groups are meant to be suppressed when expanded from a system
> macro.
>
> (Would save a few cycles to delay the check until emission time, and would
> let us make the suppression conditional on -Wsystem-header.)
>
> Aaron, as resident TableGen guru do you have an idea what it'd take to get
> that set up? :-)

I've not worked on the diagnostic tablegenning stuff before, but I
would imagine this is a case where you'd simply add a field to the
diagnostics in the td file, update the DIAG macro definitions as
appropriate, and then update ClangDiagnosticsEmitter.cpp to handle the
new field and output properly for the DIAG macro. Then the diagnostic
emission code could check the flag as-needed to determine whether the
output should be suppressed or not. Note, this is based on very little
analysis on my part, so I could be wildly off-base too. ;-)

Long story short: seems doable at first blush.

~Aaron
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to