From: Jordan Rose Date: Wed, 17 Apr 2013 00:57:39 +0000 (+0000) Subject: [analyzer] Merge C++ status page into Open Projects. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f2fee9aa3c2a69465e5ad20d3d0c368eb430562c;p=clang [analyzer] Merge C++ status page into Open Projects. Also, add a few random extra open projects. Most of C++ support is done; we don't need the status page anymore. We're hoping that the C++-related open projects are the only major pieces of functionality we don't model at this point. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@179659 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/www/analyzer/dev_cxx.html b/www/analyzer/dev_cxx.html deleted file mode 100644 index 4424a9a8b5..0000000000 --- a/www/analyzer/dev_cxx.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - Analyzer Development: C++ Support - - - - - - -
- -
- -

C++ Support

- -

The Clang compiler supports almost all of C++11. -Support in the frontend for C++ language features, however, does not -automatically translate into support for those features in the static analyzer. -Language features need to be specifically modeled in the static analyzer so -their semantics can be properly analyzed. Support for analyzing C++ and -Objective-C++ files is currently fairly basic.

- -

Listed here are a set of open tasks that are prerequisites for -decent analysis of C++. This list is also not complete; new tasks -will be added as deemed necessary.

- -
    -
  • Control-Flow Graph Enhancements: -
      -
    • Model destructors for temporary objects
    • -
    • Model the implicit allocator call to operator new
    • -
    -
  • -
  • Path-Sensitive Analysis Engine (ExprEngine): -
      -
    • Allow constructors to be inlined
    • -
    • Allow destructors to be inlined
    • -
    • Fully model new and delete
    • -
    • Track type info through casts more precisely
    • -
    -
  • -
  • Checkers: - -
  • -
- -
-
- - - diff --git a/www/analyzer/menu.html.incl b/www/analyzer/menu.html.incl index ac52886b3d..c487160c4a 100644 --- a/www/analyzer/menu.html.incl +++ b/www/analyzer/menu.html.incl @@ -29,7 +29,6 @@
  • Checker Developer Manual
  • Open Projects
  • Potential Future Checkers
  • -
  • Analysis Support for C++
  • diff --git a/www/analyzer/open_projects.html b/www/analyzer/open_projects.html index c611a0eefb..c015b48665 100644 --- a/www/analyzer/open_projects.html +++ b/www/analyzer/open_projects.html @@ -53,7 +53,30 @@ mailing list to notify other members of the community.

    control structures are poorly modeled (to be conservative). This could be much improved for both C++ and Objective-C exceptions. (Difficulty: Medium)

    - + +
  • Enhance CFG to model C++ new more precisely. +

    The current representation of new does not provide an easy + way for the analyzer to model the call to a memory allocation function + (operator new), then initialize the result with a constructor + call. The problem is discussed at length in + PR12014. + (Difficulty: Easy)

    + +
  • Enhance CFG to model C++ delete more precisely. +

    Similarly, the representation of delete does not include + the call to the destructor, followed by the call to the deallocation + function (operator delete). One particular issue + (noreturn destructors) is discussed in + PR15599 + (Difficulty: Easy)

    + +
  • Track type info through casts more precisely. +

    The DynamicTypePropagation checker is in charge of inferring a region's + dynamic type based on what operations the code is performing. Casts are a + rich source of type information that the analyzer currently ignores. They + are tricky to get right, but might have very useful consequences. + (Difficulty: Medium)

    +
  • Design and implement alpha-renaming.

    Implement unifying two symbolic values along a path after they are determined to be equal via comparison. This would allow us to reduce the @@ -93,6 +116,19 @@ mailing list to notify other members of the community.

  • Other Infrastructure