| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
of giving unhelpful errors about undeclared identifers and missing semicolons.
llvm-svn: 155965
|
| |
|
|
|
|
|
|
| |
folding its one check into the normal path for checking overridden
Objective-C methods. Good for another 3.6% speedup on the test case in
<rdar://problem/11004361>.
llvm-svn: 155961
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
declared in a subclass has consistent parameter types with a method
having the same selector in a superclass performs a significant number
of lookups into the class hierarchy. In the example in
<rdar://problem/11004361>, we spend 4.7% of -fsyntax-only time in
these lookups.
Optimize away most of the calls to this routine
(Sema::CompareMethodParamsInBaseAndSuper) by first checking whether we
have ever seen *any* method with that selector (using the global
selector table). Since most selectors are unique, we can avoid the
cost of this name lookup in many cases, for a 3.3% speedup.
llvm-svn: 155958
|
| |
|
|
|
|
|
|
| |
<rdar://problem/11333367>.
While I'm here, fix source locations for other diagnostics related to property synthesis.
llvm-svn: 155953
|
| |
|
|
|
|
|
|
|
|
|
|
| |
BuildObjCNumericLiteral() and BuildObjCBoxedExpr() now both using
PerformCopyInitialization() rather than PerformImplicitConversion(),
which suppresses errors.
In BuildObjCBoxedExpr(): no longer calling .getCanonicalType(),
ValueType->getAs() will remove the minimal amount of sugar.
Using ValueType->isBuiltinType() instead of isa<BuiltinType>(ValueType).
llvm-svn: 155949
|
| |
|
|
|
|
| |
decls to work on function templates specializations.
llvm-svn: 155943
|
| |
|
|
| |
llvm-svn: 155938
|
| |
|
|
|
|
|
|
|
|
|
| |
[basic.lookup.classref]p1 and p4, which concerns name lookup for
nested-name-specifiers and template names, respectively, in a member
access expression. C++98/03 forces us to look both in the scope of the
object and in the current scope, then compare the results. C++11 just
takes the result from the scope of the object, if something is
found. Fixes <rdar://problem/11328502>.
llvm-svn: 155935
|
| |
|
|
|
|
| |
Based on Chandler Carruth's feedback on r155869.
llvm-svn: 155929
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I broke this in r155838 by not actually instantiating non-dependent default arg
expressions. The motivation for that change was to avoid producing duplicate
conversion warnings for such default args (we produce them once when we parse
the template - there's no need to produce them at each instantiation) but
without actually instantiating the default arg, things break in weird ways.
Technically, I think we could still get the right diagnostic experience without
the bugs if we instantiated the non-dependent args (for non-dependent params
only) immediately, rather than lazily. But I'm not sure if such a refactoring/
change would be desirable so here's the conservative fix for now.
llvm-svn: 155893
|
| |
|
|
|
|
| |
diagnostic, from Eitan Adler!
llvm-svn: 155876
|
| |
|
|
| |
llvm-svn: 155871
|
| |
|
|
| |
llvm-svn: 155870
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Similar to r155808 - this mistake has been made in a few iterators.
Based on Chandler Carruth's feedback to r155808 I added an implicit conversion
to Decl* to ease adoption/usage. Useful for the pointer comparison, but not the
dyn_cast (due to template argument deduction causing the conversion not to be
used) - there for future convenience, though. This idiom (op T* for iterators)
seems to be fairly idiomatic within the LLVM codebase & I'll likely add it as I
fix up the other iterators here.
llvm-svn: 155869
|
| |
|
|
|
|
| |
declarations at the global scope, from Evan P. Fixes PR9083.
llvm-svn: 155858
|
| |
|
|
|
|
|
|
|
|
| |
being used in an exception specification in a way which isn't otherwise
ill-formed in C++98: this warning also incorrectly triggered on uses of 'this'
inside thread-safety attributes, and the mechanism required to tell these cases
apart is more complex than can be justified by the (minimal) value of this part
of -Wc++98-compat.
llvm-svn: 155857
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of a local variable, make sure we don't infinitely recurse when the
reference binds to itself.
e.g:
int* func() {
int& i = i; // assign non-exist variable to a reference which has same name.
return &i; // return pointer
}
rdar://11345441
llvm-svn: 155856
|
| |
|
|
|
|
| |
Reviewed by Doug Gregor.
llvm-svn: 155839
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Apparently we weren't checking default arguments when they were instantiated.
This adds the check, fixes the lack of instantiation caching (which seems like
it was mostly implemented but just missed the last step), and avoids
implementing non-dependent default args (for non-dependent parameter types) as
uninstantiated default arguments (so that we don't warn once for every
instantiation when it's not instantiation dependent).
Reviewed by Richard Smith.
llvm-svn: 155838
|
| |
|
|
|
|
|
| |
when we're in an Objective-C container context. Fixes
<rdar://problem/11286701>.
llvm-svn: 155836
|
| |
|
|
|
|
| |
in the loop conditional do not change.
llvm-svn: 155835
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
filter_decl_iterator had a weird mismatch where both op* and op-> returned T*
making it difficult to generalize this filtering behavior into a reusable
library of any kind.
This change errs on the side of value, making op-> return T* and op* return
T&.
(reviewed by Richard Smith)
llvm-svn: 155808
|
| |
|
|
|
|
| |
type. But a glvalue can be reinterpret_cast to either flavor of reference.
llvm-svn: 155789
|
| |
|
|
|
|
|
| |
diagnostic, add a test for this paragraph, and tighten up the diagnostic wording
a little.
llvm-svn: 155784
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
i32 __builtin_annotation(i32, string);
Applying it to i64 (e.g., long long) generates the following IR.
trunc i64 {{.*}} to i32
call i32 @llvm.annotation.i32
zext i32 {{.*}} to i64
The redundant truncation and extension make the result difficult to use.
This patch makes __builtin_annotation() generic.
type __builtin_annotation(type, string);
For the i64 example, it simplifies the generated IR to:
call i64 @llvm.annotation.i64
Patch by Xi Wang!
llvm-svn: 155764
|
| |
|
|
|
|
| |
standard layout type.
llvm-svn: 155757
|
| |
|
|
|
|
|
|
|
|
| |
isPODType decide which one to use based on LangOptions.
- -Wc++98-compat depends on the c++98 definition
- Now __is_pod returns the right thing in c++11 and c++98 mode
- All changes to the type traits test are validated against g++ 4.7
llvm-svn: 155756
|
| |
|
|
|
|
| |
This is just papering over a major bug in isPODType, real fix coming up soon.
llvm-svn: 155755
|
| |
|
|
|
|
| |
Keep the old definition for C++98 so we don't break tr1::is_pod.
llvm-svn: 155754
|
| |
|
|
|
|
| |
cross-TU inlining never panned out.
llvm-svn: 155751
|
| |
|
|
|
|
|
| |
We do not support IRGen for these, and get some parts of the semantic analysis
wrong.
llvm-svn: 155728
|
| |
|
|
| |
llvm-svn: 155723
|
| |
|
|
|
|
|
| |
to a given type, when the reason is that there is a non-type decl with
the same name.
llvm-svn: 155677
|
| |
|
|
|
|
| |
Fixes PR12581.
llvm-svn: 155670
|
| |
|
|
|
|
| |
itself a SFINAE context.
llvm-svn: 155621
|
| |
|
|
|
|
| |
arguments, and 'this' in exception-specifications.
llvm-svn: 155606
|
| |
|
|
|
|
|
|
|
| |
struct __attribute__((visibility("hidden"))) a;
struct __attribute__((visibility("default"))) b;
which gcc already rejects.
llvm-svn: 155603
|
| |
|
|
|
|
| |
explaining that.
llvm-svn: 155598
|
| |
|
|
|
|
|
|
|
| |
This is mainly for attempting to recover in cases where a class provides
a custom operator-> and a '.' was accidentally used instead of '->' when
accessing a member of the object returned by the current object's
operator->.
llvm-svn: 155580
|
| |
|
|
|
|
|
|
|
|
| |
declaration context
of the template what we are going to instantiate.
Fixes various crashes of rdar://11242625 & http://llvm.org/PR11421.
llvm-svn: 155576
|
| |
|
|
|
|
|
| |
Don't try to query whether an incomplete type has a trivial copy constructor
when determining whether a move constructor should be declared.
llvm-svn: 155575
|
| |
|
|
|
|
| |
exception specification to a function.
llvm-svn: 155424
|
| |
|
|
|
|
| |
location. // rdar://10893232
llvm-svn: 155385
|
| |
|
|
|
|
| |
on smart pointers. Also adds test case for previous commit.
llvm-svn: 155379
|
| |
|
|
|
|
| |
existentially quantified lock expressions.
llvm-svn: 155357
|
| |
|
|
|
|
| |
<rdar://problem/11284902>.
llvm-svn: 155356
|
| |
|
|
|
|
| |
Found by valgrind.
llvm-svn: 155324
|
| |
|
|
|
|
|
|
| |
pretend there was no previous declaration -- that can lead us to injecting
a class template (with no access specifier) into a class scope. Instead,
just avoid the problematic checks.
llvm-svn: 155303
|
| |
|
|
|
|
|
| |
exception specifications in C++11 until after we've parsed the exception
specifications for nested classes.
llvm-svn: 155293
|
| |
|
|
| |
llvm-svn: 155290
|