Fix regression of -Warray-bounds involving varargs functions [PR 11007].

llvm-svn: 140584
This commit is contained in:
Ted Kremenek 2011-09-26 23:36:13 +00:00
parent 8868faec63
commit d41f346875
2 changed files with 13 additions and 0 deletions

View File

@ -3398,6 +3398,10 @@ bool Sema::GatherArgumentsForCall(SourceLocation CallLoc,
AllArgs.push_back(Arg.take());
}
}
// Check for array bounds violations.
for (unsigned i = ArgIx; i != NumArgs; ++i)
CheckArrayAccess(Args[i]);
}
return Invalid;
}

View File

@ -226,3 +226,12 @@ void test_pr10771() {
// TODO: This should probably warn, too.
*(((char*)foo) + sizeof(foo)) = '\0'; // no-warning
}
int test_pr11007_aux(const char * restrict, ...);
// Test checking with varargs.
void test_pr11007() {
double a[5]; // expected-note {{array 'a' declared here}}
test_pr11007_aux("foo", a[1000]); // expected-warning {{array index of '1000' indexes past the end of an array}}
}