forked from OSchip/llvm-project
60 lines
1.8 KiB
Plaintext
60 lines
1.8 KiB
Plaintext
//===----------------------------------------------------------------------===//
|
|
// C Language Family Front-end
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
I. Introduction:
|
|
|
|
clang: noun
|
|
1. A loud, resonant, metallic sound.
|
|
2. The strident call of a crane or goose.
|
|
3. C-language front-end toolkit.
|
|
|
|
Why?
|
|
Supports Objective-C.
|
|
|
|
|
|
II. Current advantages over GCC:
|
|
|
|
* Full column number support in diagnostics.
|
|
* Caret diagnostics.
|
|
* Full diagnostic customization by client (can format diagnostics however they
|
|
like, e.g. in an IDE or refactoring tool).
|
|
* Built as a framework, can be reused by multiple tools.
|
|
* All languages supported linked into same library (no cc1,cc1obj, ...).
|
|
* mmap's code in read-only, does not dirty the pages like GCC (mem footprint).
|
|
* BSD License, can be linked into non-GPL projects.
|
|
|
|
Future Features:
|
|
* Full diagnostic control, per diagnostic (use enums).
|
|
* Fine grained control within the source (#pragma enable/disable warning)
|
|
* Faster than GCC, preprocessing, parsing, IR generation.
|
|
* Better token tracking within macros? (Token came from this line, which is
|
|
a macro argument instantiated here, recursively instantiated here).
|
|
* Fast #import!!
|
|
|
|
|
|
III. Critical Missing Functionality
|
|
|
|
Lexer:
|
|
* Source character mapping. GCC supports ASCII and UTF-8.
|
|
See GCC options: -ftarget-charset and -ftarget-wide-charset.
|
|
* Universal character support. Experimental in GCC, enabled with
|
|
-fextended-identifiers.
|
|
* Poisoned identifiers.
|
|
* -fpreprocessed mode.
|
|
|
|
Preprocessor:
|
|
* #line / #file directives
|
|
* Detection of "atomic" headers (#ifndef/#define), #pragma once support.
|
|
* Function-style #define & macro expansion
|
|
* -E & -C & -P output.
|
|
|
|
Traditional Preprocessor:
|
|
* All.
|
|
|
|
Parser Callbacks:
|
|
* All.
|
|
|
|
Parser Actions:
|
|
* All.
|
|
|