mirror of https://github.com/microsoft/clang.git
Convert assertion in memset checking to a runtime check (because real code may provide a deviant definition of memset).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130368 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0931797d68
commit
1d59f7f8fb
|
@ -1804,7 +1804,12 @@ void Sema::CheckFormatString(const StringLiteral *FExpr,
|
|||
///
|
||||
/// \param Call The call expression to diagnose.
|
||||
void Sema::CheckMemsetArguments(const CallExpr *Call) {
|
||||
assert(Call->getNumArgs() == 3 && "Unexpected number of arguments to memset");
|
||||
// It is possible to have a non-standard definition of memset. Validate
|
||||
// we have the proper number of arguments, and if not, abort further
|
||||
// checking.
|
||||
if (Call->getNumArgs() != 3)
|
||||
return;
|
||||
|
||||
const Expr *Dest = Call->getArg(0)->IgnoreParenImpCasts();
|
||||
|
||||
QualType DestTy = Dest->getType();
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only %s -verify
|
||||
|
||||
char memset(); // expected-warning {{incompatible redeclaration of library function 'memset'}} expected-note{{'memset' is a builtin with type}}
|
||||
char test() {
|
||||
return memset();
|
||||
}
|
Loading…
Reference in New Issue