summaryrefslogtreecommitdiffstats
path: root/clang/lib/Index
Commit message (Collapse)AuthorAgeFilesLines
* Fix CMake clangIndex library dependencies, from Logan ChienDouglas Gregor2010-09-201-15/+1
| | | | llvm-svn: 114336
* Revert "CMake: Update to use standard CMake dependency tracking facilities ↵Michael J. Spencer2010-09-131-19/+17
| | | | | | | | | | | | | instead" This reverts commit r113631 Conflicts: CMakeLists.txt lib/CodeGen/CMakeLists.txt llvm-svn: 113817
* CMake: Update to use standard CMake dependency tracking facilities insteadMichael J. Spencer2010-09-101-17/+19
| | | | | | of whatever we were using before... llvm-svn: 113631
* Clean up CMake dependenciesDouglas Gregor2010-09-091-0/+5
| | | | llvm-svn: 113489
* Clean up some of the CMake dependenciesDouglas Gregor2010-09-081-0/+14
| | | | llvm-svn: 113416
* De-memberify the VarDecl and FunctionDecl StorageClass enums.John McCall2010-08-261-2/+2
| | | | | | This lets us remove Sema.h's dependency on Expr.h and Decl.h. llvm-svn: 112156
* Remove unused location-to-AST-node resolver. libclang's implementation ↵Douglas Gregor2010-07-192-603/+0
| | | | | | supercedes it llvm-svn: 108708
* BUILD_ARCHIVE is the default for libraries, no need to set it.Chris Lattner2010-07-181-1/+0
| | | | llvm-svn: 108633
* Collect function definitions in the Indexer when indexing through the ASTs.Zhongxing Xu2010-07-063-17/+64
| | | | | | Add an API to get an Entity associated with a name in the global namespace. llvm-svn: 107642
* Local variables have no linkage, make invalid Entities.Zhongxing Xu2010-07-061-0/+4
| | | | llvm-svn: 107630
* Refrase comments.Zhongxing Xu2010-07-051-3/+3
| | | | llvm-svn: 107607
* Although in C++ class name has external linkage, usually the definition of the Zhongxing Xu2010-07-051-0/+8
| | | | | | | class is available in the same translation unit when it's needed. So we make all of them invalid Entity. llvm-svn: 107606
* Make FieldDecl an invalid Entity since it has no linkage.Zhongxing Xu2010-07-051-2/+2
| | | | llvm-svn: 107605
* Indexer: make FieldDecl an internal Entity.Zhongxing Xu2010-07-051-0/+6
| | | | llvm-svn: 107604
* Change CallGraph::Prog to be a reference. idx::Program means to be a global ↵Zhongxing Xu2010-07-021-1/+1
| | | | | | object to the Index library. llvm-svn: 107461
* Simplify libIndex Makefile, which doesn't need to worry about altivec support.Daniel Dunbar2010-06-081-6/+0
| | | | llvm-svn: 105639
* Makefiles: Set Clang CPP compiler flags in a single location, instead of ↵Daniel Dunbar2010-06-081-2/+0
| | | | | | scattered throughout the project Makefiles. llvm-svn: 105638
* Makefile: Switch Clang Makefiles to always include the top-level Clang Makefile.Daniel Dunbar2010-06-081-3/+3
| | | | | | - This eliminates most dependencies on how Clang is installed relative to LLVM. llvm-svn: 105637
* Renamed misleading getSourceRange -> getLocalSourceRange and ↵Abramo Bagnara2010-05-202-2/+2
| | | | | | getFullSourceRange -> getSourceRange for TypeLoc. llvm-svn: 104220
* Substantially alter the design of the Objective C type AST by introducingJohn McCall2010-05-152-23/+12
| | | | | | | | | | | | | | | | | | | | | ObjCObjectType, which is basically just a pair of one of {primitive-id, primitive-Class, user-defined @class} with a list of protocols. An ObjCObjectPointerType is therefore just a pointer which always points to one of these types (possibly sugared). ObjCInterfaceType is now just a kind of ObjCObjectType which happens to not carry any protocols. Alter a rather large number of use sites to use ObjCObjectType instead of ObjCInterfaceType. Store an ObjCInterfaceType as a pointer on the decl rather than hashing them in a FoldingSet. Remove some number of methods that are no longer used, at least after this patch. By simplifying ObjCObjectPointerType, we are now able to easily remove and apply pointers to Objective-C types, which is crucial for a certain kind of ObjC++ metaprogramming common in WebKit. llvm-svn: 103870
* Overhaul the AST representation of Objective-C message sendDouglas Gregor2010-04-211-23/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | expressions, to improve source-location information, clarify the actual receiver of the message, and pave the way for proper C++ support. The ObjCMessageExpr node represents four different kinds of message sends in a single AST node: 1) Send to a object instance described by an expression (e.g., [x method:5]) 2) Send to a class described by the class name (e.g., [NSString method:5]) 3) Send to a superclass class (e.g, [super method:5] in class method) 4) Send to a superclass instance (e.g., [super method:5] in instance method) Previously these four cases where tangled together. Now, they have more distinct representations. Specific changes: 1) Unchanged; the object instance is represented by an Expr*. 2) Previously stored the ObjCInterfaceDecl* referring to the class receiving the message. Now stores a TypeSourceInfo* so that we know how the class was spelled. This both maintains typedef information and opens the door for more complicated C++ types (e.g., dependent types). There was an alternative, unused representation of these sends by naming the class via an IdentifierInfo *. In practice, we either had an ObjCInterfaceDecl *, from which we would get the IdentifierInfo *, or we fell into the case below... 3) Previously represented by a class message whose IdentifierInfo * referred to "super". Sema and CodeGen would use isStr("super") to determine if they had a send to super. Now represented as a "class super" send, where we have both the location of the "super" keyword and the ObjCInterfaceDecl* of the superclass we're targetting (statically). 4) Previously represented by an instance message whose receiver is a an ObjCSuperExpr, which Sema and CodeGen would check for via isa<ObjCSuperExpr>(). Now represented as an "instance super" send, where we have both the location of the "super" keyword and the ObjCInterfaceDecl* of the superclass we're targetting (statically). Note that ObjCSuperExpr only has one remaining use in the AST, which is for "super.prop" references. The new representation of ObjCMessageExpr is 2 pointers smaller than the old one, since it combines more storage. It also eliminates a leak when we loaded message-send expressions from a precompiled header. The representation also feels much cleaner to me; comments welcome! This patch attempts to maintain the same semantics we previously had with Objective-C message sends. In several places, there are massive changes that boil down to simply replacing a nested-if structure such as: if (message has a receiver expression) { // instance message if (isa<ObjCSuperExpr>(...)) { // send to super } else { // send to an object } } else { // class message if (name->isStr("super")) { // class send to super } else { // send to class } } with a switch switch (E->getReceiverKind()) { case ObjCMessageExpr::SuperInstance: ... case ObjCMessageExpr::Instance: ... case ObjCMessageExpr::SuperClass: ... case ObjCMessageExpr::Class:... } There are quite a few places (particularly in the checkers) where send-to-super is effectively ignored. I've placed FIXMEs in most of them, and attempted to address send-to-super in a reasonable way. This could use some review. llvm-svn: 101972
* Add raw_ostream operators to NamedDecl for convenience. Switch over all ↵Benjamin Kramer2010-04-171-2/+2
| | | | | | | | users of getNameAsString on a stream. The next step is to print the name directly into the stream, avoiding a temporary std::string copy. llvm-svn: 101632
* Allow users to set CPPFLAGS and CXXFLAGS on the make command line.Jeffrey Yasskin2010-03-121-2/+2
| | | | | Tested: make CPPFLAGS=-m64 CXXFLAGS=-m64 -j8 && (cd tools/clang;make test) llvm-svn: 98399
* Cleanup using StringRefKovarththanan Rajaratnam2010-03-122-12/+4
| | | | llvm-svn: 98339
* Extend ObjCMessageExpr for class method sends with the source locationDouglas Gregor2010-03-081-2/+2
| | | | | | of the class name. llvm-svn: 97943
* -fno-rtti is now the default.Chris Lattner2010-01-241-1/+0
| | | | llvm-svn: 94379
* Add -cursor-at=file:line:column command line option to c-index-test,Douglas Gregor2010-01-151-1/+1
| | | | | | | | to directly check the results of clang_getCursor(). Also, start migrating some index-test tests over to c-index test [*] and some grep-using tests over to FileCheck. llvm-svn: 93537
* Add the BlockDecl to the DeclContext.Ted Kremenek2009-12-071-1/+1
| | | | llvm-svn: 90808
* DeclaratorInfo -> TypeSourceInfo. Makes an effort to rename associated ↵John McCall2009-12-072-23/+23
| | | | | | | | | | | | | | | | | | | | | variables, but the results are imperfect. For posterity, I did: cat <<EOF > $cmdfile s/DeclaratorInfo/TypeSourceInfo/g s/DInfo/TInfo/g s/TypeTypeSourceInfo/TypeSourceInfo/g s/SourceTypeSourceInfo/TypeSourceInfo/g EOF find lib -name '*.cpp' -not -path 'lib/Parse/*' -exec sed -i '' -f $cmdfile '{}' \; find lib -name '*.h' -exec sed -i '' -f $cmdfile '{}' \; find include -name '*.h' -not -path 'include/clang/Parse/*' -not -path 'include/clang/Basic/*' -exec sed -i '' -f $cmdfile '{}' \; llvm-svn: 90743
* Update CMake for CallGraph.cpp move.Daniel Dunbar2009-12-031-0/+1
| | | | llvm-svn: 90443
* Fix layering violation by moving Analysis/CallGraph to IndexDaniel Dunbar2009-12-031-0/+150
| | | | llvm-svn: 90424
* Remove remaining VISIBILITY_HIDDEN from anonymous namespaces.Benjamin Kramer2009-11-284-13/+9
| | | | llvm-svn: 90044
* Add special clang_getCursor() support for @class. Handles ↵Ted Kremenek2009-11-181-0/+12
| | | | | | <rdar://problem/7383421>. llvm-svn: 89183
* Silence some warnings produced by Clang, and add a missing headerDouglas Gregor2009-11-171-1/+1
| | | | llvm-svn: 89051
* Preserve type source information in sizeof/alignof expressions, and pass itJohn McCall2009-11-041-0/+20
| | | | | | through to indexing. llvm-svn: 86018
* Remove _clang_initCXLookupHint() and _clang_getCursorWithHint(). Related to ↵Steve Naroff2009-10-281-8/+37
| | | | | | | | | | <rdar://problem/7310688>. Localize the optimization to ResolveLocationInAST(). The last valid AST location is now stored with ASTUnit. There still isn't optimal, however it's an improvement (with a much cleaner API). Having the client manage an "hint" is error prone and complex. I wanted to land the major changes before finishing up the optimizations. llvm-svn: 85425
* Preserve type source information in TypedefDecls. Preserve it acrossJohn McCall2009-10-241-0/+14
| | | | | | | | | template instantiation. Preserve it through PCH. Show it off to the indexer. I'm healthily ignoring the vector type cases because we don't have a sensible TypeLoc implementation for them anyway. llvm-svn: 84994
* When building types from declarators, instead of building two types (one forJohn McCall2009-10-221-7/+38
| | | | | | | | | | | | | | | | | | | | | the DeclaratorInfo, one for semantic analysis), just build a single type whose canonical type will reflect the semantic analysis (assuming the type is well-formed, of course). To make that work, make a few changes to the type system: * allow the nominal pointee type of a reference type to be a (possibly sugared) reference type. Also, preserve the original spelling of the reference type. Both of these can be ignored on canonical reference types. * Remove ObjCProtocolListType and preserve the associated source information on the various ObjC TypeLocs. Preserve the spelling of protocol lists except in the canonical form. * Preserve some level of source type structure on parameter types, but canonicalize on the canonical function type. This is still a WIP. Drops code size, makes strides towards accurate source location representation, slight (~1.7%) progression on Cocoa.h because of complexity drop. llvm-svn: 84907
* Extend clang_getCursor() to take a 'relativeDecl' argument (so speed up ↵Steve Naroff2009-10-211-1/+4
| | | | | | | | | | | | | | searching). Without a 'relativeDecl', the algorithm is n-squared. For example, running the following command on 'Large.m' takes hours without a 'relatvieDecl'. snaroff% time ../../Debug/bin/c-index-test Large.ast all > Large.out snaroff% cat Large.m #import <Cocoa/Cocoa.h> #import <QuickTime/QuickTime.h> #import <OpenGL/OpenGL.h> With a 'relativeDecl', it takes <30 seconds:-) llvm-svn: 84760
* Move clients to use IdentifierInfo::getNameStart() instead of getName()Daniel Dunbar2009-10-182-7/+11
| | | | llvm-svn: 84436
* Clone the full Type hierarchy into the TypeLoc hierarchy. NormalizeJohn McCall2009-10-184-19/+19
| | | | | | | | | | | | | TypeLoc class names to be $(Type classname)Loc. Rewrite the visitor. Provide skeleton implementations for all the new TypeLocs. Handle all cases in PCH. Handle a few more cases when inserting location information in SemaType. It should be extremely straightforward to add new location information to existing TypeLoc objects now. llvm-svn: 84386
* Installation of Clang libraries and headers, from Axel Naumann!Douglas Gregor2009-10-081-3/+0
| | | | llvm-svn: 83582
* Pull TypeLocVisitor into its own header file.Argyrios Kyrtzidis2009-09-292-2/+2
| | | | llvm-svn: 83112
* Keep track of type references in DeclReferenceMap.Argyrios Kyrtzidis2009-09-292-1/+45
| | | | llvm-svn: 83111
* In ASTVisitor, call the correct base methods.Argyrios Kyrtzidis2009-09-291-4/+4
| | | | llvm-svn: 83110
* Resolve a source location inside the return type of a functon.Argyrios Kyrtzidis2009-09-291-0/+3
| | | | llvm-svn: 83101
* Resolve a source location that is inside a type declarator.Argyrios Kyrtzidis2009-09-291-4/+134
| | | | llvm-svn: 83098
* Modify ASTLocation and apart from being a Decl or Stmt, allow it to also be:Argyrios Kyrtzidis2009-09-293-94/+54
| | | | | | | -A NamedDecl reference -A TypeLoc llvm-svn: 83095
* Add more const-goodness to ASTLocation.Argyrios Kyrtzidis2009-09-291-12/+12
| | | | llvm-svn: 83087
* Remove tabs, and whitespace cleanups.Mike Stump2009-09-099-56/+56
| | | | llvm-svn: 81346
OpenPOWER on IntegriCloud