| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 146445
|
| |
|
|
|
|
| |
comparing inodes doesn't actually work on Windows.
llvm-svn: 146260
|
| |
|
|
|
|
|
|
|
|
| |
belonged in the Serialization library, it's setting up a compilation,
not just deserializing.
This should fix PR11512, making Serialization actually be layered below
Frontend, a long standing layering violation in Clang.
llvm-svn: 146233
|
| |
|
|
|
|
|
|
| |
different from what the comments indicated. Also drop a no longer used
include that also violates the layering between Serialization and
Frontend.
llvm-svn: 146230
|
| |
|
|
|
|
|
|
| |
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.
llvm-svn: 146227
|
| |
|
|
| |
llvm-svn: 146213
|
| |
|
|
|
|
|
| |
diagnostics. Conflating them was highly confusing and makes it harder to
establish a firm layering separation between these two libraries.
llvm-svn: 146207
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
umbrella headers in the sense that all of the headers within that
directory (and eventually its subdirectories) are considered to be
part of the module with that umbrella directory. However, unlike
umbrella headers, which are expected to include all of the headers
within their subdirectories, Clang will automatically include all of
the headers it finds in the named subdirectory.
The intent here is to allow a module map to trivially turn a
subdirectory into a module, where the module's structure can mimic the
directory structure.
llvm-svn: 146165
|
| |
|
|
|
|
|
|
|
|
| |
header to also support umbrella directories. The umbrella directory
for an umbrella header is the directory in which the umbrella header
resides.
No functionality change yet, but it's coming.
llvm-svn: 146158
|
| |
|
|
| |
llvm-svn: 146034
|
| |
|
|
|
|
|
| |
implicitly generates submodules corresponding to the headers that fall
within a module.
llvm-svn: 145887
|
| |
|
|
|
|
|
| |
Module, and (de-)serialize this information. Semantics of inferred
submodules to follow.
llvm-svn: 145864
|
| |
|
|
|
|
|
|
| |
to re-export anything that it imports. This opt-in feature makes a
module behave more like a header, because it can be used to re-export
the transitive closure of a (sub)module's dependencies.
llvm-svn: 145811
|
| |
|
|
| |
llvm-svn: 145809
|
| |
|
|
|
|
|
| |
it imports, establishing dependencies at the (sub)module
granularity. This is not a user-visible change (yet).
llvm-svn: 145808
|
| |
|
|
|
|
|
|
|
|
| |
when deserialized, fixing random crashes in libclang.
Also simplifies how OpaqueValueExprs are [de]serialized.
The reader/writer automatically retains pointer equality of sub-statements (when a
statement node is referenced in multiple nodes), so no need to manually handle it.
llvm-svn: 145752
|
| |
|
|
|
|
| |
modules they import, since that information isn't actually used. Drop it from the AST file
llvm-svn: 145738
|
| |
|
|
|
|
|
|
| |
"main" files that import modules. When loading any of these kinds of
AST files, we make the modules that were imported visible into the
translation unit that loaded the PCH file or preamble.
llvm-svn: 145737
|
| |
|
|
|
|
|
|
| |
__import_module__ std.vector;
in the AST.
llvm-svn: 145725
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
precompiled header. Previously, we were trying to gather predefines
buffers from all kinds of AST files (which doesn't make sense) and
were performing some validation when AST files were loaded as main
files.
With these tweaks, using PCH files that import modules no longer fails
immediately (due to mismatched predefines buffers). However, module
visibility is lost, so this feature does not yet work.
llvm-svn: 145709
|
| |
|
|
|
|
|
| |
visible, allowing one to create modules that import (and then
re-export) other modules.
llvm-svn: 145696
|
| |
|
|
|
|
| |
module map.
llvm-svn: 145695
|
| |
|
|
|
|
|
| |
(sub)module is read from an AST file. This makes sure that the AST
writer knows how to map all modules to their global IDs.
llvm-svn: 145685
|
| |
|
|
|
|
|
|
| |
only the macro definitions from visible (sub)modules will actually be
visible. This provides the same behavior for macros that r145640
provided for declarations.
llvm-svn: 145683
|
| |
|
|
|
|
| |
module. When that module becomes visible, so do those declarations.
llvm-svn: 145640
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
(sub)module, all of the names may be hidden, just the macro names may
be exposed (for example, after the preprocessor has seen the import of
the module but the parser has not), or all of the names may be
exposed. Importing a module makes its names, and the names in any of
its non-explicit submodules, visible to name lookup (transitively).
This commit only introduces the notion of name visible and marks
modules and submodules as visible when they are imported. The actual
name-hiding logic in the AST reader will follow (along with test cases).
llvm-svn: 145586
|
| |
|
|
|
|
|
| |
of that declaration, and encode the submodule ID in each declaration
stored in an AST file.
llvm-svn: 145555
|
| |
|
|
|
|
|
|
| |
a standard global/local scheme, so that submodule definitions will
eventually be able to refer to submodules in other top-level
modules. We'll need this functionality soonish.
llvm-svn: 145549
|
| |
|
|
|
|
|
|
|
| |
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).
llvm-svn: 145538
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
PassInterestingDeclsToConsumer
we may end up having added more pending stuff to do, so go in a loop until everything
is cleared out.
This fixes the error in rdar://10278815 which has a certain David Lynch-esque quality..
error: unknown type name 'BOOL'; did you mean 'BOOL'?
llvm-svn: 145536
|
| |
|
|
|
|
|
|
|
| |
submodules. This information will eventually be used for name hiding
when dealing with submodules. For now, we only use it to ensure that
the module "key" returned when loading a module will always be a
module (rather than occasionally being a FileEntry).
llvm-svn: 145497
|
| |
|
|
|
|
| |
writer. No functionality change.
llvm-svn: 145479
|
| |
|
|
| |
llvm-svn: 145110
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
file region
inside an objc container that "contains" other file-level declarations.
When getting the array of file-level declarations that overlap with a file region,
we failed to report that the region overlaps with an objc container, if
the container had other file-level declarations declared lexically inside it.
Fix this by marking such declarations as "isTopLevelDeclInObjCContainer" in the AST
and handling them appropriately.
llvm-svn: 145109
|
| |
|
|
|
|
| |
file as a virtual file with the stored modification time and size.
llvm-svn: 144916
|
| |
|
|
| |
llvm-svn: 144879
|
| |
|
|
|
|
|
|
|
|
| |
file in the source manager. This allows us to properly create and use
modules described by module map files without umbrella headers (or
with incompletely umbrella headers). More generally, we can actually
build a PCH file that makes use of file -> buffer remappings, which
could be useful in libclang in the future.
llvm-svn: 144830
|
| |
|
|
|
|
| |
building modules.
llvm-svn: 144680
|
| |
|
|
|
|
|
|
| |
code must be set
otherwise it will crash with asserts on or it will be written as null pointer.
llvm-svn: 144626
|
| |
|
|
|
|
|
|
| |
'ImplicitInterfaceDecl',
no need to store it in another field.
llvm-svn: 144624
|
| |
|
|
|
|
| |
otherwise we may crash.
llvm-svn: 144524
|
| |
|
|
|
|
| |
introduces/redeclares a property.
llvm-svn: 144520
|
| |
|
|
|
|
| |
should have been already emitted.
llvm-svn: 144519
|
| |
|
|
|
|
|
|
|
| |
HeaderFileInfos
from the primary PCH is deserialized, otherwise we lose info that headers were
already #imported/#included.
llvm-svn: 144510
|
| |
|
|
| |
llvm-svn: 144505
|
| |
|
|
|
|
|
|
| |
[is/set]ChangedSinceDeserialization
and remove them.
llvm-svn: 144466
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of its categories because
it is going to be rewritten (and the chain will be serialized again), otherwise we may form a cycle in its
categories list when deserializing.
Also introduce ASTMutationListener::CompletedObjCForwardRef to notify that a forward reference
was completed; using Decl's isChangedSinceDeserialization/setChangedSinceDeserialization
is bug inducing and kinda gross, we should phase it out.
Fixes infinite loop in rdar://10418538.
llvm-svn: 144465
|
| |
|
|
|
|
| |
convention of SPECIAL_TYPE*.
llvm-svn: 144403
|
| |
|
|
|
|
|
| |
but it is sometimes useful to track blocks. Do so. Also
optimize the storage of these expressions.
llvm-svn: 144263
|
| |
|
|
|
|
|
|
|
|
|
| |
In certain cases ASTReader would call the normal DiagnosticsEngine API to initialize
the state of diagnostic pragmas but DiagnosticsEngine would try to compare source locations
leading to crash because the main FileID was not yet initialized.
Yet another case of the ASTReader trying to use the normal APIs and inadvertently breaking
invariants. Fix this by having the ASTReader set up the internal state directly.
llvm-svn: 144153
|