summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization
Commit message (Collapse)AuthorAgeFilesLines
...
* Add a FileCharacteristic parameter to SourceManager::createFileIDForMemBufferArgyrios Kyrtzidis2012-11-091-2/+4
| | | | | | | for completeness and use it in CompilerInstance::InitializeSourceManager if the input is a memory buffer. llvm-svn: 167628
* Allow to pass from syntactic form of InitListExpr to semantic form (just as ↵Abramo Bagnara2012-11-082-1/+4
| | | | | | viceversa). No functionality change. llvm-svn: 167591
* When loading a module fails because it is out of date, rebuild thatDouglas Gregor2012-11-072-9/+53
| | | | | | module in place. <rdar://problem/10138913> llvm-svn: 167539
* PR13552: Fix the end location of a CXXNewExpr.David Blaikie2012-11-072-2/+2
| | | | | | | | | Spent longer than reasonable looking for a nice way to test this & decided to give up for now. Open to suggestions/requests. Richard Smith suggested adding something to ASTMatchers but it wasn't readily apparent how to test this with that. llvm-svn: 167507
* Tease out the routine that reads the control block of an AST file fromDouglas Gregor2012-11-061-26/+34
| | | | | | the validation of an AST file against a specific set of options. llvm-svn: 167504
* [PCH] Take into account the 'include' source location of a SM_SLOC_BUFFER_ENTRY.Argyrios Kyrtzidis2012-11-061-1/+3
| | | | llvm-svn: 167426
* [PCH] Write out the ClassTemplateDecl::Common::InjectedClassNameType typeArgyrios Kyrtzidis2012-11-062-3/+3
| | | | | | | | | | | | | | | | | reference instead of relying on computing it. In general, if storage is no issue, it is preferable to deserialize info from the PCH instead of trying to recompute it after the PCH was loaded. The incentive to change this now was due to r155303 changing how friend template classes in dependent contexts are handled; such classes can now be chained to a previous template class but the computed InjectedClassNameType may be different due to the extra template parameters from the dependent context. The new handling requires more investigation but, in the meantime, writing out InjectedClassNameType fixes PCH issue in rdar://12627738. llvm-svn: 167425
* [libclang] Correct how the index inside the local preprocessed entities arrayArgyrios Kyrtzidis2012-11-021-5/+3
| | | | | | is getting converted to a global PreprocessedEntityID. llvm-svn: 167280
* [PCH] Remove the stat cache from the PCH file.Argyrios Kyrtzidis2012-10-314-169/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The stat cache became essentially useless ever since we started validating all file entries in the PCH. But the motivating reason for removing it now is that it also affected correctness in this situation: -You have a header without include guards (using "#pragma once" or #import) -When creating the PCH: -The same header is referenced in an #include with different filename cases. -In the PCH, of course, we record only one file entry for the header file -But we cache in the PCH file the stat info for both filename cases -Then the source files are updated and the header file is updated in a way that its size and modification time are the same but its inode changes -When using the PCH: -We validate the headers, we check that header file and we create a file entry with its current inode -There's another #include with a filename with different case than the previously created file entry -In order to get its stat info we go through the cached stat info of the PCH and we receive the old inode -because of the different inodes, we think they are different files so we go ahead and include its contents. Removing the stat cache will potentially break clients that are attempting to use the stat cache as a way of avoiding having the actual input files available. If that use case is important, patches are welcome to bring it back in a way that will actually work correctly (i.e., emit a PCH that is self-contained, coping with literal strings, line/column computations, etc.). This fixes rdar://5502805 llvm-svn: 167172
* getOriginalSourceFileName and getOriginalSourceFile can return a StringRef.Rafael Espindola2012-10-301-6/+5
| | | | | | | MaybeAddSystemRootToFilename doesn't need to return anything, it modifies its argument. llvm-svn: 166988
* [PCH] The diagnostic state points can refer to previously createdArgyrios Kyrtzidis2012-10-302-14/+37
| | | | | | | | | diagnostic states; make sure the ASTReader sets the diagnostic state properly instead of always recreating it. Fixes rdar://12581618 & http://llvm.org/PR14181 llvm-svn: 166987
* Remove the old predefines-buffer diffing code completely. It's beenDouglas Gregor2012-10-251-332/+1
| | | | | | | replaced by the more efficient, cleaner preprocessor-option version that occurs earlier in PCH validation. llvm-svn: 166654
* Fix computation of predefines buffer from the preprocessor-optionDouglas Gregor2012-10-251-10/+1
| | | | | | checking, and disable the old predefines-buffer-diff'ing code path. llvm-svn: 166653
* The the preprocessor option validator to compute suggestedDouglas Gregor2012-10-251-14/+72
| | | | | | | predefines. We're not quite ready to cut over to these suggested predefines yet, however. llvm-svn: 166648
* Teach the PCH validator to check the preprocessor options, especiallyDouglas Gregor2012-10-242-6/+129
| | | | | | | | | | | | | | | the macros that are #define'd or #undef'd on the command line. This checking happens much earlier than the current macro-definition checking and is far cleaner, because it does a direct comparison rather than a diff of the predefines buffers. Moreover, it allows us to use the result of this check to skip over PCH files within a directory that have non-matching -D's or -U's on the command line. Finally, it improves the diagnostics a bit for mismatches, fixing <rdar://problem/8612222>. The old predefines-buffer diff'ing will go away in a subsequent commit. llvm-svn: 166641
* (De-)serialize the preprocessor options, including macros defined,Douglas Gregor2012-10-242-3/+75
| | | | | | -include'd files, etc. llvm-svn: 166614
* (De-)serialize header search options.Douglas Gregor2012-10-242-2/+101
| | | | llvm-svn: 166586
* (De-)serialize the file system options.Douglas Gregor2012-10-242-1/+27
| | | | llvm-svn: 166577
* Serialize DiagnosticOptions to the AST file.Douglas Gregor2012-10-242-0/+45
| | | | llvm-svn: 166572
* If the precompiled header named by "-include" is actually a directory,Douglas Gregor2012-10-231-82/+235
| | | | | | | | | check each of the files within that directory to determine if any of them is an AST file that matches the language and target options. If so, the first matching AST file is loaded. This fixes a longstanding discrepency with GCC's precompiled header implementation. llvm-svn: 166469
* Allow clients of the AST reader to specify what kinds of AST loadDouglas Gregor2012-10-221-62/+108
| | | | | | | | | | failures they know how to tolerate, e.g., out-of-date input files or configuration/version mismatches. Suppress the corresponding diagnostics if the client can handle it. No clients actually use this functionality, yet. llvm-svn: 166449
* Collapse ASTReader::ReadSLocEntryRecord() into its only caller,Douglas Gregor2012-10-221-8/+3
| | | | | | ReadSLocEntry(). No functionality change. llvm-svn: 166447
* Distinguish the various kinds of AST file loading failures:Douglas Gregor2012-10-221-112/+90
| | | | | | | | file corruption, compiler version mismatch, target/language configuration mismatch, out-of-date AST file. No functionality change yet. llvm-svn: 166446
* ASTReader.cpp: Fix a warning. [-Wunused-variable]NAKAMURA Takumi2012-10-221-0/+1
| | | | llvm-svn: 166442
* Eliminate the redundancy between source-file information in the sourceDouglas Gregor2012-10-222-201/+174
| | | | | | | | | | manager block and input-file information in the control block. The source manager entries now point back into the control block. Input files are now lazily deserialized (if validation is disabled). Reduces Cocoa's PCH by the ~70k I added when I introduced the redundancy in r166251. llvm-svn: 166429
* ASTWriter.cpp: Fix a warning. [-Wunused-variable]NAKAMURA Takumi2012-10-191-2/+1
| | | | llvm-svn: 166257
* Describe the new input-files block and its record, for llvm-bcanalyzer.Douglas Gregor2012-10-191-0/+3
| | | | llvm-svn: 166252
* Move the set of files to be validated in an AST file into the controlDouglas Gregor2012-10-193-126/+190
| | | | | | | | | | | | | block, so the input files are validated early on, before we've committed to loading the AST file. This (accidentally) fixed a but wherein the main file used to generate the AST file would *not* be validated by the existing validation logic. At the moment, this leads to some duplication of filenames between the source manager block and input-file blocks, as well as validation logic. This will be handled via an upcoming patch. llvm-svn: 166251
* Move OriginalDir from ASTReader to ModuleFile.Douglas Gregor2012-10-181-18/+13
| | | | llvm-svn: 166233
* Move the "RelocatablePCH" bit from the ASTReader to the module file.Douglas Gregor2012-10-181-9/+9
| | | | llvm-svn: 166229
* Move information about the "original file" from the ASTReader into theDouglas Gregor2012-10-181-17/+21
| | | | | | module files. llvm-svn: 166228
* From Vassil Vassilev: enable Sema to deal with multiple ExternalSemaSources.Axel Naumann2012-10-181-1/+1
| | | | llvm-svn: 166208
* Collapse the original file name and original file ID records into aDouglas Gregor2012-10-182-19/+9
| | | | | | single record. llvm-svn: 166206
* Collapse the "version control revision/tag" AST file record into theDouglas Gregor2012-10-182-33/+35
| | | | | | | metadata record, which already had other version information. Clean up the block info block along the way. llvm-svn: 166204
* Split the target options out into their own record within the ASTDouglas Gregor2012-10-182-31/+39
| | | | | | file's control block. llvm-svn: 166195
* DR1442: In a range-based for statement, namespace 'std' is not an associatedRichard Smith2012-10-182-4/+0
| | | | | | namespace. llvm-svn: 166194
* Start factoring the on-disk records for an AST file into a controlDouglas Gregor2012-10-182-155/+230
| | | | | | | | | | | | | | | | | block, which stores information about how the AST file to generated, from the AST block, which stores the actual serialized AST. The information in the control block should be enough to determine whether the AST file is up-to-date and compatible with the current translation unit, and reading it should not cause any side effects that aren't easy to undo. That way, we can back out from an attempt to read an incompatible or out-of-date AST file. Note that there is still more factoring to do. In particular, information about the source files used to generate the AST file (along with their time stamps, sizes, etc.) still resides in the source manager block. llvm-svn: 166166
* Set a special flag in class metadata when an Objective-C classJohn McCall2012-10-172-0/+4
| | | | | | | | | has ivars that require destruction, but none that require anything except zero-initialization. This is common in ARC and (when true throughout a class hierarchy) permits the elimination of an unnecessary message-send during allocation. llvm-svn: 166088
* Serialize TargetOptions into an AST file, and make sure that we keepDouglas Gregor2012-10-162-23/+92
| | | | | | | target options around so they can be accessed at any point (rather than keeping them transient). llvm-svn: 166072
* Introduce the notion of excluded headers into the module mapDouglas Gregor2012-10-152-1/+33
| | | | | | | | description. Previously, one could emulate this behavior by placing the header in an always-unavailable submodule, but Argyrios guilted me into expressing this idea properly. llvm-svn: 165921
* [PCH] We only need to record C++ overridden methods once for the canonical decl.Argyrios Kyrtzidis2012-10-121-5/+10
| | | | llvm-svn: 165788
* Track which particular submodule #undef's a macro, so that the actualDouglas Gregor2012-10-122-10/+49
| | | | | | #undef only occurs if that submodule is imported. llvm-svn: 165773
* 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
OpenPOWER on IntegriCloud