Hi Ben, Thanks for doing this. My only caution is that static analysis support for C++ is very much in the early stages. While the dead stores checker in particular is designed to be a sound check, I wouldn't vouch that it has reached that state yet for C++. In other words, carefully verify all results before making changes (which I'm sure you did in this case).
Ted On Dec 25, 2009, at 7:43 AM, Benjamin Kramer <[email protected]> wrote: > Author: d0k > Date: Fri Dec 25 09:43:36 2009 > New Revision: 92162 > > URL: http://llvm.org/viewvc/llvm-project?rev=92162&view=rev > Log: > Remove some dead variables clang-analyzer found. > > Modified: > cfe/trunk/lib/AST/ASTContext.cpp > cfe/trunk/lib/AST/ExprConstant.cpp > cfe/trunk/lib/Analysis/GRExprEngine.cpp > cfe/trunk/lib/CodeGen/CGExprCXX.cpp > cfe/trunk/lib/CodeGen/CGExprScalar.cpp > cfe/trunk/lib/CodeGen/CGObjCMac.cpp > cfe/trunk/lib/Driver/Driver.cpp > cfe/trunk/lib/Sema/SemaCXXCast.cpp > cfe/trunk/lib/Sema/SemaCodeComplete.cpp > cfe/trunk/lib/Sema/SemaDeclCXX.cpp > cfe/trunk/lib/Sema/SemaExpr.cpp > cfe/trunk/lib/Sema/SemaStmt.cpp > > Modified: cfe/trunk/lib/AST/ASTContext.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ASTContext.cpp?rev=92162&r1=92161&r2=92162&view=diff > > === > === > === > ===================================================================== > --- cfe/trunk/lib/AST/ASTContext.cpp (original) > +++ cfe/trunk/lib/AST/ASTContext.cpp Fri Dec 25 09:43:36 2009 > @@ -1065,9 +1065,7 @@ > > // Add in synthesized ivar count if laying out an implementation. > if (Impl) { > - unsigned FieldCount = D->ivar_size(); > unsigned SynthCount = CountSynthesizedIvars(D); > - FieldCount += SynthCount; > // If there aren't any sythesized ivars then reuse the interface > // entry. Note we can't cache this because we simply free all > // entries later; however we shouldn't look up implementations > > Modified: cfe/trunk/lib/AST/ExprConstant.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/ExprConstant.cpp?rev=92162&r1=92161&r2=92162&view=diff > > === > === > === > ===================================================================== > --- cfe/trunk/lib/AST/ExprConstant.cpp (original) > +++ cfe/trunk/lib/AST/ExprConstant.cpp Fri Dec 25 09:43:36 2009 > @@ -1291,8 +1291,6 @@ > /// VisitSizeAlignOfExpr - Evaluate a sizeof or alignof with a > result as the > /// expression's type. > bool IntExprEvaluator::VisitSizeOfAlignOfExpr(const > SizeOfAlignOfExpr *E) { > - QualType DstTy = E->getType(); > - > // Handle alignof separately. > if (!E->isSizeOf()) { > if (E->isArgumentType()) > > Modified: cfe/trunk/lib/Analysis/GRExprEngine.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/GRExprEngine.cpp?rev=92162&r1=92161&r2=92162&view=diff > > === > === > === > ===================================================================== > --- cfe/trunk/lib/Analysis/GRExprEngine.cpp (original) > +++ cfe/trunk/lib/Analysis/GRExprEngine.cpp Fri Dec 25 09:43:36 2009 > @@ -2228,7 +2228,6 @@ > > if (InitEx) { > SVal InitVal = state->getSVal(InitEx); > - QualType T = VD->getType(); > > // Recover some path-sensitivity if a scalar value evaluated to > // UnknownVal. > @@ -2261,7 +2260,6 @@ > > const LocationContext *LC = N->getLocationContext(); > SVal InitVal = state->getSVal(InitEx); > - QualType T = VD->getType(); > > // Recover some path-sensitivity if a scalar value evaluated to > // UnknownVal. > > Modified: cfe/trunk/lib/CodeGen/CGExprCXX.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprCXX.cpp?rev=92162&r1=92161&r2=92162&view=diff > > === > === > === > ===================================================================== > --- cfe/trunk/lib/CodeGen/CGExprCXX.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGExprCXX.cpp Fri Dec 25 09:43:36 2009 > @@ -78,7 +78,6 @@ > } > > return CalculateCookiePadding(Ctx, E->getAllocatedType()); > - QualType T = E->getAllocatedType(); > } > > static llvm::Value *EmitCXXNewAllocSize(CodeGenFunction &CGF, > > Modified: cfe/trunk/lib/CodeGen/CGExprScalar.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprScalar.cpp?rev=92162&r1=92161&r2=92162&view=diff > > === > === > === > ===================================================================== > --- cfe/trunk/lib/CodeGen/CGExprScalar.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGExprScalar.cpp Fri Dec 25 09:43:36 2009 > @@ -1199,7 +1199,7 @@ > Value *ScalarExprEmitter::EmitCompoundAssign(const > CompoundAssignOperator *E, > Value *(ScalarExprEmitter::*Func)(const > BinOpInfo &)) { > bool Ignore = TestAndClearIgnoreResultAssign(); > - QualType LHSTy = E->getLHS()->getType(), RHSTy = E->getRHS()- > >getType(); > + QualType LHSTy = E->getLHS()->getType(); > > BinOpInfo OpInfo; > > > Modified: cfe/trunk/lib/CodeGen/CGObjCMac.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjCMac.cpp?rev=92162&r1=92161&r2=92162&view=diff > > === > === > === > ===================================================================== > --- cfe/trunk/lib/CodeGen/CGObjCMac.cpp (original) > +++ cfe/trunk/lib/CodeGen/CGObjCMac.cpp Fri Dec 25 09:43:36 2009 > @@ -3351,7 +3351,6 @@ > SkipScanIvars.push_back(SkScan); > } > > - bool BytesSkipped = false; > if (!SkipIvars.empty()) { > unsigned int LastIndex = SkipIvars.size()-1; > int LastByteSkipped = > @@ -3360,9 +3359,8 @@ > int LastByteScanned = > IvarsInfo[LastIndex].ivar_bytepos + > IvarsInfo[LastIndex].ivar_size * WordSize; > - BytesSkipped = (LastByteSkipped > LastByteScanned); > // Compute number of bytes to skip at the tail end of the last > ivar scanned. > - if (BytesSkipped) { > + if (LastByteSkipped > LastByteScanned) { > unsigned int TotalWords = (LastByteSkipped + (WordSize -1)) / > WordSize; > SKIP_SCAN SkScan; > SkScan.skip = TotalWords - (LastByteScanned/WordSize); > @@ -3393,8 +3391,6 @@ > unsigned int skip_big = SkipScanIvars[i].skip / 0xf; > unsigned int scan_big = SkipScanIvars[i].scan / 0xf; > > - if (skip_small > 0 || skip_big > 0) > - BytesSkipped = true; > // first skip big. > for (unsigned int ix = 0; ix < skip_big; ix++) > BitMap += (unsigned char)(0xf0); > > Modified: cfe/trunk/lib/Driver/Driver.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Driver.cpp?rev=92162&r1=92161&r2=92162&view=diff > > === > === > === > ===================================================================== > --- cfe/trunk/lib/Driver/Driver.cpp (original) > +++ cfe/trunk/lib/Driver/Driver.cpp Fri Dec 25 09:43:36 2009 > @@ -776,10 +776,8 @@ > UsePipes = false; > > // -save-temps inhibits pipes. > - if (SaveTemps && UsePipes) { > + if (SaveTemps && UsePipes) > Diag(clang::diag::warn_drv_pipe_ignored_with_save_temps); > - UsePipes = true; > - } > > Arg *FinalOutput = C.getArgs().getLastArg(options::OPT_o); > > @@ -914,14 +912,12 @@ > // See if we should use an integrated preprocessor. We do so when > we have > // exactly one input, since this is the only use case we care about > // (irrelevant since we don't support combine yet). > - bool UseIntegratedCPP = false; > const ActionList *Inputs = &A->getInputs(); > if (Inputs->size() == 1 && isa<PreprocessJobAction>(*Inputs->begin > ())) { > if (!C.getArgs().hasArg(options::OPT_no_integrated_cpp) && > !C.getArgs().hasArg(options::OPT_traditional_cpp) && > !C.getArgs().hasArg(options::OPT_save_temps) && > T.hasIntegratedCPP()) { > - UseIntegratedCPP = true; > Inputs = &(*Inputs)[0]->getInputs(); > } > } > > Modified: cfe/trunk/lib/Sema/SemaCXXCast.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCXXCast.cpp?rev=92162&r1=92161&r2=92162&view=diff > > === > === > === > ===================================================================== > --- cfe/trunk/lib/Sema/SemaCXXCast.cpp (original) > +++ cfe/trunk/lib/Sema/SemaCXXCast.cpp Fri Dec 25 09:43:36 2009 > @@ -975,8 +975,6 @@ > const SourceRange &OpRange, > unsigned &msg, > CastExpr::CastKind &Kind) { > - QualType OrigDestType = DestType, OrigSrcType = SrcExpr->getType(); > - > DestType = Self.Context.getCanonicalType(DestType); > QualType SrcType = SrcExpr->getType(); > if (const ReferenceType *DestTypeTmp = DestType- > >getAs<ReferenceType>()) { > > Modified: cfe/trunk/lib/Sema/SemaCodeComplete.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCodeComplete.cpp?rev=92162&r1=92161&r2=92162&view=diff > > === > === > === > ===================================================================== > --- cfe/trunk/lib/Sema/SemaCodeComplete.cpp (original) > +++ cfe/trunk/lib/Sema/SemaCodeComplete.cpp Fri Dec 25 09:43:36 2009 > @@ -2453,7 +2453,6 @@ > typedef CodeCompleteConsumer::Result Result; > > Expr *RecExpr = static_cast<Expr *>(Receiver); > - QualType RecType = RecExpr->getType(); > > // If necessary, apply function/array conversion to the receiver. > // C99 6.7.5.3p[7,8]. > > Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=92162&r1=92161&r2=92162&view=diff > > === > === > === > ===================================================================== > --- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original) > +++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Fri Dec 25 09:43:36 2009 > @@ -109,8 +109,6 @@ > bool > Sema::SetParamDefaultArgument(ParmVarDecl *Param, ExprArg DefaultArg, > SourceLocation EqualLoc) { > - QualType ParamType = Param->getType(); > - > if (RequireCompleteType(Param->getLocation(), Param->getType(), > diag::err_typecheck_decl_incomplete_type)) { > Param->setInvalidDecl(); > @@ -158,7 +156,6 @@ > UnparsedDefaultArgLocs.erase(Param); > > ExprOwningPtr<Expr> DefaultArg(this, defarg.takeAs<Expr>()); > - QualType ParamType = Param->getType(); > > // Default arguments are only permitted in C++ > if (!getLangOptions().CPlusPlus) { > > Modified: cfe/trunk/lib/Sema/SemaExpr.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=92162&r1=92161&r2=92162&view=diff > > === > === > === > ===================================================================== > --- cfe/trunk/lib/Sema/SemaExpr.cpp (original) > +++ cfe/trunk/lib/Sema/SemaExpr.cpp Fri Dec 25 09:43:36 2009 > @@ -1435,7 +1435,6 @@ > assert(D && "Cannot refer to a NULL declaration"); > assert(!isa<FunctionTemplateDecl>(D) && > "Cannot refer unambiguously to a function template"); > - DeclarationName Name = D->getDeclName(); > > if (CheckDeclInExpr(*this, Loc, D)) > return ExprError(); > > Modified: cfe/trunk/lib/Sema/SemaStmt.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaStmt.cpp?rev=92162&r1=92161&r2=92162&view=diff > > === > === > === > ===================================================================== > --- cfe/trunk/lib/Sema/SemaStmt.cpp (original) > +++ cfe/trunk/lib/Sema/SemaStmt.cpp Fri Dec 25 09:43:36 2009 > @@ -978,7 +978,6 @@ > > if (!FnRetType->isDependentType() && !RetValExp->isTypeDependent > ()) { > // we have a non-void block with an expression, continue checking > - QualType RetValType = RetValExp->getType(); > > // C99 6.8.6.4p3(136): The return statement is not an > assignment. The > // overlap restriction of subclause 6.5.16.1 does not apply to > the case of > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
