aboutsummaryrefslogtreecommitdiff
path: root/tools/clang-cc
AgeCommit message (Collapse)Author
2009-04-22Lazy loading of builtins for precompiled headers.Douglas Gregor
PCH files now contain complete information about builtins, including any declarations that have been synthesized as part of building the PCH file. When using a PCH file, we do not initialize builtins at all; when needed, they'll be found in the PCH file. This optimization translations into a 9% speedup for "Hello, World!" with Carbon.h as a prefix header and roughly a 5% speedup for 403.gcc with its prefix header. We're also reading less of the PCH file for "Hello, World!": *** PCH Statistics: 286/20693 types read (1.382110%) 1630/59230 declarations read (2.751984%) 764/44914 identifiers read (1.701029%) 1/32954 statements read (0.003035%) 5/6187 macros read (0.080815%) down from *** PCH Statistics: 411/20693 types read (1.986179%) 2553/59230 declarations read (4.310316%) 1093/44646 identifiers read (2.448148%) 1/32954 statements read (0.003035%) 21/6187 macros read (0.339421%) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69815 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-21Explictly track tentative definitions within Sema, then hand thoseDouglas Gregor
tentative definitions off to the ASTConsumer at the end of the translation unit. Eliminate CodeGen's internal tracking of tentative definitions, and instead hook into ASTConsumer::CompleteTentativeDefinition. Also, tweak the definition-deferal logic for C++, where there are no tentative definitions. Fixes <rdar://problem/6808352>, and will make it much easier for precompiled headers to cope with tentative definitions in the future. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69681 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-21Add pch reader/writer support for most of DeclObjC.h. Very close to ↵Steve Naroff
reading/writing all ObjC AST nodes that we will encounter in header files (still a few FIXME's). Once selector support is in place, we should be able to take this for a spin (and add test cases). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69674 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-21Split preprocessor initialization logic out of clang-cc intoChris Lattner
libfrontend. Patch by Alexei Svitkine! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69664 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-21rename -fprint-source-range-info -> -fdiagnostics-print-source-range-info.Chris Lattner
Temporarily accept both of them, I'll rip out the old one after awhile. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69662 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-20Add pch reader/writer support for ObjCContainerDecl, ObjCInterfaceDecl, & ↵Steve Naroff
ObjCIvarDecl. Next step: Add selector support to PCHWriter::AddDeclarationName(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69619 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-20Introduce the notion of a SemaConsumer, which is an ASTConsumer thatDouglas Gregor
also gets access to the Sema object performing semantic analysis. This will be used by the PCH writer to serialize Sema state. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69595 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-20Make the on-disk hash table usable with non-fileDouglas Gregor
raw_ostreams. Requires LLVM r69583. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69584 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-20Move the on-disk hash table code into its own header. No functionality change.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69580 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-19move group twiddling options into Diagnostic.cpp instead ofChris Lattner
Warnings.cpp. Warnings.cpp now doesn't need to #include tblgen produced output directly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69559 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-19Fix PR4007: clang doesn't know -Werror-foo is the same as -Werror=fooChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69557 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-19implement compiler support for -fno-diagnostics-fixit-info,Chris Lattner
rdar://6805442 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69525 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-19invalid directives can occur in #if 0 code, just pass themChris Lattner
through like other directives PTH doesn't care about. This should fix rdar://6804029 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69524 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-19make PTH not crash on a null directive (# on its own line)Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69523 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-19use isNot instead of !isChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69522 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-19fix -fdollars-in-identifiers to have a default that is overriden Chris Lattner
by the command line option if present. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69521 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-19fix rdar://6804322 by wiring up -fdollars-in-identifiersChris Lattner
with assembler-with-cpp mode. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69520 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-18FunctionDecl::getBody() is getting an ASTContext argument for use inDouglas Gregor
lazy PCH deserialization. Propagate that argument wherever it needs to be. No functionality change, except that I've tightened up a few PCH tests in preparation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69406 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-17implement a new clang-cc option -dump-build-information=filename which ↵Chris Lattner
causes the compiler to dump random stuff from the build into the file. Right now this amounts to dumping command line arguments and diagnostics to the file. The idea is that you can set an envvar, do a world build of an OS, then grep through all the logs for interesting things or something. Daniel, please wire the driver up to do something with this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69386 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-17refactor htmldiags to be created up front like the other diag clients.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69379 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-17add a virtual method to DiagnosticClient to get rid of some fragileChris Lattner
casting in clang-cc. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69377 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-17Added -print-ivar-layout option. No change in functionalityFariborz Jahanian
yet. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69346 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-16implement framework for -fdiagnostics-show-option, but tblgen isn'tChris Lattner
passing down the right info yet. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69268 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-16move handling of -pedantic and -pedantic-errors into Diagnostics,Chris Lattner
out of Warnings.cpp. This simplifies warnings.cpp and makes it more efficient. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69266 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-16arrange for -Wno-error=foo warnings to be immune to -Werror as Chris Lattner
they are supposed to be. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69265 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-16when tblgen fills in all the subgroup info, clang is ready for it.Chris Lattner
This depends on r69249 of llvm. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69250 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15make unknown warnings a warning, not an error.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69239 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15add support for -Wextra and -WChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69236 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15use tablgen-generated warning groups.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69221 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15now that we've decoupled diagnostic classes from default mappings,Chris Lattner
move the remaining default mapping exceptions from C++ code into the .td files. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69183 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15rename variable in comment, not just in code :).Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69166 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15Rejigger how -pedantic and -pedantic-errors work and their interactionChris Lattner
with other diagnostic mapping. In the new scheme, -Wfoo or -Wno-foo or -Werror=foo all override the -pedantic options, and __extension__ robustly silences all extension diagnostics in their scope. An added bonus of this change is that MAP_DEFAULT goes away, meaning that per-diagnostic mapping information can now be stored in 2 bits, doubling the density of the Diagnostic::DiagMapping array. This also substantially simplifies Diagnostic::getDiagnosticLevel. OTOH, this temporarily introduces some "macro intensive" code in Diagnostic.cpp. This will be addressed in a later patch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69154 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15remove some commented out -Wstrict-selector-match stuff.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69148 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15clean up error messages.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69142 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15Add support for -Werror=foo and -Wno-error=fooChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69138 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-15refactor a bunch of the warning parsing stuff to simplify it. This removes theChris Lattner
-Wfoo=ignore syntax. GCC supports -Wno-foo, no need to invent our own stuff. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69136 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-14Add PCH support for ImplicitCastExprs. This is the first expressionDouglas Gregor
kind PCH handles that has an expression as an operand, so most of this work is in the infrastructure to rebuild expression trees from the serialized representation. We now store expressions in post-order (e.g., Reverse Polish Notation), so that we can easily rebuild the appropriate expression tree. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69101 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-14Change Lexer::MeasureTokenLength to take a LangOptions reference.Chris Lattner
This allows it to accurately measure tokens, so that we get: t.cpp:8:13: error: unknown type name 'X' static foo::X P; ~~~~~^ instead of the woefully inferior: t.cpp:8:13: error: unknown type name 'X' static foo::X P; ~~~~ ^ Most of this is just plumbing to push the reference around. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69099 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-14add support for -W[no-]extra-tokensChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69071 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-14When building a PCH file, don't perform end-of-translation-unitDouglas Gregor
wrap-up (e.g., turning tentative definitions into definitions). Also, very that, when we actually use the PCH file, we get the ride code generation for tentative definitions and definitions that show up in the PCH file. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69043 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-14Clean up handling of visibility.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69027 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13Reapply 68936, turned out to that clang's better debug info exposed aDaniel Dunbar
codegenerator bug. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68983 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13Revert 68936, LLVM still isn't ready to handle debug info + optimization.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68972 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13the driver caught up. This makes -msse3 correctly set __SSE3__ etc.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68943 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-13Enable debug info generation while optimizing.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68936 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12Implement support for GCC's -dD mode, which dumps -E output *and*Chris Lattner
macro definitions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68884 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11add some #includes for better compatibility with gcc 4.4,Chris Lattner
thanks to Tobias Stadler for pointing this out. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68868 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10Compare the predefines buffer in the PCH file with the predefinesDouglas Gregor
buffer generated for the current translation unit. If they are different, complain and then ignore the PCH file. This effectively checks for all compilation options that somehow would affect preprocessor state (-D, -U, -include, the dreaded -imacros, etc.). When we do accept the PCH file, throw away the contents of the predefines buffer rather than parsing them, since all of the results of that parsing are already stored in the PCH file. This eliminates the ugliness with the redefinition of __builtin_va_list, among other things. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68838 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10do a dance with predefines, and finally enable reading of macros fromChris Lattner
PCH. This works now, except for limitations not being able to do things with identifiers. The basic example in the testcase works though. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68832 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-10move a bunch of code for initializing the predefines buffer out of ↵Chris Lattner
Preprocessor.cpp into clang-cc.cpp. This makes it so clang-cc constructs the *entire* predefines buffer, not just half of it. A bonus of this is that we get to kill a copy of DefineBuiltinMacro. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68830 91177308-0d34-0410-b5e6-96231b3b80d8