[llvm-branch-commits] [cfe-branch] r197225 - Improve the 3.4 release notes about the static analyzer new features
Sylvestre Ledru
sylvestre at debian.org
Fri Dec 13 03:30:23 PST 2013
Author: sylvestre
Date: Fri Dec 13 05:30:23 2013
New Revision: 197225
URL: http://llvm.org/viewvc/llvm-project?rev=197225&view=rev
Log:
Improve the 3.4 release notes about the static analyzer new features
Modified:
cfe/branches/release_34/docs/ReleaseNotes.rst
Modified: cfe/branches/release_34/docs/ReleaseNotes.rst
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_34/docs/ReleaseNotes.rst?rev=197225&r1=197224&r2=197225&view=diff
==============================================================================
--- cfe/branches/release_34/docs/ReleaseNotes.rst (original)
+++ cfe/branches/release_34/docs/ReleaseNotes.rst Fri Dec 13 05:30:23 2013
@@ -69,7 +69,7 @@ about them. The improvements since the 3
- Boolean increment, a deprecated feature, has own warning flag
-Wdeprecated-increment-bool, and is still part of -Wdeprecated.
- Clang errors on builtin enum increments and decrements.
-- -Wloop-analysis now warns on for-loops which have the same increment or
+- -Wloop-analysis now warns on for-loops which have the same increment or
decrement in the loop header as the last statement in the loop.
- -Wuninitialized now performs checking across field initializers to detect
when one field in used uninitialized in another field initialization.
@@ -189,9 +189,48 @@ Static Analyzer
---------------
The static analyzer (which contains additional code checking beyond compiler
-warnings) has improved significantly in both in the core analysis engine and
+warnings) has improved significantly in both in the core analysis engine and
also in the kinds of issues it can find.
+For example, the static analyzer now manages the following cases:
+
+- Missing return after function pointer null check.
+
+.. code-block:: c
+
+ void foo(void (*f)(void)) {
+ if (f)
+ return;
+ f();
+ }
+
+- Detect when ``delete`` is used on an uninitialized variable.
+
+.. code-block:: c++
+
+ void foo() {
+ int *x;
+ delete[] x;
+ }
+
+- Handle destructors for the argument to C++ ``delete``.
+
+.. code-block:: c++
+
+ class DerefClass{
+ public:
+ int *x;
+ DerefClass() {}
+ ~DerefClass() {*x = 1;}
+ };
+
+ void testDoubleDeleteClassInstance() {
+ DerefClass *foo = new DerefClass();
+ delete foo;
+ delete foo;
+ }
+
+
Clang Format
------------
More information about the llvm-branch-commits
mailing list