[cfe-commits] r160444 - in /cfe/trunk: include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp

Benjamin Kramer benny.kra at gmail.com
Wed Jul 18 13:28:35 PDT 2012


On 18.07.2012, at 22:03, David Blaikie <dblaikie at gmail.com> wrote:

> On Wed, Jul 18, 2012 at 12:08 PM, Benjamin Kramer
> <benny.kra at googlemail.com> wrote:
>> Author: d0k
>> Date: Wed Jul 18 14:08:44 2012
>> New Revision: 160444
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=160444&view=rev
>> Log:
>> Remove trivial destructor from SVal.
> 
> I notice you've found a few of these - was there any particular
> approach you used?
> 
> Would it be practical to implement a warning in Clang for this?

This was found by looking at the list of non-podlike instantiations of llvm::SmallVectorTemplateBase. It is bound to is_trivially_copyable when compiling with clang. Most of the cases were obviously heavyweight classes, but some stuck out.

I think having a warning for trivial copy ctors, operator= and dtors would be a good thing, especially with the =default statement available in C++11. But I don't know how complicated it would be to implement warnings like that.

- Ben

> 
>> 
>> This enables the faster SmallVector in clang and also allows clang's unused
>> variable warnings to be more effective. Fix the two instances that popped up.
>> 
>> The RetainCountChecker change actually changes functionality, it would be nice
>> if someone from the StaticAnalyzer folks could look at it.
>> 
>> Modified:
>>    cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
>>    cfe/trunk/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp
>>    cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
>> 
>> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h?rev=160444&r1=160443&r2=160444&view=diff
>> ==============================================================================
>> --- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h (original)
>> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h Wed Jul 18 14:08:44 2012
>> @@ -68,7 +68,6 @@
>> 
>> public:
>>   explicit SVal() : Data(0), Kind(0) {}
>> -  ~SVal() {}
>> 
>>   /// BufferTy - A temporary buffer to hold a set of SVals.
>>   typedef SmallVector<SVal,5> BufferTy;
>> 
>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp?rev=160444&r1=160443&r2=160444&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp (original)
>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/GenericTaintChecker.cpp Wed Jul 18 14:08:44 2012
>> @@ -559,7 +559,6 @@
>>   if (CE->getNumArgs() < 2)
>>     return State;
>> 
>> -  SVal x = State->getSVal(CE->getArg(1), C.getLocationContext());
>>   // All arguments except for the very first one should get taint.
>>   for (unsigned int i = 1; i < CE->getNumArgs(); ++i) {
>>     // The arguments are pointer arguments. The data they are pointing at is
>> 
>> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp?rev=160444&r1=160443&r2=160444&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp (original)
>> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp Wed Jul 18 14:08:44 2012
>> @@ -3168,7 +3168,7 @@
>>     // If the receiver is unknown, conjure a return value.
>>     SValBuilder &SVB = C.getSValBuilder();
>>     unsigned Count = C.getCurrentBlockCount();
>> -    SVal RetVal = SVB.getConjuredSymbolVal(0, CE, LCtx, ResultTy, Count);
>> +    RetVal = SVB.getConjuredSymbolVal(0, CE, LCtx, ResultTy, Count);
>>   }
>>   state = state->BindExpr(CE, LCtx, RetVal, false);
>> 
>> 
>> 
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits





More information about the cfe-commits mailing list