summaryrefslogtreecommitdiffstats
path: root/clang/lib/Serialization
Commit message (Collapse)AuthorAgeFilesLines
...
* [modules] When explicitly building a module file, don't include timestamps inRichard Smith2015-08-174-33/+34
| | | | | | | the produced pcm file for stable file creation across distributed build systems. llvm-svn: 245199
* [OPENMP] Fix for http://llvm.org/PR24371: Assert failure compiling blender 2.75.Alexey Bataev2015-08-142-0/+7
| | | | | | | blender uses statements expression in condition of the loop under control of the '#pragma omp parallel for'. This condition is used several times in different expressions required for codegen of the loop directive. If there are some variables defined in statement expression, it fires an assert during codegen because of redefinition of the same variables. We have to rebuild several expression to be sure that all variables are unique. llvm-svn: 245041
* [modules] Add an experimental -cc1 feature to embed the contents of an inputRichard Smith2015-08-141-1/+2
| | | | | | | | | | | file in the .pcm files. This allows a smaller set of files to be sent to a remote build worker when building with explicit modules (for instance, module map files need not be sent along with the corresponding precompiled modules). This doesn't actually make the embedded files visible to header search, so it's not useful as a packaging format for public header files. llvm-svn: 245028
* [modules] When writing a module file built with -fmodule-map-file-home-is-cwd,Richard Smith2015-08-131-9/+18
| | | | | | | | via a module map found by -fmodule-map-file=, the home directory of the module is the current working directory, even if that's a different directory on reload. llvm-svn: 244988
* [modules] Change the way we deal with .d output for explicitly-specified moduleRichard Smith2015-08-131-10/+15
| | | | | | | | | | | | | files: include the .pcm file itself in the .d output, rather than including its own input files. Other forms of module file continue to be transparent for .d output. Arguably, the input files for the .pcm file are still inputs to the compilation, but that's unnecessary for make-like build systems (where the mtime of the .pcm file is sufficient) and harmful for smarter build systems that know about module files and want to track only the local dependencies. llvm-svn: 244923
* [modules] If loading a .pcm file would cause us to run out of source ↵Richard Smith2015-08-121-0/+4
| | | | | | locations, attempt to fail more gracefully. (No test; this requires >= 4GB of preprocessed input...) llvm-svn: 244822
* [modules] When instantiating the contents of an imported CXXRecordDecl, we canRichard Smith2015-08-111-6/+13
| | | | | | | | emit lexical contents for a declaration for another module. Track which module those contents came from, and ensure that we only grab the lexical contents from a single such instantiation. llvm-svn: 244682
* Add an assert to catch lexical decl deserialization bugs.Richard Smith2015-08-111-0/+1
| | | | llvm-svn: 244671
* Remove some dead code.Richard Smith2015-08-101-12/+0
| | | | llvm-svn: 244530
* [modules] Remove now-dead code for lazy loading of files specified by ↵Richard Smith2015-08-093-38/+0
| | | | | | -fmodule-file=. llvm-svn: 244417
* [modules] PR22534: Load files specified by -fmodule-file= eagerly. In ↵Richard Smith2015-08-091-23/+80
| | | | | | particular, this avoids the need to re-parse module map files when using such a module. llvm-svn: 244416
* [modules] When loading a template specialization, re-canonicalize its templateRichard Smith2015-08-092-9/+22
| | | | | | | | arguments because the reloaded form might have become non-canonical across the serialization/deserialization step (this particularly happens when the canonical form of the type involves an expression). llvm-svn: 244409
* This patch commits OpenMP 4 target device clausesMichael Wong2015-08-072-0/+13
| | | | | | | This is committed on behalf of Kelvin Li http://reviews.llvm.org/D11469?id=31227 llvm-svn: 244325
* [modules] Remove unused ModuleManager::visitDepthFirst function.Richard Smith2015-08-061-65/+0
| | | | llvm-svn: 244289
* [modules] Fix use-after-iterator-invalidation bug.Richard Smith2015-08-061-1/+1
| | | | llvm-svn: 244288
* [modules] Stop walking all modules when looking for lexical decls for aRichard Smith2015-08-062-69/+55
| | | | | | DeclContext. These only ever come from the owning module file for the Decl. llvm-svn: 244285
* [modules] Remove now-unused MergedLookups map.Richard Smith2015-08-061-20/+0
| | | | llvm-svn: 244277
* [modules] Remove redundant lookups into non-primary DeclContexts. These were ↵Richard Smith2015-08-061-64/+13
| | | | | | made unnecessary by r244192. llvm-svn: 244271
* [OPENMP 4.1] Allow references in init expression for loop-based constructs.Alexey Bataev2015-08-062-0/+7
| | | | | | OpenMP 4.1 allows to use variables with reference types in private clauses and, therefore, in init expressions of the cannonical loop forms. llvm-svn: 244209
* [modules] Defer setting up the lookup table for a DeclContext until we canRichard Smith2015-08-063-113/+106
| | | | | | | | | | | | | | | | determine the primary context, rather than sometimes registering the lookup table on the wrong context. This exposed a couple of bugs: * the odr violation check didn't deal properly with mergeable declarations if the declaration retained by name lookup wasn't in the canonical definition of the class * the (broken) RewriteDecl mechanism would emit two name lookup tables for the same DeclContext into the same module file (one as part of the rewritten declaration and one as a visible update for the old declaration) These are both fixed too. llvm-svn: 244192
* function_ref-ize ExternalASTSource::FindExternalLexicalDecl and remove itsRichard Smith2015-08-051-24/+30
| | | | | | | | useless return value. Switch to using it directly when completing the redeclaration chain for an anonymous declaration, and reduce the set of declarations that we load in the process to just those of the right kind. llvm-svn: 244161
* [AST] ArrayRefize BlockDecl::setCaptures. No functionality change intended.Benjamin Kramer2015-08-051-2/+1
| | | | llvm-svn: 244027
* [AST] ArrayRefize template argument packs. No functionality change intended.Benjamin Kramer2015-08-051-1/+1
| | | | llvm-svn: 244026
* [modules] Make IndirectFieldDecl mergeable to avoid lookup ambiguity when ↵Richard Smith2015-08-041-0/+9
| | | | | | the same anonymous union is defined across multiple modules. llvm-svn: 243940
* Make sure the 2 method calls are sequenced.Argyrios Kyrtzidis2015-07-311-1/+2
| | | | llvm-svn: 243727
* [modules] Fix issue where building a module from a relative path when ↵Argyrios Kyrtzidis2015-07-311-9/+2
| | | | | | | | | -working-directory option is set, results in error. The error was "module '<name>' was built in directory '<path>' but now resides in directory '<path>' rdar://21330027 llvm-svn: 243718
* Use llvm::reverse to make a bunch of loops use foreach. NFC.Pete Cooper2015-07-301-5/+4
| | | | | | | | | | | | | | | | In llvm commit r243581, a reverse range adapter was added which allows us to change code such as for (auto I = Fields.rbegin(), E = Fields.rend(); I != E; ++I) { in to for (const FieldDecl *I : llvm::reverse(Fields)) This commit changes a few of the places in clang which are eligible to use this new adapter. llvm-svn: 243663
* [OPENMP 4.1] Initial support for extended 'ordered' clause.Alexey Bataev2015-07-302-2/+8
| | | | | | | | OpenMP 4.1 introduces optional argument '(n)' for 'ordered' clause, where 'n' is a number of loops that immediately follow the directive. 'n' must be constant positive integer expressions and it must be less or equal than the number of the loops in the resulting loop nest. Patch adds parsing and semantic analysis for this optional argument. llvm-svn: 243635
* Remove some noise "this->"s left behind by r243213.Richard Smith2015-07-301-38/+37
| | | | llvm-svn: 243614
* [modules] Remove redundant information written into DeclContext name lookup ↵Richard Smith2015-07-302-7/+6
| | | | | | tables. We don't need to store the data length twice. llvm-svn: 243612
* [modules] Add an assert for redeclarations that we never added to their redeclRichard Smith2015-07-274-23/+36
| | | | | | | | | | | | | | | chain and fix the cases where it fires. * Handle the __va_list_tag as a predefined decl. Previously we failed to merge sometimes it because it's not visible to name lookup. (In passing, remove redundant __va_list_tag typedefs that we were creating for some ABIs. These didn't affect the mangling or representation of the type.) * For Decls derived from Redeclarable that are not in fact redeclarable (implicit params, function params, ObjC type parameters), remove them from the list of expected redeclarable decls. llvm-svn: 243259
* [Modules] Wrap the main ModuleManager visitor in a function_ref.Benjamin Kramer2015-07-253-89/+63
| | | | | | | Avoids the awkward passing of an opaque void *UserData argument. No functional change intended. llvm-svn: 243213
* ArrayRef-ize a pointer/length pair.Richard Smith2015-07-231-14/+13
| | | | llvm-svn: 242977
* Fix dumb use-after-free bug introduced in r242868.Richard Smith2015-07-221-9/+9
| | | | llvm-svn: 242960
* [modules] Stop performing PCM lookups for all identifiers when building with ↵Richard Smith2015-07-223-20/+91
| | | | | | C++ modules. Instead, serialize a list of interesting identifiers and mark those ones out of date on module import. Avoiding the identifier lookups here gives a 20-30% speedup in builds with large numbers of modules. No functionality change intended. llvm-svn: 242868
* [modules] Change module manager visitation order to be a bit more stable whenRichard Smith2015-07-221-13/+9
| | | | | | | | | | | more modules are added: visit modules depth-first rather than breadth-first. The visitation is still (approximately) oldest-to-newest, and still guarantees that a module is visited before anything it imports, so modules that are imported by others sometimes need to jump to a later position in the visitation order when more modules are loaded, but independent module trees don't interfere with each other any more. llvm-svn: 242863
* [modules] In C++, stop serializing and deserializing a list of declarations inRichard Smith2015-07-212-25/+37
| | | | | | | | | the identifier table. This is redundant, since the TU-scope lookups are also serialized as part of the TU DeclContext, and wasteful in a number of ways. We still emit the decls for PCH / preamble builds, since for those we want identical results, not merely semantically equivalent ones. llvm-svn: 242855
* Commit for http://reviews.llvm.org/D10765Michael Wong2015-07-212-0/+18
| | | | | | | for OpenMP 4 target data directive parsing and sema. This commit is on behalf of Kelvin Li. llvm-svn: 242785
* [modules] Don't save uninteresting identifiers, and don't consider identifiersRichard Smith2015-07-192-12/+27
| | | | | | | to be interesting just because they are the name of a builtin. Reduces the size of an empty module by over 80% (~100KB). llvm-svn: 242650
* Stop treating extension keywords as 'interesting'; we don't allow the extensionRichard Smith2015-07-172-4/+2
| | | | | | | flag to change between serialization and deserialization, so it does not require the identifier to be serialized. llvm-svn: 242567
* Refactor to remove repetition, no functionality change.Richard Smith2015-07-171-40/+27
| | | | llvm-svn: 242564
* Remove redundant bouncing between StringRef and a pair of 'const char *'.Richard Smith2015-07-171-2/+1
| | | | llvm-svn: 242562
* Make the clang module container format selectable from the command line.Adrian Prantl2015-07-173-19/+19
| | | | | | | | | | | | | - introduces a new cc1 option -fmodule-format=[raw,obj] with 'raw' being the default - supports arbitrary module container formats that libclang is agnostic to - adds the format to the module hash to avoid collisions - splits the old PCHContainerOperations into PCHContainerWriter and a PCHContainerReader. Thanks to Richard Smith for reviewing this patch! llvm-svn: 242499
* [modules] Switch to the normal reverse postorder visitation algorithm when ↵Richard Smith2015-07-152-80/+82
| | | | | | computing redeclaration chains. llvm-svn: 242253
* [modules] Avoid repeatedly hashing the same name when looking it up in ↵Richard Smith2015-07-142-47/+57
| | | | | | multiple module files. llvm-svn: 242180
* Extend -ftime-report to give more information about time spent reading ↵Richard Smith2015-07-141-1/+11
| | | | | | module files. llvm-svn: 242094
* Minor simplification, no functionality change.Richard Smith2015-07-122-17/+3
| | | | llvm-svn: 242001
* [modules] Improve performance when there is a local declaration of an entityRichard Smith2015-07-124-131/+169
| | | | | | | | before the first imported declaration. We don't need to track all formerly-canonical declarations of an entity; it's sufficient to track those ones for which no other formerly-canonical declaration was imported into the same module. We call those ones "key declarations", and use them as our starting points for collecting redeclarations and performing namespace lookups. llvm-svn: 241999
* [modules] Fix crash when writing an update record for a redeclaration of an ↵Richard Smith2015-07-081-4/+6
| | | | | | empty namespace. llvm-svn: 241732
* Revert "Revert r241620 and follow-up commits" and move the initializationAdrian Prantl2015-07-081-2/+1
| | | | | | of the llvm targets from clang/CodeGen into ClangCheck.cpp and CIndex.cpp. llvm-svn: 241653
OpenPOWER on IntegriCloud