update this.

llvm-svn: 39746
This commit is contained in:
Chris Lattner 2007-07-11 18:58:19 +00:00
parent ccecbcd779
commit 49ec4b6eba
1 changed files with 24 additions and 24 deletions

View File

@ -50,14 +50,14 @@ I. Introduction:
clang - An example driver, client of the libraries at various levels.
This depends on all these libraries, and on LLVM VMCore.
This front-end has been intentionally built as a DAG, making it easy to
reuse individual parts or replace pieces if desired. For example, to build a
preprocessor, you take the Basic and Lexer libraries. If you want an indexer,
you take those plus the Parser library and provide some actions for indexing.
If you want a refactoring, static analysis, or source-to-source compiler tool,
it makes sense to take those plus the AST building and semantic analyzer
library. Finally, if you want to use this with the LLVM backend, you'd take
these components plus the AST to LLVM lowering code.
This front-end has been intentionally built as a DAG of libraries, making it
easy to reuse individual parts or replace pieces if desired. For example, to
build a preprocessor, you take the Basic and Lexer libraries. If you want an
indexer, you take those plus the Parser library and provide some actions for
indexing. If you want a refactoring, static analysis, or source-to-source
compiler tool, it makes sense to take those plus the AST building and semantic
analyzer library. Finally, if you want to use this with the LLVM backend,
you'd take these components plus the AST to LLVM lowering code.
In the future I hope this toolkit will grow to include new and interesting
components, including a C++ front-end, ObjC support, and a whole lot of other
@ -77,29 +77,28 @@ II. Usage of clang driver:
- To make diagnostics more gcc-like: -fno-caret-diagnostics -fno-show-column
- Enable metric printing: -stats
* -fsyntax-only is the default mode.
* -fsyntax-only is currently the default mode.
* -E mode gives output nearly identical to GCC, though not all bugs in
whitespace calculation have been emulated (e.g. the number of blank lines
emitted).
* -fsyntax-only is currently partially implemented, lacking some semantic
analysis.
* -E mode works the same way as GCC.
* -Eonly mode does all preprocessing, but does not print the output, useful for
timing the preprocessor.
* -parse-print-callbacks prints almost no callbacks so far.
* -fsyntax-only is currently partially implemented, lacking some semantic
analysis (some errors and warnings are not produced).
* -parse-noop parses code without building an AST. This is useful for timing
the cost of the parser without including AST building time.
* -parse-ast builds ASTs, but doesn't print them. This is most useful for
timing AST building vs -parse-noop.
* -parse-ast-print prints most expression and statements nodes, but some
minor things are missing.
* -parse-ast-print pretty prints most expression and statements nodes.
* -parse-ast-check checks that diagnostic messages that are expected are
reported and that those which are reported are expected.
III. Current advantages over GCC:
* Column numbers are fully tracked (no 256 col limit, no GCC-style pruning).
@ -128,15 +127,16 @@ Potential Future Features:
* Fast #import with a module system.
* Dependency tracking: change to header file doesn't recompile every function
that texually depends on it: recompile only those functions that need it.
This is aka 'incremental parsing'.
IV. Missing Functionality / Improvements
clang driver:
* Include search paths are hard-coded into the driver.
* Include search paths are hard-coded into the driver. Doh.
File Manager:
* Reduce syscalls, see NOTES.txt.
* Reduce syscalls for reduced compile time, see NOTES.txt.
Lexer:
* Source character mapping. GCC supports ASCII and UTF-8.
@ -156,16 +156,16 @@ Preprocessor:
* Add support for -M*
Traditional Preprocessor:
* All.
* Currently, we have none. :)
Parser:
* C90/K&R modes are only partially implemented.
* __extension__, __attribute__ [currently just skipped and ignored].
* __extension__ is currently just skipped and ignored.
* "initializers", GCC inline asm.
Semantic Analysis:
* Perhaps 75% done.
Code Gen:
* Mostly missing.
LLVM Code Gen:
* Still very early.