summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization
Commit message (Collapse)AuthorAgeFilesLines
* Diagnose the expansion of ambiguous macro definitions. This can happenDouglas Gregor2012-10-111-2/+21
| | | | | | | only with modules, when two disjoint modules #define the same identifier to different token sequences. llvm-svn: 165746
* Introduce a simple "hint" scheme to eliminate the quadratic behaviorDouglas Gregor2012-10-111-5/+7
| | | | | | associated with deserializing macro history for an identifier. llvm-svn: 165729
* Make the deserialization of PendingMacroIDs deterministic.Douglas Gregor2012-10-111-11/+9
| | | | llvm-svn: 165727
* [libclang] Improve AST serialization done by ASTUnit::Save().Argyrios Kyrtzidis2012-10-111-1/+1
| | | | | | | | | The ASTUnit needs to initialize an ASTWriter at the beginning of parsing to fully handle serialization of a translation unit that imports modules. Do this by introducing an option to enable it, which corresponds to CXTranslationUnit_ForSerialization on the C API side. llvm-svn: 165717
* Remove the ASTDeserializationListener's MacroVisible() callback, whichDouglas Gregor2012-10-112-18/+0
| | | | | | | is no longer necessary, as well as the little bit of infrastructure in the AST writer that used it. llvm-svn: 165684
* Remove an unused bit from the serialized IdentifierInfoDouglas Gregor2012-10-112-4/+0
| | | | llvm-svn: 165683
* Deserialize macro history when we deserialize an identifier that hasDouglas Gregor2012-10-112-76/+80
| | | | | | | | | | | | | | | | | | | | | | | | macro history. When deserializing macro history, we arrange history such that the macros that have definitions (that haven't been #undef'd) and are visible come at the beginning of the list, which is what the preprocessor and other clients of Preprocessor::getMacroInfo() expect. If additional macro definitions become visible later, they'll be moved toward the front of the list. Note that it's possible to have ambiguities, but we don't diagnose them yet. There is a partially-implemented design decision here that, if a particular identifier has been defined or #undef'd within the translation unit, that definition (or #undef) hides any macro definitions that come from imported modules. There's still a little work to do to ensure that the right #undef'ing happens. Additionally, we'll need to scope the update records for #undefs, so they only kick in when the submodule containing that update record becomes visible. llvm-svn: 165682
* Rename ObjCMethodDecl::isSynthesized to isPropertyAccessor.Jordan Rose2012-10-102-2/+2
| | | | | | | | | | | | | This more accurately reflects its use: this flag is set when a method matches the getter or setter name for a property in the same class, and does not actually specify whether or not the definition of the method will be synthesized (either implicitly or explicitly with @synthesize). This renames the setter and backing field as well, and changes the (soon-to-be-obsolete?) XML dump format to use 'property_accessor' instead of 'synthesized'. llvm-svn: 165626
* When indexing a module file, for the ppIncludedFile callback giveArgyrios Kyrtzidis2012-10-101-8/+10
| | | | | | | an invalid location if the location points to the synthetic buffer for the module input. llvm-svn: 165592
* [modules] Consistently construct a buffer as input to build the module.Argyrios Kyrtzidis2012-10-101-1/+1
| | | | | | This means the main file for modules will always be a virtual one. llvm-svn: 165591
* Rework the (de-)serialization of macros, as stored inDouglas Gregor2012-10-094-52/+240
| | | | | | | | | | | | | | | | MacroInfo*. Instead of simply dumping an offset into the current file, give each macro definition a proper ID with all of the standard modules-remapping facilities. Additionally, when a macro is modified in a subsequent AST file (e.g., #undef'ing a macro loaded from another module or from a precompiled header), provide a macro update record rather than rewriting the entire macro definition. This gives us greater consistency with the way we handle declarations, and ties together macro definitions much more cleanly. Note that we're still not actually deserializing macro history (we never were), but it's far easy to do properly now. llvm-svn: 165560
* Make the order of visitation of the pending bodies in the AST readerDouglas Gregor2012-10-091-2/+2
| | | | | | deterministic. llvm-svn: 165515
* When we load a function or method body from an AST file, we checkDouglas Gregor2012-10-092-15/+38
| | | | | | | | | | whether that function/method already has a body (loaded from some other AST file), as introduced in r165137. Delay this check until after the redeclaration chains have been wired up. While I'm here, make the loading of method bodies lazy. llvm-svn: 165513
* If a macro has been #undef'd in a precompiled header, we still need toDouglas Gregor2012-10-092-3/+4
| | | | | | | | | | | | write out the macro history for that macro. Similarly, we need to cope with reading a macro definition that has been #undef'd. Take advantage of this new ability so that global code-completion results can refer to #undef'd macros, rather than losing them entirely. For multiply defined/#undef'd macros, we will still get the wrong result, but it's better than getting no result. llvm-svn: 165502
* [Modules] Introduce Module::TopHeaders which is a set of top-level headersArgyrios Kyrtzidis2012-10-052-1/+28
| | | | | | that are associated with a (sub)module. llvm-svn: 165279
* Fixed FunctionTypeLoc source range.Abramo Bagnara2012-10-042-0/+4
| | | | llvm-svn: 165259
* Fix r165005: The lexical DeclContext is not the right place to make a ↵Axel Naumann2012-10-041-4/+6
| | | | | | decision about whether we need to call tryAddTopLevelDecl or not. That call should be made when the DeclContext's redeclaration context is the translation unit. llvm-svn: 165215
* Remove ASTReader::needPendingInstantiation(), introduced in r164993,Douglas Gregor2012-10-031-57/+0
| | | | | | | which is neither correct nor necessary. The use of this routine was eliminated by r165137. llvm-svn: 165139
* Add some FIXMEs to the ASTReader codeDouglas Gregor2012-10-031-0/+2
| | | | llvm-svn: 165138
* Revert most of the functionality in r165001. Instead, make sure thatDouglas Gregor2012-10-032-16/+7
| | | | | | | the ASTReader doesn't attach a body to a function that is already defined elsewhere. llvm-svn: 165137
* [PCH] Fix serialization of an ImportDecl.Argyrios Kyrtzidis2012-10-032-0/+2
| | | | | | | | ImportDecl's module ID was not written out and the reader accepted as module ID the serialized: Record.push_back(!IdentifierLocs.empty()); llvm-svn: 165087
* Set the file entry for a Module* that was created during deserializationArgyrios Kyrtzidis2012-10-033-3/+6
| | | | | | of a module file. llvm-svn: 165086
* [PCH/Module] Change the map of file-level DeclIDs to use a FileIDArgyrios Kyrtzidis2012-10-021-4/+5
| | | | | | | as key instead of a SLocEntry pointer. This allows the array of file sorted declarations in a PCH/module to be deterministic. llvm-svn: 165047
* [libclang] When indexing an AST file, only deserialize the file levelArgyrios Kyrtzidis2012-10-023-2/+13
| | | | | | declarations of the current primary module. llvm-svn: 165046
* [libclang] When indexing an AST file, only deserialize the preprocessing recordArgyrios Kyrtzidis2012-10-021-0/+10
| | | | | | entities of the current primary module. llvm-svn: 165023
* Add info in the preprocessing record whether an inclusion directiveArgyrios Kyrtzidis2012-10-022-1/+3
| | | | | | resulted in an automatic module import. llvm-svn: 165022
* Add redecls into their lexical DeclContext: this is what they assert on, and ↵Axel Naumann2012-10-021-1/+1
| | | | | | | | the merging should have set it correctly. This is especially relevant for templatedDecls that might be injected (and thus have their DeclContext set to) somewhere completely different. llvm-svn: 165005
* Only those InterestingDecls that got added to the AST should be passed to ↵Axel Naumann2012-10-022-2/+11
| | | | | | the ASTConsumer. llvm-svn: 165001
* Merge pending instantiations instead of overwriting existing ones.Axel Naumann2012-10-022-6/+69
| | | | | | | | | | | Check whether a pending instantiation needs to be instantiated (or whether an instantiation already exists). Verify the size of the PendingInstantiations record (was only checking size of existing PendingInstantiations). Migrate Obj-C++ part of redecl-merge into separate test, now that this is growing. templates.mm: test that CodeGen has seen exactly one definition of template instantiations. redecl-merge.m: use "@" specifier for expected-diagnostics. llvm-svn: 164993
* Add FP_CONTRACT support for clang.Lang Hames2012-10-022-0/+4
| | | | | | | | Clang will now honor the FP_CONTRACT pragma and emit LLVM fmuladd intrinsics for expressions of the form A * B + C (when they occur in a single statement). llvm-svn: 164989
* The Redeclarable part of named decls is read before their name.Axel Naumann2012-10-011-2/+4
| | | | | | | | Lookup can nevertheless find them due to the serialized lookup table. For instance when reading a template decl's templatedDecl, it will search for existing decls that it could be a redeclaration of, and find the half-read template decl. Thus there is no point in asserting the names of decls. llvm-svn: 164932
* Also merge template redeclarations.Axel Naumann2012-10-011-7/+13
| | | | | | Don't require specializations (of existing and read template) to be unique. llvm-svn: 164931
* Bring ASTReader and Writer into sync for the case where a canonical template ↵Axel Naumann2012-10-012-7/+11
| | | | | | | | | specialization was written, which is non-canonical at the time of reading: force the reading of the ClassTemplateDecl if it was written. The easiest way out is to store whether the decl was canonical at the time of writing. Add test. llvm-svn: 164927
* Fix the AST representation for non-type template arguments to encodeEli Friedman2012-09-262-2/+15
| | | | | | | | | | | | enough information so we can mangle them correctly in cases involving dependent parameter types. (This specifically impacts cases involving null pointers and cases involving parameters of reference type.) Fix the mangler to use this information instead of trying to scavenge it out of the parameter declaration. <rdar://problem/12296776>. llvm-svn: 164656
* Macro history (de-)serialization. Deserialization currently reads only the ↵Alexander Kornienko2012-09-252-103/+122
| | | | | | | | | | | | | | | | latest macro definition. Needs more work. Summary: Passes all tests (+ the new one with code completion), but needs a thorough review in part related to modules. Reviewers: doug.gregor Reviewed By: alexfh CC: cfe-commits, rsmith Differential Revision: http://llvm-reviews.chandlerc.com/D41 llvm-svn: 164610
* Make sure that we don't end up making an #undef'd macro visible afterDouglas Gregor2012-09-241-3/+9
| | | | | | | the fact. Test cases will come when we're actually (de-)serializing macro history. llvm-svn: 164549
* [PCH] After deserializing a DeclContext, if it has external lexical decls ↵Argyrios Kyrtzidis2012-09-212-0/+7
| | | | | | | | | | | | | | but not external visible decls, call DeclContext::setMustBuildLookupTable so that the "lazy decls" bit of the LookupPtr is set. Previously, in non-C++, if there were no new declarations causing the "lazy decls" bit to be set, then DeclContext::lookups_begin() would fail to return the decls from the PCH. Fixes rdar://12316296. llvm-svn: 164351
* Serialize the 'IsConstexpr' bit of VarDecls. Fixes <rdar://problem/12328814>.Douglas Gregor2012-09-202-1/+7
| | | | llvm-svn: 164335
* ASTWriter: Tighten up assertions when emitting a declaration name.Benjamin Kramer2012-09-191-7/+9
| | | | | | | | clang has recently started to warn about the enum compares: lib/Serialization/ASTWriter.cpp:2760:31: warning: comparison of literal 256 with expression of type 'clang::DeclarationName::NameKind' is always true [-Wtautological-constant-out-of-range-compare] llvm-svn: 164220
* Add the TypeSourceInfo for the lambda call operator to the lambda'sEli Friedman2012-09-192-1/+4
| | | | | | | | definition info; it needs to be there because the mangler needs to access it before we're finished defining the lambda class. PR12808. llvm-svn: 164186
* Remove an unused private field exposed by the recent LLVM_DELETED_FUNCTION ↵Craig Topper2012-09-181-5/+4
| | | | | | changes. llvm-svn: 164106
* Use LLVM_DELETED_FUNCTION in place of 'DO NOT IMPLEMENT' comments.Dmitri Gribenko2012-09-151-2/+2
| | | | llvm-svn: 163983
* Fix abbreviation for CharacterLiteral in AST serialization. PR13806.Eli Friedman2012-09-141-1/+1
| | | | llvm-svn: 163863
* PR13811: Add a FunctionParmPackExpr node to handle references to functionRichard Smith2012-09-122-0/+26
| | | | | | | parameter packs where the reference is not being expanded but the pack has been. Previously, Clang would segfault in such cases. llvm-svn: 163672
* [PCH] Add a null check to avoid crashing.Argyrios Kyrtzidis2012-09-101-2/+4
| | | | | | Unfortunately, no test case. rdar://11960120 llvm-svn: 163566
* PR9023: A template template parameter whose template parameter list contains anRichard Smith2012-09-072-11/+38
| | | | | | | | | | | | | unexpanded parameter pack is a pack expansion. Thus, as with a non-type template parameter which is a pack expansion, it needs to be expanded early into a fixed list of template parameters. Since the expanded list of template parameters is not itself a parameter pack, it is permitted to appear before the end of the template parameter list, so also remove that restriction (for both template template parameter pack expansions and non-type template parameter pack expansions). llvm-svn: 163369
* Revert r163083 per chandlerc's request.Joao Matos2012-09-042-14/+0
| | | | llvm-svn: 163149
* Implemented parsing and AST support for the MS __leave exception statement. ↵Joao Matos2012-09-022-0/+14
| | | | | | Also a minor fix to __except printing in StmtPrinter.cpp. Thanks to Aaron Ballman for review. llvm-svn: 163083
* Normalize line endings of r163013 (part 2).Joao Matos2012-08-311-10/+10
| | | | llvm-svn: 163032
* Improved MSVC __interface support by adding first class support for it, ↵Joao Matos2012-08-311-8/+10
| | | | | | instead of aliasing to "struct" which had some incorrect behaviour. Patch by David Robins. llvm-svn: 163013
OpenPOWER on IntegriCloud