| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Enables the emission of MS-compatible RTTI data structures for use with
typeid, dynamic_cast and exceptions. Does not implement dynamic_cast
or exceptions. As an artiface, typeid works in some cases but proper
support an testing will coming in a subsequent patch.
majnemer has fuzzed the results. Test cases included.
Differential Revision: http://reviews.llvm.org/D3833
llvm-svn: 209523
|
| |
|
|
|
|
| |
CXXRecordDecls when modules is enabled.
llvm-svn: 209482
|
| |
|
|
| |
llvm-svn: 209466
|
| |
|
|
|
|
|
| |
This is generally a good thing and in this case should also fix the
BUILD_SHARED_LIBS=ON build (see pr19774).
llvm-svn: 209300
|
| |
|
|
|
|
|
|
|
|
|
| |
On test files I ran this on, memory consumption overall went down from
2.5G to 2G, without performance regressions.
I also investigated making DynTypedNode by itself smaller (by pulling
out pointers for everything that doesn't fit in 8 bytes). This led to
another 200-300MB saved, but also introduced a significant regression in
performance due to the memory management overhead.
llvm-svn: 209297
|
| |
|
|
| |
llvm-svn: 209289
|
| |
|
|
| |
llvm-svn: 209186
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ensure that querying the first declaration for its most recent declaration
checks for redeclarations from the imported module.
This works as follows:
* The 'most recent' pointer on a canonical declaration grows a pointer to the
external AST source and a generation number (space- and time-optimized for
the case where there is no external source).
* Each time the 'most recent' pointer is queried, if it has an external source,
we check whether it's up to date, and update it if not.
* The ancillary data stored on the canonical declaration is allocated lazily
to avoid filling it in for declarations that end up being non-canonical.
We'll still perform a redundant (ASTContext) allocation if someone asks for
the most recent declaration from a decl before setPreviousDecl is called,
but such cases are probably all bugs, and are now easy to find.
Some finessing is still in order here -- in particular, we use a very general
mechanism for handling the DefinitionData pointer on CXXRecordData, and a more
targeted approach would be more compact.
Also, the MayHaveOutOfDateDef mechanism should now be expunged, since it was
addressing only a corner of the full problem space here. That's not covered
by this patch.
Early performance benchmarks show that this makes no measurable difference to
Clang performance without modules enabled (and fixes a major correctness issue
with modules enabled). I'll revert if a full performance comparison shows any
problems.
llvm-svn: 209046
|
| |
|
|
|
|
|
|
| |
It makes more sense to just overload createFileID().
Gardening only.
llvm-svn: 209002
|
| |
|
|
|
|
|
|
| |
This is a step towards handling these attributes on classes (PR11170).
Differential Revision: http://reviews.llvm.org/D3772
llvm-svn: 208925
|
| |
|
|
|
|
|
|
|
|
|
| |
GetGVALinkageForFunction handles TSK_ExplicitInstantiationDeclaration
twice, remove the redundant code trying to handle it again.
While we are here, update the reference we make to the standard. It
seems like another paragraph was added causing this text to get
renumbered.
llvm-svn: 208850
|
| |
|
|
|
|
| |
it for -Wunused-comparion warnings. This fixes PR19724.
llvm-svn: 208824
|
| |
|
|
|
|
| |
duplicate attribute introducers. Eg) [[clang::fallthrough]] instead of [[[[clang::fallthrough]]]]
llvm-svn: 208706
|
| |
|
|
|
|
| |
std::copy while deserializing attributed statements with more than one attribute.
llvm-svn: 208702
|
| |
|
|
|
|
| |
class.
llvm-svn: 208687
|
| |
|
|
|
|
| |
r208661 contained WIP code, commit the *actual* manglings.
llvm-svn: 208668
|
| |
|
|
|
|
|
|
| |
Implement what we currently believe is the mangling scheme for RTTI
data. Tests will be added in a later commit which actually generate
RTTI data.
llvm-svn: 208661
|
| |
|
|
| |
llvm-svn: 208517
|
| |
|
|
|
|
|
|
| |
Also provide an out-of-line dtor for CompilerInvocation.
Cleanup work that may help reduce header inclusion for IntrusiveRefCntPtr.
llvm-svn: 208512
|
| |
|
|
|
|
|
| |
Required pulling LambdaExpr::Capture into its own header.
No functionality change.
llvm-svn: 208470
|
| |
|
|
|
|
| |
make getNextRedeclaration follow the pattern of its friends getPreviousDecl and getMostRecentDecl.
llvm-svn: 208467
|
| |
|
|
| |
llvm-svn: 208178
|
| |
|
|
| |
llvm-svn: 208164
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Update our mangling to match the discussion on cxx-abi-dev.
This involves using a seq-id instead of an optional number.
Reviewers: rsmith
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D3631
llvm-svn: 208140
|
| |
|
|
|
|
| |
clause 'proc_bind'
llvm-svn: 208060
|
| |
|
|
| |
llvm-svn: 207994
|
| |
|
|
| |
llvm-svn: 207962
|
| |
|
|
|
|
| |
That's exactly what TinyPtrVector was designed for. No functionality change.
llvm-svn: 207919
|
| |
|
|
|
|
|
|
|
| |
Having various possible states of initialization following construction doesn't
add value here.
Also remove the unused size_reserve parameter.
llvm-svn: 207897
|
| |
|
|
|
|
| |
VarDecl.
llvm-svn: 207867
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
Previously, we would generate a single name for all reference
temporaries and allow LLVM to rename them for us. Instead, number the
reference temporaries as we build them in Sema.
Reviewers: rsmith
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D3554
llvm-svn: 207776
|
| |
|
|
|
|
|
|
| |
Reviewers: rsmith
Differential Revision: http://reviews.llvm.org/D3551
llvm-svn: 207734
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Since the community says that a blacklist is not good enough, and I don't have
enough time now to implement a proper whitelist, let's just remove the
attribute validation.
But, nevertheless, we can still communicate in the generated XML if our parser
found an issue with the HTML. But this bit is best-effort and is specifically
called out in the schema as such.
llvm-svn: 207712
|
| |
|
|
|
|
|
|
|
| |
if-conditions.
I think this is the last commit for ARM64 big endian in clang. This commit makes
arm_neon.h compile correctly.
llvm-svn: 207624
|
| |
|
|
|
|
|
|
|
|
|
|
| |
It is possible that a variable template specialization might not have a
VisibilityAttr attached to it while the template that it specializes
does, in fact, have one.
We should consider the template in such cases.
This fixes PR19597.
llvm-svn: 207498
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
A reference temporary should inherit the linkage of the variable it
initializes. Otherwise, we may hit cases where a reference temporary
wouldn't have the same value in all translation units.
Reviewers: rsmith
Subscribers: cfe-commits
Differential Revision: http://reviews.llvm.org/D3515
llvm-svn: 207451
|
| |
|
|
|
|
|
|
|
|
| |
parameters from the original FullComment,
if the parameters are not already set (e.g. because it is a typedef).
Fixes crash of rdar://16128173
llvm-svn: 207382
|
| |
|
|
|
|
|
|
|
|
| |
are no
designated initializers in the super class hierarchy then it should return false.
rdar://16692535
llvm-svn: 207332
|
| |
|
|
|
|
| |
still in review.
llvm-svn: 207296
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We never aka vector types because our attributed syntax for it is less
comprehensible than the typedefs. This leaves the user in the dark when
the typedef isn't named that well.
Example:
v2s v; v4f w;
w = v;
The naming in this cases isn't even that bad, but the error we give is
useless without looking up the actual typedefs.
t.c:6:5: error: assigning to 'v4f' from incompatible type 'v2s'
Now:
t.c:6:5: error: assigning to 'v4f' (vector of 4 'float' values) from
incompatible type 'v2s' (vector of 2 'int' values)
We do this for all diagnostics that print a vector type.
llvm-svn: 207267
|
| |
|
|
| |
llvm-svn: 207138
|
| |
|
|
| |
llvm-svn: 207039
|
| |
|
|
| |
llvm-svn: 207007
|
| |
|
|
|
|
|
|
| |
Mangle ref-qualifiers like the Nov 2013 CTP.
This fixes PR19361.
llvm-svn: 206946
|
| |
|
|
|
|
| |
No functional change.
llvm-svn: 206945
|
| |
|
|
|
|
| |
No functional change.
llvm-svn: 206944
|
| |
|
|
|
|
| |
No functional change.
llvm-svn: 206943
|
| |
|
|
|
|
|
|
| |
overrider is present in both a vbase and nvbase
Reviewed at http://reviews.llvm.org/D3449
llvm-svn: 206908
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D3272
llvm-svn: 206891
|
| |
|
|
|
|
|
|
|
|
|
| |
through to the output even if the input comment comes from an untrusted source
Attribute filtering is currently based on a blacklist, which right now includes
all event handler attributes (they contain JavaScipt code). It should be
switched to a whitelist, but going over all of the HTML5 spec requires a
significant amount of time.
llvm-svn: 206882
|