mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-03-04 00:20:14 +00:00
[-Wunsafe-buffer-usage] Replace assert that declarations are always found
Differential Revision: https://reviews.llvm.org/D157018
This commit is contained in:
parent
d687caae00
commit
cf1c64b94d
@ -888,7 +888,8 @@ public:
|
||||
|
||||
const DeclStmt *lookupDecl(const VarDecl *VD) const {
|
||||
auto It = Defs.find(VD);
|
||||
assert(It != Defs.end() && "Definition never discovered!");
|
||||
if (It == Defs.end())
|
||||
return nullptr;
|
||||
return It->second;
|
||||
}
|
||||
};
|
||||
@ -2053,7 +2054,10 @@ static FixItList fixVariableWithSpan(const VarDecl *VD,
|
||||
ASTContext &Ctx,
|
||||
UnsafeBufferUsageHandler &Handler) {
|
||||
const DeclStmt *DS = Tracker.lookupDecl(VD);
|
||||
assert(DS && "Fixing non-local variables not implemented yet!");
|
||||
if (!DS) {
|
||||
DEBUG_NOTE_DECL_FAIL(VD, " : variables declared this way not implemented yet");
|
||||
return {};
|
||||
}
|
||||
if (!DS->isSingleDecl()) {
|
||||
// FIXME: to support handling multiple `VarDecl`s in a single `DeclStmt`
|
||||
DEBUG_NOTE_DECL_FAIL(VD, " : multiple VarDecls");
|
||||
|
@ -66,3 +66,15 @@ void implied_unclaimed_var(int *b) { // expected-warning{{'b' is an unsafe poin
|
||||
b++; // expected-note{{used in pointer arithmetic here}} \
|
||||
// debug-note{{safe buffers debug: failed to produce fixit for 'b' : has an unclaimed use}}
|
||||
}
|
||||
|
||||
int *a = new int[3]; // expected-warning{{'a' is an unsafe pointer used for buffer access}} \
|
||||
// debug-note{{safe buffers debug: failed to produce fixit for 'a' : neither local nor a parameter}}
|
||||
void test_globals() {
|
||||
a[7] = 4; // expected-note{{used in buffer access here}}
|
||||
}
|
||||
|
||||
void test_decomp_decl() {
|
||||
int a[2] = {1, 2};
|
||||
auto [x, y] = a;
|
||||
x = 9;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user