summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/PCHWriter.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Add PCH read/write support for Objective-C Selectors.Steve Naroff2009-04-231-4/+37
| | | | | Note: This support is non-lazy. Once we get "Cocoa.h" humming, we can optimize this. llvm-svn: 69884
* PCH (de-)serialization of the protocols in an ObjCInterfaceDeclDouglas Gregor2009-04-231-1/+6
| | | | llvm-svn: 69860
* PCH support for ObjCPropertyImplDeclDouglas Gregor2009-04-231-1/+3
| | | | llvm-svn: 69858
* The ivars in an ObjCImplementationDecl are now stored in theDouglas Gregor2009-04-231-1/+1
| | | | | | | DeclContext rather than in a separate list. This makes PCH (de-)serialization trivial, so that ivars can be loaded lazily. llvm-svn: 69857
* PCH support for ObjCCategoryImplDecl (which can't be tested now).Douglas Gregor2009-04-231-1/+1
| | | | llvm-svn: 69856
* PCH (de-)serialization for ObjCImplDecl. This can't be tested yet.Douglas Gregor2009-04-231-1/+2
| | | | llvm-svn: 69855
* PCH support for Objective-C property declarations (UNTESTED!)Douglas Gregor2009-04-221-2/+17
| | | | llvm-svn: 69843
* Add PCH statistics for the number/percent of lexical/visible declcontexts readDouglas Gregor2009-04-221-1/+6
| | | | llvm-svn: 69835
* Support locally-declared external declarations in PCH filesDouglas Gregor2009-04-221-0/+15
| | | | llvm-svn: 69833
* Support tentative definitions in precompiled headers. This isn't likelyDouglas Gregor2009-04-221-0/+14
| | | | | | to happen (ever), but at least we'll do the right thing when it does. llvm-svn: 69829
* Minimize the number and kind of "external definitions" that the PCHDouglas Gregor2009-04-221-16/+1
| | | | | | | | | | | | | | | | | | | | | | | file needs to store. CodeGen needs to see these definitions (via HandleTopLevelDecl), otherwise it won't be able to generate code for them. This patch notifies the consumer (e.g., CodeGen) about function definitions and variable definitions when the corresponding declarations are deserialized. Hence, we don't eagerly deserialize the declarations for every variable or function that has a definition in the PCH file. This gives another 5% speedup for the Carbon-prefixed "Hello, World!", and brings our PCH statistics down to something far more reasonable: *** PCH Statistics: 13/20693 types read (0.062823%) 17/59230 declarations read (0.028702%) 54/44914 identifiers read (0.120230%) 0/32954 statements read (0.000000%) 5/6187 macros read (0.080815%) llvm-svn: 69820
* Lazy loading of builtins for precompiled headers.Douglas Gregor2009-04-221-8/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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%) llvm-svn: 69815
* ObjCQualifiedClass is dead, remove it.Chris Lattner2009-04-221-8/+0
| | | | llvm-svn: 69783
* pch support for protocol qualified id's.Chris Lattner2009-04-221-0/+1
| | | | llvm-svn: 69781
* add three new objc expression types. @selector doesn't work because we have no Chris Lattner2009-04-221-2/+27
| | | | | | way to serialize selectors yet. llvm-svn: 69780
* implement serialization support for @encode,Chris Lattner2009-04-221-0/+18
| | | | | | | fix a couple of bugs in reader support for ObjCInterfaceDecl, and add support for reading ObjCInterfaceType. llvm-svn: 69779
* Lazy deserialization of macro definitions for precompiled headers.Douglas Gregor2009-04-211-10/+23
| | | | | | | | | | | | | | | This optimization improves performance on the Carbon-prefixed "Hello, World!" example by 57%. For reference, we're now about 2.25x faster than GCC PCH. We're also pulling in far less of the PCH file: *** 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%) llvm-svn: 69755
* Don't bother writing a visible-declarations record for the translationDouglas Gregor2009-04-211-3/+5
| | | | | | | unit into the PCH file, since we won't be performing name lookup into it anyway. Reduces the size of the Carbon.h PCH file by ~200k. llvm-svn: 69739
* Lazy deserialization of the declaration chains associated withDouglas Gregor2009-04-211-13/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | identifiers from a precompiled header. This patch changes the primary name lookup method for entities within a precompiled header. Previously, we would load all of the names of declarations at translation unit scope into a large DenseMap (inside the TranslationUnitDecl's DeclContext), and then perform a special "last resort" lookup into this DeclContext when we knew there was a PCH file (see Sema::LookupName). Now, when we see an identifier named for the first time, we load all of the declarations with that name that are visible from the translation unit into the IdentifierInfo's chain of declarations. Thus, the explicit "look into the translation unit's DeclContext" code is gone, and Sema effectively uses the same IdentifierInfo-based name lookup mechanism whether we are using a PCH file or not. This approach should help PCH scale with the size of the input program rather than the size of the PCH file. The "Hello, World!" application with Carbon.h as a PCH file now loads 20% of the identifiers in the PCH file rather than 85% of the identifiers. 90% of the 20% of identifiers loaded are actually loaded when we deserialize the preprocessor state. The next step is to make the preprocessor load macros lazily, which should drastically reduce the number of types, declarations, and identifiers loaded for "Hello, World". llvm-svn: 69737
* Add pch reader/writer support for most of DeclObjC.h. Very close to ↵Steve Naroff2009-04-211-2/+94
| | | | | | | | 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). llvm-svn: 69674
* Write the identifier table into the PCH file as an on-disk hash tableDouglas Gregor2009-04-201-18/+98
| | | | | | | | | | | that also includes the contents of the IdentifierInfo itself (the various fields and flags, along with the chain of identifiers visible at the top level that have that name). We don't make any use of the hash table yet, except that our identifier ID -> string mapping points into the hash table now. llvm-svn: 69625
* Add pch reader/writer support for ObjCContainerDecl, ObjCInterfaceDecl, & ↵Steve Naroff2009-04-201-0/+33
| | | | | | | | ObjCIvarDecl. Next step: Add selector support to PCHWriter::AddDeclarationName(). llvm-svn: 69619
* the __gnuc_inline__ attribute is actually named __gnu_inline__,Chris Lattner2009-04-201-1/+1
| | | | | | PR4023 llvm-svn: 69618
* Introduce the notion of a SemaConsumer, which is an ASTConsumer thatDouglas Gregor2009-04-201-1/+5
| | | | | | | | | 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. llvm-svn: 69595
* Add pch reader/writer support for ObjCMethodDecl.Steve Naroff2009-04-201-0/+27
| | | | | | Test will be enabled with ObjCInterfaceDecl is added. llvm-svn: 69594
* Add location info for indirect goto.Chris Lattner2009-04-191-0/+1
| | | | llvm-svn: 69497
* Don't emit name-lookup tables for functions or methods in the PCH filesDouglas Gregor2009-04-181-0/+5
| | | | llvm-svn: 69449
* Store the type ID for __builtin_va_list in the PCH file, so that theDouglas Gregor2009-04-181-1/+8
| | | | | | | | AST context's __builtin_va_list type will be set when the PCH file is loaded. This fixes the crash when CodeGen'ing a va_arg expression pulled in from a PCH file. llvm-svn: 69421
* FunctionDecl::getBody() is getting an ASTContext argument for use inDouglas Gregor2009-04-181-4/+6
| | | | | | | | 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. llvm-svn: 69406
* Keep track of the number of statements/expressions written to and readDouglas Gregor2009-04-171-1/+8
| | | | | | | from a PCH file. It turns out that "Hello, World!" is bringing in 19% of all of the statements in Carbon.h, so we need to be lazy. llvm-svn: 69393
* PCH support for inline assembly statements.Douglas Gregor2009-04-171-3/+34
| | | | | | | This completes support for all of C (+ extensions). We can (again) build a PCH file for Carbon.h. llvm-svn: 69385
* PCH support for blocksDouglas Gregor2009-04-171-1/+9
| | | | llvm-svn: 69373
* PCH support for GNU statement expressionsDouglas Gregor2009-04-171-0/+9
| | | | llvm-svn: 69370
* PCH support for indirect gotos and address-of-label expressions.Douglas Gregor2009-04-171-0/+16
| | | | llvm-svn: 69369
* PCH support for labels and goto.Douglas Gregor2009-04-171-0/+31
| | | | llvm-svn: 69364
* PCH support for declaration statements, and a test for PredefinedExprDouglas Gregor2009-04-171-0/+11
| | | | llvm-svn: 69356
* PCH support for return statements.Douglas Gregor2009-04-171-0/+9
| | | | | | | Optimize PCH encoding for switch-case statements slightly, by making the switch-case numbering local to a particular statement. llvm-svn: 69355
* PCH support for do-while and for loopsDouglas Gregor2009-04-171-0/+20
| | | | llvm-svn: 69334
* PCH support for while and continue statementsDouglas Gregor2009-04-171-0/+16
| | | | llvm-svn: 69332
* PCH support for the first batch of statements, including null,Douglas Gregor2009-04-171-1/+94
| | | | | | compound, case, default, if, switch, and break statements. llvm-svn: 69329
* Prepare PCH reader and writer for (de-)serialization of statements. NoDouglas Gregor2009-04-161-112/+113
| | | | | | functionality change. llvm-svn: 69319
* Eliminate pch::TYPE_ATTR, which is never usedDouglas Gregor2009-04-161-2/+0
| | | | llvm-svn: 69256
* PCH support for CompoundLiteralExpr. This is the last C expressionDouglas Gregor2009-04-161-0/+9
| | | | | | | that does not require PCH support for statements. Only AddrLabelExpr, StmtExpr, and BlockExpr remain (for C). llvm-svn: 69255
* PCH support for InitListExpr, DesignatedInitExpr, and ImplicitValueInitExpr.Douglas Gregor2009-04-161-0/+58
| | | | llvm-svn: 69251
* PCH support for ShuffleVectorExpr and BlockDeclRefExprDouglas Gregor2009-04-161-0/+20
| | | | llvm-svn: 69244
* PCH support for TypesCompatibleExpr, ChooseExpr, and GNUNullExpr.Douglas Gregor2009-04-151-0/+28
| | | | llvm-svn: 69242
* PCH support for ExtVectorElementExpr and VAArgExpr.Douglas Gregor2009-04-151-0/+18
| | | | llvm-svn: 69240
* PCH support for CompoundAssignOperator and ConditionalOperatorDouglas Gregor2009-04-151-0/+17
| | | | llvm-svn: 69237
* PCH support for ImaginaryLiteral and ArraySubscriptExprDouglas Gregor2009-04-151-0/+16
| | | | llvm-svn: 69233
* PCH support for declaration attributesDouglas Gregor2009-04-151-1/+133
| | | | llvm-svn: 69225
OpenPOWER on IntegriCloud