aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInstance.cpp
AgeCommit message (Collapse)AuthorFilesLines
2012-11-30Rename ModuleBuildPath -> ModuleBuildStack. Thanks, Dmitri!Douglas Gregor1-6/+6
llvm-svn: 169045
2012-11-30When an error occurs while building a module on demand, provide "WhileDouglas Gregor1-14/+25
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
2012-11-29Keep track of modules that have failed to build. If we encounter anDouglas Gregor1-18/+55
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
2012-11-27Frontend: Create a virtual file for named pipe inputs.Daniel Dunbar1-1/+5
- This ensures we see the right buffer size for the file. llvm-svn: 168636
2012-11-16Since CreateTargetInfo is taking ownership of the target options, passDouglas Gregor1-1/+1
it as a pointer. llvm-svn: 168136
2012-11-15[modules] Setup the import location of a module file and use itArgyrios Kyrtzidis1-2/+3
as the include location of the main file of an imported module. llvm-svn: 168061
2012-11-09Add a FileCharacteristic parameter to SourceManager::createFileIDForMemBufferArgyrios Kyrtzidis1-1/+9
for completeness and use it in CompilerInstance::InitializeSourceManager if the input is a memory buffer. llvm-svn: 167628
2012-11-09Turn FrontendInputFile into an immutable class and have it also acceptArgyrios Kyrtzidis1-2/+2
a memory buffer instead of only a filename. llvm-svn: 167627
2012-11-09Make CompilerInstance::InitializeSourceManager accept a FrontendInputFile,Argyrios Kyrtzidis1-5/+7
no functionality change. llvm-svn: 167626
2012-11-07When loading a module fails because it is out of date, rebuild thatDouglas Gregor1-3/+26
module in place. <rdar://problem/10138913> llvm-svn: 167539
2012-11-05Frontend: Add support for reading named pipes as the main file.Daniel Dunbar1-0/+13
- The whole {File,Source}Manager is built around wanting to pre-determine the size of files, so we can't fit this in naturally. Instead, we handle it like we do STDIN, where we just replace the main file contents upfront. llvm-svn: 167419
2012-10-31[PCH] Remove the stat cache from the PCH file.Argyrios Kyrtzidis1-6/+2
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
2012-10-31Decouple code-completion for the SkipFunctionBodies frontend option andArgyrios Kyrtzidis1-1/+0
add a test to make sure code-completion skips bodies. llvm-svn: 167141
2012-10-24Teach the preprocessor to hold onto the preprocessor options.Douglas Gregor1-1/+2
llvm-svn: 166599
2012-10-24Move HeaderSearchOptions into the Lex library, make it intrusivelyDouglas Gregor1-1/+2
reference-counted, and hold a reference to it in HeaderSearch. llvm-svn: 166583
2012-10-23Make DiagnosticOptions intrusively reference-counted, and make sureDouglas Gregor1-17/+17
the various stakeholders bump up the reference count. In particular, the diagnostics engine now keeps the DiagnosticOptions object alive. llvm-svn: 166508
2012-10-22Allow clients of the AST reader to specify what kinds of AST loadDouglas Gregor1-2/+4
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
2012-10-22Distinguish the various kinds of AST file loading failures:Douglas Gregor1-2/+8
file corruption, compiler version mismatch, target/language configuration mismatch, out-of-date AST file. No functionality change yet. llvm-svn: 166446
2012-10-14Make sure temporary files are deleted when recovering from a crash when ↵Benjamin Kramer1-0/+1
compiling modules. llvm-svn: 165911
2012-10-14Delete temporary output files when an error occurs during PCH reading.Benjamin Kramer1-0/+1
This reduces the spam make test leaves behind in /tmp. The assert isn't particularly useful because it's not run with -disable-free (the default when using the clang driver) but should cover all -cc1 tests. llvm-svn: 165910
2012-10-09Rework the (de-)serialization of macros, as stored inDouglas Gregor1-0/+2
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
2012-10-03Introduce ASTConsumer::HandleImplicitImportDecl() callback that is invokedArgyrios Kyrtzidis1-3/+6
when an ImportDecl that was implicitly created due to an inclusion directive. llvm-svn: 165084
2012-09-29In the Module class, add a reference to the corresponding AST file.Argyrios Kyrtzidis1-0/+3
llvm-svn: 164873
2012-07-02Add a new libclang completion API to get brief documentation comment that isDmitri Gribenko1-8/+3
attached to a declaration in the completion string. Since extracting comments isn't free, a new code completion option is introduced. A new code completion option that enables including brief comments into CodeCompletionString should be a, err, code completion option. But because ASTUnit caches global declarations during parsing before even completion consumer is created, the option is duplicated as a translation unit option (in both libclang and ASTUnit, like the option to cache code completion results). llvm-svn: 159539
2012-05-16Pulls diagnostics for temp file handling into the common diagnostic kinds.Manuel Klimek1-1/+1
llvm-svn: 156947
2012-05-11For final output files create them with mode 0664 to match otherEric Christopher1-1/+2
compilers and expected defaults. Part of rdar://11325849 llvm-svn: 156592
2012-05-01Remove variables made dead by r155923David Blaikie1-2/+0
This makes Clang's build warning free again. llvm-svn: 155928
2012-05-01Remove dead code found by static analyzer.Ted Kremenek1-5/+0
llvm-svn: 155923
2012-04-16objective-c modern translator: buildit objc boolFariborz Jahanian1-0/+4
type for rewriter project will be BoolTy. // rdar://11231426. llvm-svn: 154861
2012-04-12Changed all direct calls to CompletionConsumer.reset(..) to go callErik Verbruggen1-4/+4
CompilerInstance::setCodeCompletionConsumer instead, in order to change the SkipFunctionBodies flag accordingly. Also fixed setCodeCompletionConsumer to take a reset() to null into account. llvm-svn: 154585
2012-04-12Added a flag to the parser to skip method bodies.Erik Verbruggen1-0/+1
llvm-svn: 154584
2012-03-07[PCH] Mark a PCH file with a flag to indicate if the serialized AST hadArgyrios Kyrtzidis1-1/+5
compiler errors or not. -Control whether ASTReader should reject such a PCH by a boolean flag at ASTReader's creation time. By default, such a PCH file will be rejected with an error when trying to load it. [libclang] Allow clang_saveTranslationUnit to create a PCH file even if compiler errors occurred. -Have libclang API calls accept a PCH that had compiler errors. The general idea is that we want libclang to stay functional even if a PCH had a compiler error. rdar://10976363. llvm-svn: 152192
2012-03-05[preprocessor] Enhance PreprocessingRecord to keep track of locations of ↵Argyrios Kyrtzidis1-1/+1
conditional directives. Introduce PreprocessingRecord::rangeIntersectsConditionalDirective() which returns true if a given range intersects with a conditional directive block. llvm-svn: 152018
2012-03-03Frontend: Default to creating output files using temporary files + rename.Daniel Dunbar1-1/+2
- This is a more reliable default, as it behaves better on failure and also ensures that we create *new* files (instead of reusing existing inodes). This is useful for other applications (like lldb) which want to cache inode's to know when a file has been rewritten. llvm-svn: 151961
2012-03-03Frontend: Don't automatically create missing directories when using ↵Daniel Dunbar1-6/+20
temporary files with createOutputFile() - This would otherwise happen as a side effect of llvm::sys::fs::unique_file creating parent directories. llvm-svn: 151960
2012-02-25Don't record nested macro expansions in the preprocessing record,Argyrios Kyrtzidis1-2/+1
it can only bring pain when dealing with preprocessor abuse (see: boost). rdar://10898986 llvm-svn: 151427
2012-02-20Basic: import IntrusiveRefCntPtr<> into clang namespaceDylan Noblesmith1-4/+4
The class name is long enough without the llvm:: added. Also bring in RefCountedBase and RefCountedBaseVPTR. llvm-svn: 150958
2012-02-05Basic: import SmallString<> into clang namespaceDylan Noblesmith1-5/+5
(I was going to fix the TODO about DenseMap too, but that would break self-host right now. See PR11922.) llvm-svn: 149799
2012-02-05Basic: import OwningPtr<> into clang namespaceDylan Noblesmith1-7/+7
llvm-svn: 149798
2012-02-02Rename -dependency-graphviz to -dependencncy-dotDouglas Gregor1-2/+2
llvm-svn: 149645
2012-02-02Introduce a -cc1 option "-dependency-graphviz" that determines headerDouglas Gregor1-0/+4
dependencies and outputs them in GraphViz format. llvm-svn: 149575
2012-01-30Thread a TargetInfo through to the module map; we'll need it forDouglas Gregor1-2/+3
target-specific module requirements. llvm-svn: 149224
2012-01-29Switch over to LLVM's file-level locking facilityDouglas Gregor1-265/+5
llvm-svn: 149204
2012-01-29Ensure that we clean up after a failed module build and cope with theDouglas Gregor1-1/+1
results in libclang. llvm-svn: 149200
2012-01-29Implement code completion support for module import declarations, e.g.,Douglas Gregor1-1/+0
@import <complete with module names here> or @import std.<complete with submodule names here> Addresses <rdar://problem/10710117>. llvm-svn: 149199
2012-01-29Rework HeaderSearch's interface for getting a module from a name andDouglas Gregor1-4/+18
for getting the name of the module file, unifying the code for searching for a module with a given name (into lookupModule()) and separating out the mapping to a module file (into getModuleFileName()). No functionality change. llvm-svn: 149197
2012-01-27Introduce module attributes into the module map grammar, along with aDouglas Gregor1-5/+8
single attribute ("system") that allows us to mark a module as being a "system" module. Each of the headers that makes up a system module is considered to be a system header, so that we (for example) suppress warnings there. If a module is being inferred for a framework, and that framework directory is within a system frameworks directory, infer it as a system framework. llvm-svn: 149143
2012-01-20Extract the (InputKind, std::string) pair used to describe inputs toDouglas Gregor1-5/+4
the front end into its own class, FrontendInputFile, to make it easier to introduce new per-input data. No functionality change. llvm-svn: 148546
2012-01-04Store the submodules of a module in source order, as they are storedDouglas Gregor1-12/+14
in the module map. This provides a bit more predictability for the user, as well as eliminating the need to sort the submodules when serializing them. llvm-svn: 147564
2011-12-31Implement support for module requirements, which indicate the languageDouglas Gregor1-1/+15
features needed for a particular module to be available. This allows mixed-language modules, where certain headers only work under some language variants (e.g., in C++, std.tuple might only be available in C++11 mode). llvm-svn: 147387