aboutsummaryrefslogtreecommitdiff
path: root/include/clang/Lex/HeaderSearch.h
AgeCommit message (Collapse)Author
2013-03-21<rdar://problem/13037793> Allow the names of modules to differ from the name ↵Douglas Gregor
of their subdirectory in the include path. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177621 91177308-0d34-0410-b5e6-96231b3b80d8
2013-03-13[Modules] Don't eagerly load and associate all the module header files.Argyrios Kyrtzidis
In a module-enabled Cocoa PCH file, we spend a lot of time stat'ing the headers in order to associate the FileEntries with their modules and support implicit module import. Use a more lazy scheme by enhancing HeaderInfoTable to store extra info about the module that a header belongs to, and associate it with its module only when there is a request for loading the header info for a particular file. Part of rdar://13391765 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176976 91177308-0d34-0410-b5e6-96231b3b80d8
2013-02-08Teach subframework header lookup to suggest modules <rdar://problem/13176200>.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174683 91177308-0d34-0410-b5e6-96231b3b80d8
2013-01-12Remove useless 'llvm::' qualifier from names like StringRef and others that areDmitri Gribenko
brought into 'clang' namespace by clang/Basic/LLVM.h git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172323 91177308-0d34-0410-b5e6-96231b3b80d8
2012-12-04Sort #include lines for all files under include/...Chandler Carruth
This is a simpler sort, entirely automatic with the help of llvm/utils/sort_includes.py -- no manual edits here. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169238 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-24Move HeaderSearchOptions into the Lex library, make it intrusivelyDouglas Gregor
reference-counted, and hold a reference to it in HeaderSearch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166583 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-02Enable programmatic provisioning of virtual module.map files (instead of ↵Axel Naumann
writing out actual module.map files). Opens up the wonders of clang::Modules to tools - though they remain as experimental as before. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@165002 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-18Remove an unused private field exposed by the recent LLVM_DELETED_FUNCTION ↵Craig Topper
changes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164103 91177308-0d34-0410-b5e6-96231b3b80d8
2012-09-18Mark unimplemented copy constructors and copy assignment operators with ↵Craig Topper
LLVM_DELETED_FUNCTION. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164102 91177308-0d34-0410-b5e6-96231b3b80d8
2012-07-23Fix a typo (the the => the)Sylvestre Ledru
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160622 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-22Documentation cleanup:James Dennett
* Primarily fixed \param commands with names not matching any actual parameters of the documented functions. In many cases this consists just of fixing up the parameter name in the \param to match the code, in some it means deleting obsolete documentation and occasionally it means documenting the parameter that has replaced the older one that was documented, which sometimes means some simple reverse-engineering of the docs from the implementation; * Fixed \param ParamName [out] to the correct format with [out] before the parameter name; * Fixed some \brief summaries. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158980 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-20Documentation cleanup: escape a < character in a Doxygen commentJames Dennett
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158861 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-17Documentation cleanup:James Dennett
* Escaped # characters in Doxygen comments as needed; * Exposed summaries using the \brief command. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158636 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-13More doxygen/documentation cleanups.James Dennett
This reduces the number of warnings generated by Doxygen by about 100 (roughly 10%). Issues addressed: (1) Primarily, backslash-escaped "@foo" and "#bah" in Doxygen comments when they're not supposed to be Doxygen commands or links, and similarly for "<baz>" when it's not intended as as HTML tag; (2) Changed some \t commands (which don't exist) to \c ("to refer to a word of code", as the Doxygen manual says); (3) \precondition becomes \pre; (4) When touching comments, deleted a couple of spurious spaces in them; (5) Changed some \n and \r to \\n and \\r; (6) Fixed one tiny typo: #pragms -> #pragma. This patch touches documentation/comments only. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158422 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-13Add -isystem-prefix and -ino-system-prefix arguments, which can be used toRichard Smith
override whether headers are system headers by checking for prefixes of the header name specified in the #include directive. This allows warnings to be disabled for third-party code which is found in specific subdirectories of include paths. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@158418 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-05[Lex] Add support for 'user specified system frameworks' (see test case).Daniel Dunbar
- Developers of system frameworks need a way for their framework to be treated as a "system framework" during development. Otherwise, they are unable to properly test how their framework behaves when installed because of the semantic changes (in warning behavior) applied to system frameworks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154105 91177308-0d34-0410-b5e6-96231b3b80d8
2012-04-05[Lex] HeaderSearch: Introduce a FrameworkCacheEntry structure to hold the ↵Daniel Dunbar
FrameworkMap items. - No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154104 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-02Adding support for #pragma include_alias in MS compatibility mode. This ↵Aaron Ballman
implements PR 10705. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151949 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-01Revert r151800, which was committed without review and has correctness issues.Richard Smith
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151804 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-01Fixing a buildbot complaint about nested templates.Aaron Ballman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151803 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-01Implements support for #pragma include_alias in ms compatibility mode. ↵Aaron Ballman
Fixes PR10705. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151800 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-30Thread a TargetInfo through to the module map; we'll need it forDouglas Gregor
target-specific module requirements. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149224 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-29Implement code completion support for module import declarations, e.g.,Douglas Gregor
@import <complete with module names here> or @import std.<complete with submodule names here> Addresses <rdar://problem/10710117>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149199 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-29Rework HeaderSearch's interface for getting a module from a name andDouglas Gregor
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149197 91177308-0d34-0410-b5e6-96231b3b80d8
2012-01-27Introduce module attributes into the module map grammar, along with aDouglas Gregor
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149143 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-31Implement support for module requirements, which indicate the languageDouglas Gregor
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). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@147387 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-09Move a free function from the Frontend library into the Lex library asChandler Carruth
part of HeaderSearch. This function just normalizes filenames for use inside of a synthetic include directive, but it is used in both the Frontend and Serialization libraries so it needs a common home. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146227 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-08Keep track of import dependencies between submodules within the moduleDouglas Gregor
that's currently being built. This is important for supporting transitive dependencies ("export *" in the module map) completely. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146156 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-30Promote ModuleMap::Module to a namespace-scope class in the BasicDouglas Gregor
library, since modules cut across all of the libraries. Rename serialization::Module to serialization::ModuleFile to side-step the annoying naming conflict. Prune a bunch of ModuleMap.h includes that are no longer needed (most files only needed the Module type). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145538 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-28When attempting to load a module that is not in the module cache,Douglas Gregor
return the module itself (in the module map) rather than returning the umbrella header used to build the module. While doing this, make sure that we're inferring modules for frameworks to build that module. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145310 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-20Allow preprocessor callbacks to recover from a "file not found" error,Douglas Gregor
from Jason Haslam! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@145012 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-17When making a suggestion regarding which module to load rather thanDouglas Gregor
preprocess/parse a header, report back with an actual module (which may be a submodule) rather than just the name of the module. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144925 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-17When we're loading a framework header, first try to turn the frameworkDouglas Gregor
into a module. This module can either be loaded from a module map in the framework directory (which isn't quite working yet) or inferred from an umbrella header (which does work, and replaces the existing hack). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144877 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-16Add support for building a module from a module map to the -cc1Douglas Gregor
interface. This is currently limited to modules with umbrella headers. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144736 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-13[PCH] When chaining a PCH and serializing HeaderSearch, make sure the ↵Argyrios Kyrtzidis
HeaderFileInfos from the primary PCH is deserialized, otherwise we lose info that headers were already #imported/#included. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144510 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-12Implement a minor optimization when loading module maps to satisfy aDouglas Gregor
module import: don't re-check for a loaded module unless we've actually loaded a new module map file. Already-loaded module map files aren't interesting. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144435 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-12When searching for a module, speculatively load module maps to see ifDouglas Gregor
the module is described in one of the module maps in a search path or in a subdirectory off the search path that has the same name as the module we're looking for. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144433 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-11Wire up the mapping from header files mentioned in module maps over toDouglas Gregor
the corresponding (top-level) modules. This isn't actually useful yet, because we don't yet have a way to build modules out of module maps. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144410 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-11Introduce basic support for parsing module map files.Douglas Gregor
Module map files provide a way to map between headers and modules, so that we can layer a module system on top of existing headers without changing those headers at all. This commit introduces the module map file parser and the module map that it generates, and wires up the module map file parser so that we'll automatically find module map files as part of header search. Note that we don't yet use the information stored in the module map. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144402 91177308-0d34-0410-b5e6-96231b3b80d8
2011-11-11I predict that HeaderSearch will need the ability to generateDouglas Gregor
diagnostics in the future. Make it so. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144347 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-15Add an experimental flag -fauto-module-import that automatically turnsDouglas Gregor
#include or #import direcctives of framework headers into module imports of the corresponding framework module. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139860 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-13For modules, use a hash of the compiler version, language options, andDouglas Gregor
target triple to separate modules built under different conditions. The hash is used to create a subdirectory in the module cache path where other invocations of the compiler (with the same version, language options, etc.) can find the precompiled modules. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139662 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-12When an import statement fails to find a module in the module cache,Douglas Gregor
but there is a corresponding umbrella header in a framework, build the module on-the-fly so it can be immediately loaded at the import statement. This is very much proof-of-concept code, with details to be fleshed out over time. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139558 91177308-0d34-0410-b5e6-96231b3b80d8
2011-09-12Introduce a cc1-level option to provide the path to the module cache,Douglas Gregor
where the compiler will look for module files. Eliminates the egregious hack where we looked into the header search paths for modules. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@139538 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-28Introduce the "-index-header-map" option, to give special semanticsDouglas Gregor
for quoted header lookup when dealing with not-yet-installed frameworks. Fixes <rdar://problem/9824020>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136331 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-26clang_getCXTUResourceUsage: report memory used by HeaderSearch.Ted Kremenek
This required converting the StringMaps to use a BumpPtrAllocator. I measured the compile time and saw no observable regression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136190 91177308-0d34-0410-b5e6-96231b3b80d8
2011-07-20now that we have a centralized place to do so, add some using declarations forChris Lattner
some common llvm types: stringref and smallvector. This cleans up the codebase quite a bit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@135576 91177308-0d34-0410-b5e6-96231b3b80d8
2011-05-24Make it possible for external tools to distinguish between paths that come ↵Nico Weber
from -I and paths that come from -system. Patch from Paul Holden! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@131955 91177308-0d34-0410-b5e6-96231b3b80d8
2011-05-04Introduce a new libclang API, clang_isFileMultipleIncludeGuarded(),Douglas Gregor
which determines whether a particular file is actually a header that is intended to be guarded from multiple inclusions within the same translation unit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130808 91177308-0d34-0410-b5e6-96231b3b80d8
2011-04-26To be able to replay compilations we need to accurately remodel howManuel Klimek
includes get resolved, especially when they are found relatively to another include file. We also try to get it working for framework includes, but that part of the code is untested, as I don't have a code base that uses it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130246 91177308-0d34-0410-b5e6-96231b3b80d8