| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
| |
in the order they occur within the class template, delaying
out-of-line member template partial specializations until after the
class has been fully instantiated. This fixes a regression introduced
by r118454 (itself a fix for PR8001).
llvm-svn: 118704
|
|
|
|
|
|
| |
other class extensions. // rdar://7629420
llvm-svn: 118689
|
|
|
|
|
|
|
|
|
|
| |
@property declaration to the autogenerated methods. I'm uncertain
whether this should apply to attributes in general, but these are
a reasonable core.
Implements rdar://problem/8617301
llvm-svn: 118676
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
manually managing them
using new/delete and OwningPtrs. After memory profiling Clang, I witnessed periodic leaks of these
objects; digging deeper into the code, it was clear that our management of these objects was a mess. The ownership rules were murky at best, and not always followed. Worse, there are plenty of error paths where we could screw up.
This patch introduces AttributeList::Factory, which is a factory class that creates AttributeList
objects and then blows them away all at once. While conceptually simple, most of the changes in
this patch just have to do with migrating over to the new interface. Most of the changes have resulted in some nice simplifications.
This new strategy currently holds on to all AttributeList objects during the lifetime of the Parser
object. This is easily tunable. If we desire to have more bound the lifetime of AttributeList
objects more precisely, we can have the AttributeList::Factory object (in Parser) push/pop its
underlying allocator as we enter/leave key methods in the Parser. This means that we get
simple memory management while still having the ability to finely control memory use if necessary.
Note that because AttributeList objects are now BumpPtrAllocated, we may reduce malloc() traffic
in many large files with attributes.
This fixes the leak reported in: <rdar://problem/8650003>
llvm-svn: 118675
|
|
|
|
|
|
| |
Fixes PR7915.
llvm-svn: 118670
|
|
|
|
|
|
| |
Recover from the latter and fail early for the former. Fixes PR8022.
llvm-svn: 118669
|
|
|
|
|
|
|
| |
a positive value into a signed bitfield of the exact width of
the value.
llvm-svn: 118657
|
|
|
|
|
|
|
|
| |
bitfield assignment.
Implements rdar://problem/7809123
llvm-svn: 118647
|
|
|
|
|
|
|
|
|
|
|
| |
own subcategory, -Wconstant-conversion, which is on by default.
Tweak the constant folder to give better results in the invalid
case of a negative shift amount.
Implements rdar://problem/6792488
llvm-svn: 118636
|
|
|
|
| |
llvm-svn: 118635
|
|
|
|
|
|
| |
// rdar://8632525
llvm-svn: 118634
|
|
|
|
|
|
| |
conditional operators. Fixes PR7863.
llvm-svn: 118631
|
|
|
|
| |
llvm-svn: 118626
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
That bug concerned the well-formedness of code such as (&ovl)(a, b,
c). GCC rejects the code, while EDG accepts it. On further study of the
standard, I see no support for EDG's position: in particular, C++
[over.over] does not list this as a context where we can take the
address of an overloaded function, C++ [over.call.func] does not
reference the address-of operator at any point, and C++ [expr.call]
claims that the function argument in a call is either a function
lvalue or a pointer-to-function; (&ovl) is neither.
llvm-svn: 118620
|
|
|
|
|
|
| |
with, e.g., (&f)(a, b, c). Fixes PR8013.
llvm-svn: 118508
|
|
|
|
| |
llvm-svn: 118500
|
|
|
|
|
|
|
| |
definitions in its results. The original declarations will be visible
wherever they are declared.
llvm-svn: 118484
|
|
|
|
|
|
| |
Wieczorek! Fixes PR8025.
llvm-svn: 118481
|
|
|
|
|
|
| |
block so that it looks more like the rest of the file. No functional change.
llvm-svn: 118459
|
|
|
|
|
|
| |
Fixes PR8001.
llvm-svn: 118454
|
|
|
|
|
|
|
|
| |
and we statically can compute a bound on the actual type (e.g.,
because it's a send to the the magic "class" instance method), code
complete as if we were performing a class message send to that class.
llvm-svn: 118443
|
|
|
|
|
|
|
|
| |
is complete.
Fixes rdar://8620582 & http://llvm.org/PR7905
llvm-svn: 118428
|
|
|
|
|
|
|
|
|
| |
constructor template will not be used to copy a class object to a
value of its own type. We were eliminating all constructor templates
whose specializations look like a copy constructor, which eliminated
important candidates. Fixes PR8182.
llvm-svn: 118418
|
|
|
|
|
|
|
| |
consider that we might be trying to bind a reference to a class type,
which involves a constructor call. Fixes PR7425.
llvm-svn: 118407
|
|
|
|
|
|
| |
Faisal Vali, tweaked by me. Fixes PR8230.
llvm-svn: 118400
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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: 118381
|
|
|
|
| |
llvm-svn: 118371
|
|
|
|
|
|
| |
make sure to setup the instantiation stack. Fixes rdar://8620775 & http://llvm.org/PR8234
llvm-svn: 118314
|
|
|
|
|
|
|
|
| |
of its parent context, be sure to update the parent-context pointer
after instantiation. Fixes two anonymous-union instantiation issues in
<rdar://problem/8635664>.
llvm-svn: 118313
|
|
|
|
|
|
|
|
|
|
|
| |
of that field. Otherwise, we can end up building and later trying to
instantiate a dependent member initializer that will fail at
instantiation time.
Unfortunately, I've only managed to trigger this bug with very large
sources, so there's no test case :(
llvm-svn: 118306
|
|
|
|
| |
llvm-svn: 118276
|
|
|
|
|
|
| |
std::nullptr_t to bool is better than one than does.
llvm-svn: 118269
|
|
|
|
|
|
| |
making something up. Fixes PR8129.
llvm-svn: 118258
|
|
|
|
| |
llvm-svn: 118238
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
e.g. for:
template <int i> class A {
class B *g;
};
'class B' has the template as lexical context but semantically it is
introduced in namespace scope.
Fixes rdar://8611125 & http://llvm.org/PR8505
llvm-svn: 118235
|
|
|
|
|
|
| |
pointer constant.
llvm-svn: 118234
|
|
|
|
|
|
|
|
|
| |
the sets of available conversions for the first and second arguments
separate. This is apparently the indent of C++ [over.built], and
reduces the number of overload candidates generated, eliminating some
ambiguities. Fixes PR8477.
llvm-svn: 118178
|
|
|
|
|
|
|
|
| |
parameter name.
Fixes PR8012.
llvm-svn: 118138
|
|
|
|
|
|
|
|
|
| |
ensuring that they cover all of their child nodes. There's still a
clang_getCursor()-related issue with CXXFunctionalCastExprs with
CXXConstructExprs as children (see FIXME in the test case); I'll look
at that separately.
llvm-svn: 118132
|
|
|
|
|
|
| |
can be used to automatically synthesize an ivar.
llvm-svn: 118052
|
|
|
|
|
|
| |
Previously the temporaries would get destroyed before the asm call.
llvm-svn: 118001
|
|
|
|
|
|
|
| |
only keep deduction results for successful deductions, so that they
can be compared against each other. Fixes PR8462, from Richard Smith!
llvm-svn: 117983
|
|
|
|
| |
llvm-svn: 117963
|
|
|
|
| |
llvm-svn: 117954
|
|
|
|
|
|
|
|
| |
calling it.
Also avoids IRGen crashes due to accepting invalid code.
llvm-svn: 117943
|
|
|
|
| |
llvm-svn: 117942
|
|
|
|
|
|
| |
Fixes PR8489.
llvm-svn: 117776
|
|
|
|
|
|
|
|
|
| |
semantic error.
We already flag the error with InitListChecker's hadError and we mess up the AST unnecessarily.
Fixes rdar://8605381.
llvm-svn: 117760
|
|
|
|
|
|
|
|
| |
of descending into the subelements.
rdar://problem/8345836
llvm-svn: 117749
|