forked from OSchip/llvm-project
[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 llvm-svn: 291963
This commit is contained in:
parent
848c569734
commit
251099171f
|
@ -3380,7 +3380,8 @@ def note_ovl_candidate_has_pass_object_size_params: Note<
|
|||
"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<
|
||||
|
|
|
@ -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}}
|
||||
}
|
|
@ -150,3 +150,6 @@ void alwaysWarnWithArg(int a) _diagnose_if(1 || a, "alwaysWarn", "warning"); //
|
|||
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"
|
||||
|
|
Loading…
Reference in New Issue