llvm-project/clang
Argyrios Kyrtzidis 8cc0459907 Introduce a caching mechanism for macro expanded tokens.
Previously macro expanded tokens were added to Preprocessor's bump allocator and never released,
even after the TokenLexer that were lexing them was finished, thus they were wasting memory.
A very "useful" boost library was causing clang to eat 1 GB just for the expanded macro tokens.

Introduce a special cache that works like a stack; a TokenLexer can add the macro expanded tokens
in the cache, and when it finishes, the tokens are removed from the end of the cache.

Now consumed memory by expanded tokens for that library is ~ 1.5 MB.

Part of rdar://9327049.

llvm-svn: 134105
2011-06-29 22:20:11 +00:00
..
INPUTS
bindings/python python bindings: Add support for different kind of completion chunks 2011-02-05 17:54:10 +00:00
clang.xcodeproj The ARC Migration Tool. All the credit goes to Argyrios and Fariborz 2011-06-15 23:25:17 +00:00
docs Remove doxygen.cfg to prevent accidental commits, it is generated from doxygen.cfg.in. 2011-06-29 16:22:39 +00:00
examples Reverts the Tooling changes as requested by Chris. 2011-06-02 16:58:33 +00:00
include Introduce a caching mechanism for macro expanded tokens. 2011-06-29 22:20:11 +00:00
lib Introduce a caching mechanism for macro expanded tokens. 2011-06-29 22:20:11 +00:00
runtime Build and use libcompiler_rt whenever possible. 2011-06-22 17:41:40 +00:00
test Check for deprecated/unavailable/etc attributes on fields that are 2011-06-29 21:51:31 +00:00
tools [libclang] Introduce cxcursor::getCursorParentDecl(CXCursor Cursor) and use it at the appropriate place in CIndex.cpp 2011-06-29 22:20:07 +00:00
unittests unittests/Basic/FileManagerTest.cpp: Unbreak Win32, mingw and msvc. 2011-06-24 14:10:29 +00:00
utils fix a bunch of comment typos found by codespell. Patch by 2011-04-15 05:22:18 +00:00
www Hyphenate "argument-dependent". 2011-06-14 12:59:25 +00:00
CMakeLists.txt Revert "hack in my new variables for GCC" 2011-06-08 10:14:38 +00:00
INSTALL.txt
LICENSE.TXT My calendar says it's 2011. 2011-06-12 15:26:54 +00:00
Makefile Basic: Add support for a build variable to set the repository path that goes 2011-03-31 00:32:50 +00:00
ModuleInfo.txt
NOTES.txt
README.txt
TODO.txt Test commit; added blank line to TODO.txt 2011-01-04 19:19:20 +00:00

README.txt

//===----------------------------------------------------------------------===//
// C Language Family Front-end
//===----------------------------------------------------------------------===//

Welcome to Clang.  This is a compiler front-end for the C family of languages
(C, C++, Objective-C, and Objective-C++) which is built as part of the LLVM
compiler infrastructure project.

Unlike many other compiler frontends, Clang is useful for a number of things
beyond just compiling code: we intend for Clang to be host to a number of
different source level tools.  One example of this is the Clang Static Analyzer.

If you're interested in more (including how to build Clang) it is best to read
the relevant web sites.  Here are some pointers:

Information on Clang:              http://clang.llvm.org/
Building and using Clang:          http://clang.llvm.org/get_started.html
Clang Static Analyzer:             http://clang-analyzer.llvm.org/
Information on the LLVM project:   http://llvm.org/

If you have questions or comments about Clang, a great place to discuss them is
on the Clang development mailing list:
  http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

If you find a bug in Clang, please file it in the LLVM bug tracker:
  http://llvm.org/bugs/