diff options
author | Anna Zaks <ganna@apple.com> | 2012-05-30 23:14:52 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2012-05-30 23:14:52 +0000 |
commit | 90c78328e70cb376754edf87708505a84c044271 (patch) | |
tree | 0772880b308c6a76700d985f36d60ed3f577278d /lib/Sema/SemaChecking.cpp | |
parent | eaa069075f060f58840af03e0bd5bd75bb27e809 (diff) |
Change wording of 'memcpy' type mismatch warning and remove fixit.
As per comments following r157659.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@157722 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaChecking.cpp')
-rw-r--r-- | lib/Sema/SemaChecking.cpp | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp index 004e9948f2..e35f45b89d 100644 --- a/lib/Sema/SemaChecking.cpp +++ b/lib/Sema/SemaChecking.cpp @@ -2755,24 +2755,14 @@ void Sema::CheckMemaccessArguments(const CallExpr *Call, // TODO: For strncpy() and friends, this could suggest sizeof(dst) // over sizeof(src) as well. unsigned ActionIdx = 0; // Default is to suggest dereferencing. - FixItHint Fixit = FixItHint(); // Default hint. StringRef ReadableName = FnName->getName(); - if (isa<DeclRefExpr>(SizeOfArg)) - Fixit = FixItHint::CreateInsertion(SizeOfArg->getLocStart(), "*"); - if (const UnaryOperator *UnaryOp = dyn_cast<UnaryOperator>(Dest)) - if (UnaryOp->getOpcode() == UO_AddrOf) { - Fixit = FixItHint::CreateRemoval( - CharSourceRange::getTokenRange(SizeOfArg->getLocStart(), - SizeOfArg->getLocStart())); + if (UnaryOp->getOpcode() == UO_AddrOf) ActionIdx = 1; // If its an address-of operator, just remove it. - } if (Context.getTypeSize(PointeeTy) == Context.getCharWidth()) ActionIdx = 2; // If the pointee's size is sizeof(char), // suggest an explicit length. - unsigned DestSrcSelect = - (BId == Builtin::BIstrndup ? 1 : ArgIdx); // If the function is defined as a builtin macro, do not show macro // expansion. @@ -2790,14 +2780,18 @@ void Sema::CheckMemaccessArguments(const CallExpr *Call, SM.getSpellingLoc(SSR.getEnd())); } - DiagRuntimeBehavior(SL, Dest, + DiagRuntimeBehavior(SL, SizeOfArg, PDiag(diag::warn_sizeof_pointer_expr_memaccess) << ReadableName - << DestSrcSelect - << ActionIdx + << PointeeTy + << DestTy << DSR - << SSR - << Fixit); + << SSR); + DiagRuntimeBehavior(SL, SizeOfArg, + PDiag(diag::warn_sizeof_pointer_expr_memaccess_note) + << ActionIdx + << SSR); + break; } } |