r291963 - [clang] Emit `diagnose_if` warnings from system headers

Hans Wennborg via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 31 10:36:15 PST 2017


Ping?

On Thu, Jan 26, 2017 at 10:21 AM, Hans Wennborg <hans at chromium.org> wrote:
> Ping?
>
> On Mon, Jan 23, 2017 at 4:27 PM, Hans Wennborg <hans at chromium.org> wrote:
>> Ping?
>>
>> On Tue, Jan 17, 2017 at 4:16 PM, Hans Wennborg <hans at chromium.org> wrote:
>>> Richard, what do you think?
>>>
>>> On Fri, Jan 13, 2017 at 3:16 PM, Eric Fiselier <eric at efcs.ca> wrote:
>>>> I would love to see this merged. It would make it easier to write libc++
>>>> tests if the tests didn't have to worry about the old 4.0 behavior.
>>>>
>>>> CC'ing Richard: Would merging this be OK?
>>>>
>>>> On Fri, Jan 13, 2017 at 3:46 PM, George Burgess IV
>>>> <george.burgess.iv at gmail.com> wrote:
>>>>>
>>>>> Do we want to consider merging this into the release branch? Seems like
>>>>> more of a bugfix than a feature to me.
>>>>>
>>>>> On Fri, Jan 13, 2017 at 2:11 PM, Eric Fiselier via cfe-commits
>>>>> <cfe-commits at lists.llvm.org> wrote:
>>>>>>
>>>>>> Author: ericwf
>>>>>> Date: Fri Jan 13 16:11:40 2017
>>>>>> New Revision: 291963
>>>>>>
>>>>>> URL: http://llvm.org/viewvc/llvm-project?rev=291963&view=rev
>>>>>> Log:
>>>>>> [clang] Emit `diagnose_if` warnings from system headers
>>>>>>
>>>>>> Summary: In order for libc++ to meaningfully use `diagnose_if` warnings
>>>>>> they need to be emitted from system headers by default. This patch changes
>>>>>> the `diagnose_if` warning diagnostic to be shown in system headers.
>>>>>>
>>>>>> Reviewers: george.burgess.iv, rsmith, aaron.ballman
>>>>>>
>>>>>> Subscribers: cfe-commits
>>>>>>
>>>>>> Differential Revision: https://reviews.llvm.org/D28703
>>>>>>
>>>>>> Added:
>>>>>>     cfe/trunk/test/Sema/Inputs/diagnose-if-warn-system-header.h
>>>>>> Modified:
>>>>>>     cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
>>>>>>     cfe/trunk/test/Sema/diagnose_if.c
>>>>>>
>>>>>> Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
>>>>>> URL:
>>>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=291963&r1=291962&r2=291963&view=diff
>>>>>>
>>>>>> ==============================================================================
>>>>>> --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)
>>>>>> +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Fri Jan 13
>>>>>> 16:11:40 2017
>>>>>> @@ -3380,7 +3380,8 @@ def note_ovl_candidate_has_pass_object_s
>>>>>>      "candidate address cannot be taken because parameter %0 has "
>>>>>>      "pass_object_size attribute">;
>>>>>>  def err_diagnose_if_succeeded : Error<"%0">;
>>>>>> -def warn_diagnose_if_succeeded : Warning<"%0">,
>>>>>> InGroup<UserDefinedWarnings>;
>>>>>> +def warn_diagnose_if_succeeded : Warning<"%0">,
>>>>>> InGroup<UserDefinedWarnings>,
>>>>>> +    ShowInSystemHeader;
>>>>>>  def note_ovl_candidate_disabled_by_function_cond_attr : Note<
>>>>>>      "candidate disabled: %0">;
>>>>>>  def note_ovl_candidate_disabled_by_extension : Note<
>>>>>>
>>>>>> Added: cfe/trunk/test/Sema/Inputs/diagnose-if-warn-system-header.h
>>>>>> URL:
>>>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/Inputs/diagnose-if-warn-system-header.h?rev=291963&view=auto
>>>>>>
>>>>>> ==============================================================================
>>>>>> --- cfe/trunk/test/Sema/Inputs/diagnose-if-warn-system-header.h (added)
>>>>>> +++ cfe/trunk/test/Sema/Inputs/diagnose-if-warn-system-header.h Fri Jan
>>>>>> 13 16:11:40 2017
>>>>>> @@ -0,0 +1,11 @@
>>>>>> +#pragma GCC system_header
>>>>>> +
>>>>>> +inline int system_header_func(int x)
>>>>>> +  __attribute__((diagnose_if(x == x, "system header warning",
>>>>>> "warning"))) // expected-note {{from 'diagnose_if' attribute}}
>>>>>> +{
>>>>>> +  return 0;
>>>>>> +}
>>>>>> +
>>>>>> +void test_system_header() {
>>>>>> +  system_header_func(0); // expected-warning {{system header warning}}
>>>>>> +}
>>>>>>
>>>>>> Modified: cfe/trunk/test/Sema/diagnose_if.c
>>>>>> URL:
>>>>>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/diagnose_if.c?rev=291963&r1=291962&r2=291963&view=diff
>>>>>>
>>>>>> ==============================================================================
>>>>>> --- cfe/trunk/test/Sema/diagnose_if.c (original)
>>>>>> +++ cfe/trunk/test/Sema/diagnose_if.c Fri Jan 13 16:11:40 2017
>>>>>> @@ -150,3 +150,6 @@ void alwaysWarnWithArg(int a) _diagnose_
>>>>>>  void runAlwaysWarnWithArg(int a) {
>>>>>>    alwaysWarnWithArg(a); // expected-warning{{alwaysWarn}}
>>>>>>  }
>>>>>> +
>>>>>> +// Test that diagnose_if warnings generated in system headers are not
>>>>>> ignored.
>>>>>> +#include "Inputs/diagnose-if-warn-system-header.h"
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> cfe-commits mailing list
>>>>>> cfe-commits at lists.llvm.org
>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>>>>
>>>>>
>>>>


More information about the cfe-commits mailing list