| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
| |
abstractions (e.g., TemplateArgumentListBuilder) that were designed to
support variadic templates. Only a few remnants of variadic templates
remain, in the parser (parsing template type parameter packs), AST
(template type parameter pack bits and TemplateArgument::Pack), and
Sema; these are expected to be used in a future implementation of
variadic templates.
But don't get too excited about that happening now.
llvm-svn: 118385
|
|
|
|
| |
llvm-svn: 118305
|
|
|
|
|
|
|
|
| |
e.g. #pragma clang diagnostic can be used in a PCH.
Fixes rdar://8435969.
llvm-svn: 118303
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When -working-directory is passed in command line, file paths are resolved relative to the specified directory.
This helps both when using libclang (where we can't require the user to actually change the working directory)
and to help reproduce test cases when the reproduction work comes along.
--FileSystemOptions is introduced which controls how file system operations are performed (currently it just contains
the working directory value if set).
--FileSystemOptions are passed around to various interfaces that perform file operations.
--Opening & reading the content of files should be done only through FileManager. This is useful in general since
file operations will be abstracted in the future for the reproduction mechanism.
FileSystemOptions is independent of FileManager so that we can have multiple translation units sharing the same
FileManager but with different FileSystemOptions.
Addresses rdar://8583824.
llvm-svn: 118203
|
|
|
|
|
|
|
| |
directives. We had a std::string in an object that was allocated via a
BumpPtrAllocator.
llvm-svn: 117912
|
|
|
|
| |
llvm-svn: 117770
|
|
|
|
|
|
|
|
|
| |
load identifiers without loading their corresponding macro
definitions. This is likely to improve PCH performance slightly, and
reduces deserialization stack depth considerably when using
preprocessor metaprogramming.
llvm-svn: 117750
|
|
|
|
|
|
| |
the performance of C++ PCH and reducing stack depth in the reader.
llvm-svn: 117732
|
|
|
|
|
|
| |
global, make them local to a decl.
llvm-svn: 117540
|
|
|
|
|
|
|
|
| |
location before the
first one if the redeclaration comes from a friend decl.
llvm-svn: 117537
|
|
|
|
|
|
|
|
| |
DeclContext,
meaning we need to rewrite its name lookup table in a chained PCH.
llvm-svn: 117536
|
|
|
|
| |
llvm-svn: 117535
|
|
|
|
| |
llvm-svn: 117534
|
|
|
|
|
|
| |
chained PCH.
llvm-svn: 117533
|
|
|
|
|
|
|
| |
not loading the specializations of a class template until some AST
consumer needs them.
llvm-svn: 117498
|
|
|
|
|
|
| |
some excessive recursion and deserialization.
llvm-svn: 117480
|
|
|
|
|
|
| |
eliminate some excessive recursion and deserialization.
llvm-svn: 117476
|
|
|
|
|
|
| |
anymore.
llvm-svn: 117357
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
getCanonicalType() to make sure that the type we got back is actually
canonical. This is the case for most types, which always build a
canonical type when given canonical components. However, some types that
involve expressions in their canonicalization (e.g., array types with
dependent sizes) don't always build canonical types from canonical
components, because there is no such thing as a "canonical"
expression. Therefore, we do this extra mapping to ensure that the
canonical types we store are actually canonical.
llvm-svn: 117344
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds them where missing, and traces them through PCH. We fix at least one
bug in the extents found by the Index library, and make a lot of refactoring
tools which care about the exact formulation of a constructor call easier to
write. Also some minor cleanups to more consistently follow the friend pattern
instead of the setter pattern when rebuilding a serialized AST.
Patch originally by Samuel Benzaquen.
llvm-svn: 117254
|
|
|
|
|
|
| |
definition was completed.
llvm-svn: 117240
|
|
|
|
|
|
|
|
|
| |
completed.
In that case a chained PCH will record the updates to the DefinitionData pointer of forward references.
If a forward reference mutated into a definition re-write it into the chained PCH, this is too big of a change.
llvm-svn: 117239
|
|
|
|
|
|
| |
that will be replaced in the chained PCH.
llvm-svn: 117238
|
|
|
|
| |
llvm-svn: 117237
|
|
|
|
|
|
|
| |
- Pass around RecordDataImpl instead of the concrete RecordData so that any SmallVector can be used.
- Move ASTDeclWriter::WriteCXXDefinitionData to ASTWriter::AddCXXDefinitionData.
llvm-svn: 117236
|
|
|
|
|
|
|
|
|
|
|
|
| |
committed after
its initial creation/deserialization and store the changes in a chained PCH.
The idea is that the AST entities call methods on the ASTMutationListener to give notifications
of changes; the PCHWriter implements the ASTMutationListener interface and stores the incremental changes
of the updated entity. WIP
llvm-svn: 117235
|
|
|
|
|
|
|
|
| |
definition data when loaded from PCH.
Temporary disable 'test/PCH/chain-cxx.cpp' until a better way to fix it is in place.
llvm-svn: 117234
|
|
|
|
| |
llvm-svn: 117233
|
|
|
|
|
|
|
|
| |
more closely parallel the computation of linkage. This gets us to a state
much closer to what gcc emits, modulo bugs, which will undoubtedly arise in
abundance.
llvm-svn: 117147
|
|
|
|
|
|
|
|
|
|
| |
This adds an option to set the _MSC_VER macro without
recompiling. This is very useful when testing compatibility
with the Windows SDK and c++stdlib headers.
-fmsc-version=<version> (defaults to VS2003 (1300))
llvm-svn: 116999
|
|
|
|
| |
llvm-svn: 116990
|
|
|
|
|
|
|
|
| |
have the same location
if it's a template specialization pointing at the template.
llvm-svn: 116974
|
|
|
|
|
|
|
|
|
| |
inclusion directives, keeping track of every #include, #import,
etc. in the translation unit. We keep track of the source location and
kind of the inclusion, how the file name was spelled, and the
underlying file to which the inclusion resolved.
llvm-svn: 116952
|
|
|
|
|
|
| |
UPDATE_VISIBLE block were recorded beforehand.
llvm-svn: 116931
|
|
|
|
| |
llvm-svn: 116930
|
|
|
|
|
|
| |
definition in the chained PCH.
llvm-svn: 116887
|
|
|
|
| |
llvm-svn: 116866
|
|
|
|
|
|
| |
failures.
llvm-svn: 116859
|
|
|
|
| |
llvm-svn: 116838
|
|
|
|
|
|
|
|
|
| |
declaration block instead of trying to create another block.
The new block was messing with the assumption that after decls block comes the stmts block.
Fixes http://llvm.org/PR8406
llvm-svn: 116737
|
|
|
|
|
|
|
|
| |
by marking the decl invalid isn't. Make some steps towards supporting these
and then hastily shut them down at the last second by marking them as
unsupported.
llvm-svn: 116661
|
|
|
|
|
|
| |
AST node. (finishing off radar 8525788).
llvm-svn: 116603
|
|
|
|
|
|
| |
QualifierInfos (rdar://8513756).
llvm-svn: 116598
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
identifiers to determine good typo-correction candidates. Once we've
identified those candidates, we perform name lookup on each of them
and the consider the results.
This optimization makes typo correction > 2x faster on a benchmark
example using a single typo (NSstring) in a tiny file that includes
Cocoa.h from a precompiled header, since we are deserializing far less
information now during typo correction.
There is a semantic change here, which is interesting. The presence of
a similarly-named entity that is not visible can now affect typo
correction. This is both good (you won't get weird corrections if the
thing you wanted isn't in scope) and bad (you won't get good
corrections if there is a similarly-named-but-completely-unrelated
thing). Time will tell whether it was a good choice or not.
llvm-svn: 116528
|
|
|
|
| |
llvm-svn: 116524
|
|
|
|
|
|
|
|
| |
complete declaration context in order to compute it.
Progress for rdar://7260160.
llvm-svn: 116508
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
iterate over them,
instead of deserializing the complete declaration context of the record.
Iterating over the fields of a record is very common (e.g to determine the layout), unfortunately we needlessly deserialize every declaration
that the declaration context of the record contains; this can be bad for large C++ classes that contain a lot of methods.
Fix this by allow deserialization of just the fields when we want to iterate over them.
Progress for rdar://7260160.
llvm-svn: 116507
|
|
|
|
|
|
| |
functionality change.
llvm-svn: 116506
|
|
|
|
|
|
|
| |
'super' as receiver of property or a setter/getter
methods. //rdar: //8525788
llvm-svn: 116483
|
|
|
|
|
|
| |
bit by me).
llvm-svn: 116122
|