mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-16 13:08:42 +00:00
Fix a note without a SourceLocation.
#define TEST int y; int x = y; void foo() { TEST } -Wuninitialized gives this warning: invalid-loc.cc:4:3: warning: variable 'y' is uninitialized when used here [-Wuninitialized] TEST ^~~~ invalid-loc.cc:2:29: note: expanded from macro 'TEST' #define TEST int y; int x = y; ^ note: initialize the variable 'y' to silence this warning 1 warning generated. The second note lacks filename, line number, and code snippet. This change will remove the fixit and only point to variable declaration. invalid-loc.cc:4:3: warning: variable 'y' is uninitialized when used here [-Wuninitialized] TEST ^~~~ invalid-loc.cc:2:29: note: expanded from macro 'TEST' #define TEST int y; int x = y; ^ invalid-loc.cc:4:3: note: variable 'y' is declared here TEST ^ invalid-loc.cc:2:14: note: expanded from macro 'TEST' #define TEST int y; int x = y; ^ 1 warning generated. llvm-svn: 156045
This commit is contained in:
parent
78453eed12
commit
2cdcf82396
@ -441,6 +441,11 @@ static bool SuggestInitializationFixit(Sema &S, const VarDecl *VD) {
|
||||
std::string Init = S.getFixItZeroInitializerForType(VariableTy);
|
||||
if (Init.empty())
|
||||
return false;
|
||||
|
||||
// Don't suggest a fixit inside macros.
|
||||
if (VD->getLocEnd().isMacroID())
|
||||
return false;
|
||||
|
||||
SourceLocation Loc = S.PP.getLocForEndOfToken(VD->getLocEnd());
|
||||
|
||||
S.Diag(Loc, diag::note_var_fixit_add_initialization) << VD->getDeclName()
|
||||
|
@ -424,3 +424,13 @@ void rdar9432305(float *P) {
|
||||
for (; i < 10000; ++i) // expected-warning {{variable 'i' is uninitialized when used here}}
|
||||
P[i] = 0.0f;
|
||||
}
|
||||
|
||||
// Test that fixits are not emitted inside macros.
|
||||
#define UNINIT(T, x, y) T x; T y = x;
|
||||
#define ASSIGN(T, x, y) T y = x;
|
||||
void test54() {
|
||||
UNINIT(int, a, b); // expected-warning {{variable 'a' is uninitialized when used here}} \
|
||||
// expected-note {{variable 'a' is declared here}}
|
||||
int c; // expected-note {{initialize the variable 'c' to silence this warning}}
|
||||
ASSIGN(int, c, d); // expected-warning {{variable 'c' is uninitialized when used here}}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user