| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
root class is intentionally declared.
The warning this inhibits, -Wobjc-root-class, is opt-in for now. However, all clang unit tests that would trigger
the warning have been updated to use -Wno-objc-root-class. <rdar://problem/7446698>
llvm-svn: 154187
|
|
|
|
|
|
|
| |
declared in its adopted protocol when another category declares it
because that category will implement it. // rdar://11186449
llvm-svn: 154132
|
|
|
|
|
|
| |
just because there was an attribute in front of it.
llvm-svn: 153355
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The deferred lookup table building step couldn't accurately tell which Decls
should be included in the lookup table, and consequently built different tables
in some cases.
Fix this by removing lazy building of DeclContext name lookup tables. In
practice, the laziness was frequently not worthwhile in C++, because we
performed lookup into most DeclContexts. In C, it had a bit more value,
since there is no qualified lookup.
In the place of lazy lookup table building, we simply don't build lookup tables
for function DeclContexts at all. Such name lookup tables are not useful, since
they don't capture the scoping information required to correctly perform name
lookup in a function scope.
The resulting performance delta is within the noise on my testing, but appears
to be a very slight win for C++ and a very slight loss for C. The C performance
can probably be recovered (if it is a measurable problem) by avoiding building
the lookup table for the translation unit.
llvm-svn: 152608
|
|
|
|
|
|
| |
rdar://11020003
llvm-svn: 152596
|
|
|
|
|
|
|
|
|
|
|
| |
serialized
-Don't add methods of invalid objc containers to the global method pool.
This protects us from trying to serialize a method whose container was not
serialized.
Part of rdar://11007039.
llvm-svn: 152566
|
|
|
|
|
|
|
|
|
|
| |
(Lex to AST).
The member variable is always "LangOpts" and the member function is always "getLangOpts".
Reviewed by Chris Lattner
llvm-svn: 152536
|
|
|
|
|
|
|
|
|
|
| |
@class I;
@implementation I(cat) // crashes here
@end
rdar://10968158
llvm-svn: 151931
|
|
|
|
|
|
|
|
| |
of the SmallPtrSet way up to avoid commonly reallocating the buffer size.
- I didn't see a good argument against it, so I bumped the limit to cover the
max size we see during parsing Cocoa.h.
llvm-svn: 151698
|
|
|
|
|
|
| |
mention the actual method. This looks better within an IDE, where text isn't always regurgitated in the presentation of a warning. Fixes radar 10914035.
llvm-svn: 151579
|
|
|
|
|
|
|
|
| |
marked as such.
Previously we missed tag declarations; fixes rdar://10902015
llvm-svn: 151283
|
|
|
|
|
|
|
|
| |
has been declared in its primary class, superclass,
or in one of their protocols, no need to issue unimplemented method.
// rdar://10823023
llvm-svn: 150206
|
|
|
|
| |
llvm-svn: 149451
|
|
|
|
|
|
|
|
|
| |
additional data from the external Sema source. This properly copes
with modules that are imported after we have already searched in the
global method pool for a given selector. For PCH, it's a slight
pessimization to be fixed soon.
llvm-svn: 148891
|
|
|
|
|
|
|
| |
return pre-built lists. Instead, it feeds the methods it deserializes
to Sema so that Sema can unique them, which keeps the chains shorter.
llvm-svn: 148889
|
|
|
|
|
|
|
| |
teach it to always add the new method at the *end* of the list rather
than as the second element in the list.
llvm-svn: 148886
|
|
|
|
|
|
| |
matches a typedef declaring an object type. // rdar://10733000
llvm-svn: 148760
|
|
|
|
| |
llvm-svn: 148197
|
|
|
|
|
|
|
| |
objects, and add a basic CorrectionCandidateCallback template class
to simplify the fixups.
llvm-svn: 148085
|
|
|
|
|
|
| |
'objc_disable_automatic_synthesis' to 'objc_requires_property_definitions'.
llvm-svn: 147622
|
|
|
|
|
|
| |
which should not be default synthesized.
llvm-svn: 147468
|
|
|
|
|
|
| |
used anywhere.
llvm-svn: 147422
|
|
|
|
|
|
| |
ObjCProtocolDecl proper source-range information.
llvm-svn: 147420
|
|
|
|
|
|
| |
They are no longer needed
llvm-svn: 147419
|
|
|
|
|
|
| |
ObjCProtocolDecl modules forward declarations properly.
llvm-svn: 147415
|
|
|
|
|
|
| |
longer needed now that we aren't back-patching ObjCProtocolDecls.
llvm-svn: 147413
|
|
|
|
|
|
|
| |
forward declarations and definitions of an Objective-C protocol are
represented within a single chain of ObjCProtocolDecls.
llvm-svn: 147412
|
|
|
|
|
|
|
|
|
| |
separately-allocated DefinitionData structure. Introduce various
functions that will help with the separation of declarations from
definitions (isThisDeclarationADefinition(), hasDefinition(),
getDefinition()).
llvm-svn: 147408
|
|
|
|
|
|
|
| |
covers both declarations (@class) and definitions (@interface) of an
Objective-C class.
llvm-svn: 147299
|
|
|
|
|
|
|
| |
on method declaration and definition if former is in
a system header. // rdar://10580333
llvm-svn: 147020
|
|
|
|
| |
llvm-svn: 146722
|
|
|
|
|
|
|
|
| |
applies to an actual definition. Plus, clarify the purpose of this
field and give the accessor a different name, since getLocEnd() is
supposed to be the same as getSourceRange().getEnd().
llvm-svn: 146694
|
|
|
|
|
|
|
|
|
|
| |
declarations and definitions) as ObjCInterfaceDecls within the same
redeclaration chain. This new representation matches what we do for
C/C++ variables/functions/classes/templates/etc., and makes it
possible to answer the query "where are all of the declarations of
this class?"
llvm-svn: 146679
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
separately-allocated DefinitionData structure, which we manage the
same way as CXXRecordDecl::DefinitionData. This prepares the way for
making ObjCInterfaceDecls redeclarable, to more accurately model
forward declarations of Objective-C classes and eliminate the mutation
of ObjCInterfaceDecl that causes us serious trouble in the AST reader.
Note that ObjCInterfaceDecl's accessors are fairly robust against
being applied to forward declarations, because Clang (and Sema in
particular) doesn't perform RequireCompleteType/hasDefinition() checks
everywhere it has to. Each of these overly-robust cases is marked with
a FIXME, which we can tackle over time.
llvm-svn: 146644
|
|
|
|
|
|
|
|
| |
to declaresSameEntity(), as a baby step toward tracking forward
declarations of Objective-C classes precisely. Part of
<rdar://problem/10583531>.
llvm-svn: 146618
|
|
|
|
|
|
| |
in classes. // rdar://10535349
llvm-svn: 146504
|
|
|
|
|
|
| |
under ARC. Fixes <rdar://problem/10530209>.
llvm-svn: 146307
|
|
|
|
| |
llvm-svn: 146213
|
|
|
|
|
|
| |
Fixes PR2709.
llvm-svn: 145928
|
|
|
|
|
|
| |
attributes don't match its declaration. // rdar://10529259.
llvm-svn: 145872
|
|
|
|
|
|
| |
typo-correct to ourselves.
llvm-svn: 145583
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 145107
|
|
|
|
|
|
|
|
|
|
| |
Objective-C classes. This has two purposes: to consistently provide
"forward declaration here" notes when we hit an incomplete type, and
to give LLDB a chance to complete the type.
RequireCompleteType bits from Sean Callanan!
llvm-svn: 144573
|
|
|
|
| |
llvm-svn: 144508
|
|
|
|
|
|
|
|
| |
[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
|