#
dadd85dc |
| 08-Feb-2013 |
Douglas Gregor <dgregor@apple.com> |
Never cache the result of a module file lookup.
llvm-svn: 174744
|
#
2236c20f |
| 07-Feb-2013 |
Douglas Gregor <dgregor@apple.com> |
Be a little more permissive with -fmodules-ignore-macro= by removing everything after the second '=' if it is there.
llvm-svn: 174567
|
#
5dc3899c |
| 07-Feb-2013 |
Douglas Gregor <dgregor@apple.com> |
Introduce -fmodules-ignore-macro=NNN to ignore a macro when building/loading modules.
The use of this flag enables a modules optimization where a given set of macros can be labeled as "ignored" by t
Introduce -fmodules-ignore-macro=NNN to ignore a macro when building/loading modules.
The use of this flag enables a modules optimization where a given set of macros can be labeled as "ignored" by the modules system. Definitions of those macros will be completely ignored when building the module hash and will be stripped when actually building modules. The overall effect is that this flag can be used to drastically reduce the number of
Eventually, we'll want modules to tell us what set of macros they respond to (the "configuration macros"), and anything not in that set will be excluded. However, that requires a lot of per-module information that must be accurate, whereas this option can be used more readily.
Fixes the rest of <rdar://problem/13165109>.
llvm-svn: 174560
show more ...
|
#
8a114ab5 |
| 06-Feb-2013 |
Douglas Gregor <dgregor@apple.com> |
Detect when we end up trying to load conflicting module files.
This can happen when one abuses precompiled headers by passing more -D options when using a precompiled hedaer than when it was built.
Detect when we end up trying to load conflicting module files.
This can happen when one abuses precompiled headers by passing more -D options when using a precompiled hedaer than when it was built. This is intentionally permitted by precompiled headers (and is exploited by some build environments), but causes problems for modules.
First part of <rdar://problem/13165109>, detecting when something when horribly wrong.
llvm-svn: 174554
show more ...
|
#
125df058 |
| 01-Feb-2013 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
For ModuleLoader::makeModuleVisible() also pass the source location where the module import occurred.
llvm-svn: 174191
|
#
17441589 |
| 30-Jan-2013 |
Jordan Rose <jordan_rose@apple.com> |
Don't warn about Unicode characters in -E mode.
People use the C preprocessor for things other than C files. Some of them have Unicode characters. We shouldn't warn about Unicode characters appearin
Don't warn about Unicode characters in -E mode.
People use the C preprocessor for things other than C files. Some of them have Unicode characters. We shouldn't warn about Unicode characters appearing outside of identifiers in this case.
There's not currently a way for the preprocessor to tell if it's in -E mode, so I added a new flag, derived from the PreprocessorOutputOptions. This is only used by the Unicode warnings for now, but could conceivably be used by other warnings or even behavioral differences later.
<rdar://problem/13107323>
llvm-svn: 173881
show more ...
|
#
e060e57b |
| 25-Jan-2013 |
Douglas Gregor <dgregor@apple.com> |
Implement the reader of the global module index and wire it into the AST reader.
The global module index tracks all of the identifiers known to a set of module files. Lookup of those identifiers loo
Implement the reader of the global module index and wire it into the AST reader.
The global module index tracks all of the identifiers known to a set of module files. Lookup of those identifiers looks first in the global module index, which returns the set of module files in which that identifier can be found. The AST reader only needs to look into those module files and any module files not known to the global index (e.g., because they were (re)built after the global index), reducing the number of on-disk hash tables to visit. For an example source I'm looking at, we go from 237844 total identifier lookups into on-disk hash tables down to 126817.
Unfortunately, this does not translate into a performance advantage. At best, it's a wash once the global module index has been built, but that's ignore the cost of building the global module index (which is itself fairly large). Profiles show that the global module index code is far less efficient than it should be; optimizing it might give enough of an advantage to justify its continued inclusion.
llvm-svn: 173405
show more ...
|
#
c1bbec85 |
| 25-Jan-2013 |
Douglas Gregor <dgregor@apple.com> |
Rename the -cc1 option "-generate-module-index" to "-fmodules-global-index" and expand its behavior to include both the use and generation of the global module index.
llvm-svn: 173404
|
#
5e306b12 |
| 23-Jan-2013 |
Douglas Gregor <dgregor@apple.com> |
Implement the writer side of the global module index.
The global module index is a "global" index for all of the module files within a particular subdirectory in the module cache, which keeps track
Implement the writer side of the global module index.
The global module index is a "global" index for all of the module files within a particular subdirectory in the module cache, which keeps track of all of the "interesting" identifiers and selectors known in each of the module files. One can perform a fast lookup in the index to determine which module files will have more information about entities with a particular name/selector. This information can help eliminate redundant lookups into module files (a serious performance problem) and help with creating auto-import/auto-include Fix-Its.
The global module index is created or updated at the end of a translation unit that has triggered a (re)build of a module by scraping all of the .pcm files out of the module cache subdirectory, so it catches everything. As with module rebuilds, we use the file system's atomicity to synchronize.
llvm-svn: 173301
show more ...
|
#
f1b49e23 |
| 20-Jan-2013 |
Sean Silva <silvas@purdue.edu> |
Nuke SetUpBuildDumpLog.
Also, it was the only reason that `argc` and `argv` were being passed into createDiagnostics, so remove those parameters and clean up callers.
llvm-svn: 172945
|
#
2118a5cd |
| 20-Jan-2013 |
Sean Silva <silvas@purdue.edu> |
Fix what appears to be a copy-paste error.
This looks like it was copied from SetUpBuildDumpLog, which dumps to the file `DiagOpts->DumpBuildInformation`. There is another member `DiagOpts->Diagnost
Fix what appears to be a copy-paste error.
This looks like it was copied from SetUpBuildDumpLog, which dumps to the file `DiagOpts->DumpBuildInformation`. There is another member `DiagOpts->DiagnosticLogFile` which appears to be unused. The fact that this feature doesn't even print to the output file specified on the command line makes me think that it should be ripped out.
llvm-svn: 172944
show more ...
|
#
f857950d |
| 12-Jan-2013 |
Dmitri Gribenko <gribozavr@gmail.com> |
Remove useless 'llvm::' qualifier from names like StringRef and others that are brought into 'clang' namespace by clang/Basic/LLVM.h
llvm-svn: 172323
|
#
c147b0bc |
| 12-Jan-2013 |
Douglas Gregor <dgregor@apple.com> |
Provide Decl::getOwningModule(), which determines the (sub)module in which a particular declaration resides. Use this information to customize the "definition of 'blah' must be imported from another
Provide Decl::getOwningModule(), which determines the (sub)module in which a particular declaration resides. Use this information to customize the "definition of 'blah' must be imported from another module" diagnostic with the module the user actually has to import. Additionally, recover by importing that module, so we don't complain about other names in that module.
Still TODO: coming up with decent Fix-Its for these cases, and expand this recovery approach for other name lookup failures.
llvm-svn: 172290
show more ...
|
#
0f2b4635 |
| 10-Jan-2013 |
Douglas Gregor <dgregor@apple.com> |
Be more careful about updating the failed-modules set
llvm-svn: 172035
|
#
2060482e |
| 04-Jan-2013 |
Douglas Gregor <dgregor@apple.com> |
Remove -Wmodule-build; it was a dumb idea anyway. <rdar://problem/12957525>
llvm-svn: 171478
|
Revision tags: llvmorg-3.2.0, llvmorg-3.2.0-rc3 |
|
#
3a02247d |
| 04-Dec-2012 |
Chandler Carruth <chandlerc@gmail.com> |
Sort all of Clang's files under 'lib', and fix up the broken headers uncovered.
This required manually correcting all of the incorrect main-module headers I could find, and running the new llvm/util
Sort all of Clang's files under 'lib', and fix up the broken headers uncovered.
This required manually correcting all of the incorrect main-module headers I could find, and running the new llvm/utils/sort_includes.py script over the files.
I also manually added quite a few missing headers that were uncovered by shuffling the order or moving headers up to be main-module-headers.
llvm-svn: 169237
show more ...
|
#
f3d587ea |
| 04-Dec-2012 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
Refactor recording the preprocessor conditional directive regions out of PreprocessingRecord and into its own class, PPConditionalDirectiveRecord.
Decoupling allows a client to use the functionality
Refactor recording the preprocessor conditional directive regions out of PreprocessingRecord and into its own class, PPConditionalDirectiveRecord.
Decoupling allows a client to use the functionality of PPConditionalDirectiveRecord without needing a PreprocessingRecord.
llvm-svn: 169229
show more ...
|
#
63365431 |
| 30-Nov-2012 |
Douglas Gregor <dgregor@apple.com> |
Rename ModuleBuildPath -> ModuleBuildStack. Thanks, Dmitri!
llvm-svn: 169045
|
#
af8f0263 |
| 30-Nov-2012 |
Douglas Gregor <dgregor@apple.com> |
When an error occurs while building a module on demand, provide "While building module 'Foo' imported from..." notes (the same we we provide "In file included from..." notes) in the diagnostic, so th
When an error occurs while building a module on demand, provide "While building module 'Foo' imported from..." notes (the same we we provide "In file included from..." notes) in the diagnostic, so that we know how this module got included in the first place. This is part of <rdar://problem/12696425>.
llvm-svn: 169021
show more ...
|
Revision tags: llvmorg-3.2.0-rc2 |
|
#
7a626570 |
| 29-Nov-2012 |
Douglas Gregor <dgregor@apple.com> |
Keep track of modules that have failed to build. If we encounter an import of that module elsewhere, don't try to build the module again: it won't work, and the experience is quite dreadful. We track
Keep track of modules that have failed to build. If we encounter an import of that module elsewhere, don't try to build the module again: it won't work, and the experience is quite dreadful. We track this information somewhat globally, shared among all of the related CompilerInvocations used to build modules on-the-fly, so that a particular Clang instance will only try to build a given module once.
Fixes <rdar://problem/12552849>.
llvm-svn: 168961
show more ...
|
#
db0745ab |
| 27-Nov-2012 |
Daniel Dunbar <daniel@zuster.org> |
Frontend: Create a virtual file for named pipe inputs. - This ensures we see the right buffer size for the file.
llvm-svn: 168636
|
#
f8715de5 |
| 16-Nov-2012 |
Douglas Gregor <dgregor@apple.com> |
Since CreateTargetInfo is taking ownership of the target options, pass it as a pointer.
llvm-svn: 168136
|
#
2ec29367 |
| 15-Nov-2012 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
[modules] Setup the import location of a module file and use it as the include location of the main file of an imported module.
llvm-svn: 168061
|
Revision tags: llvmorg-3.2.0-rc1 |
|
#
6566e23e |
| 09-Nov-2012 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
Add a FileCharacteristic parameter to SourceManager::createFileIDForMemBuffer for completeness and use it in CompilerInstance::InitializeSourceManager if the input is a memory buffer.
llvm-svn: 1676
Add a FileCharacteristic parameter to SourceManager::createFileIDForMemBuffer for completeness and use it in CompilerInstance::InitializeSourceManager if the input is a memory buffer.
llvm-svn: 167628
show more ...
|
#
873c8583 |
| 09-Nov-2012 |
Argyrios Kyrtzidis <akyrtzi@gmail.com> |
Turn FrontendInputFile into an immutable class and have it also accept a memory buffer instead of only a filename.
llvm-svn: 167627
|