aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2010-09-01Teach libclang to visit the default arguments of template parameters.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112734 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01Implement libclang support for using declarations. Clang actually usesDouglas Gregor
three different kinds of AST nodes to represent using declarations: UsingDecl, UnresolvedUsingValueDecl, and UnresolvedUsingTypenameDecl. These three are collapsed into a single cursor kind for using declarations, since libclang clients don't need the distinction. Several related changes here: - Cursor visitation of the three AST nodes for using declarations - Proper source-range computation for these AST nodes - Using declarations have no USRs, since they don't actually declare any entities. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112730 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01Fix IRGen when property-dot syntax used to accessFariborz Jahanian
a c++ class object 'ivar'. Fixes radar 8366604. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112729 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01Improve libclang indexing support for class template specializationsDouglas Gregor
in a few related ways: - Don't recurse into instantiations of templates. - Recurse into explicit specializations. - Visit the template arguments of an explicit specialization or explicit instantiation. - Include template specialization arguments in the USRs for class template specializations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112720 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01StringRefize.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112718 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01Make it clear that libclang does not modify the command-line argumentsDouglas Gregor
it is given. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112717 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01Add test for nothing... i.e., the contents of a USR for using directivesDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112716 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01Transfer calling-convention attributes down to member function pointers.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112715 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01add a new version of mingw, patch by İsmail "cartman" DönmezChris Lattner
in PR8049 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112710 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01when emitting an error about a missing } in a compound statement, emitChris Lattner
a "to match this {" note, pointing out the opener. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112709 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01Implement libclang support for using directives (cursor + visitation +Douglas Gregor
suppressing USRs). Also, fix up the source location information for using directives so that the declaration location refers to the namespace name. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112693 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01Split ObjCInterfaceDecl::ReferencedProtocols into two lists: ↵Ted Kremenek
ReferencedProtocols and AllReferencedProtocols. ReferencedProtocols (and thus protocol_begin(), protocol_end()) now only contains the list of protocols that were directly referenced in an @interface declaration. 'all_referenced_protocol_[begin,end]()' now returns the set of protocols that were referenced in both the @interface and class extensions. The latter is needed for semantic analysis/codegen, while the former is needed to maintain the lexical information of the original source. Fixes <rdar://problem/8380046>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112691 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01fix rdar://8360877 a really nasty miscompilation in Boost.XpressiveChris Lattner
caused by my ABI work. Passing: struct outer { int x; struct epsilon_matcher {} e; int f; }; as {i32,i32} isn't safe, because the offset of the second element needs to be at 8 when it is interpreted as a memory value. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112686 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01same refactoring as before, this time on the argument side.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112684 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01refactor some code to cut down on redundancy, no functionality change.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112683 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01Improve location information in the representation of namespaceDouglas Gregor
aliases. Previously, the location of the alias was at the "namespace" keyword. Now, it's on the identifier being declared (as is the custom for Clang), and we keep a separate source location for the "namespace" keyword. Also, added a getSourceRange() member function to NamespaceAliasDecl to correctly compute the source range. Finally, removed a bunch of setters from NamespaceAliasDecl and gave ASTReaderDecl friendship so that it could set the corresponding fields directly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112681 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Prevent warning when built with assert off.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112680 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31xcode project file update.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112677 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Add libclang support for namespace aliases (visitation + USRs) alongDouglas Gregor
with a new cursor kind for a reference to a namespace. There's still some oddities in the source location information for NamespaceAliasDecl that I'll address with a separate commit, so the source locations displayed in the load-namespaces.cpp test will change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112676 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Some support for unicode string constantsFariborz Jahanian
in wide strings. radar 8360841. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112672 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Implement __has_feature(cxx_inline_namespaces)Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112671 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Add NetBSD include search pathAnton Korobeynikov
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112663 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Add convenience accessors for determining whether template declarations are ↵John McCall
definitions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112656 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Add a new libclang function clang_getTemplateCursorKind(), whichDouglas Gregor
determines the kind of declaration that would be generated if the given template were instantiated. This allows a client to distinguish among class/struct/union templates and function/member function/static member function templates. Also, teach clang_CXXMethod_isStatic() about function templates. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112655 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Amusingly, I missed this point of abstraction in all my earlierJohn McCall
member-pointer refactoring: dereferencing a member data pointer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112640 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Make inline namespace not be transparent after all. The concept simply ↵Sebastian Redl
doesn't fit. Instead, special-case the few places where transparent contexts have the desired behavior for inline namespaces. Fixes a redeclaration issue in inline namespaces. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112637 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Extend libclang with a new cursor kind that indicates a reference to aDouglas Gregor
template. Such cursors occur, for example, in template specialization types such as vector<int>. Note that we do not handle the super-interesting case where the template name is unresolved, e.g., within a template. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112636 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Add libclang support for class template partial specializations,Douglas Gregor
including a cursor kind, visitation, and USRs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112629 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Add a libclang cursor kind, visitation support and USR support for C++Douglas Gregor
class templates. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112627 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Improve CFG printing support for CXXOperatorCallExpr and CXXBindTemporaryExpr.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112619 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Explicitly handle CXXOperatorCallExpr when building CFGs. We should treat ↵Ted Kremenek
it the same as CallExprs. Fixes: <rdar://problem/8375510> [Boost] CFGBuilder crash in Boost.Graph git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112618 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31AST work to support [C++] [IRgen] for ?: with missing LHSFariborz Jahanian
This is also pr7726 and wip. No change in functionality at this time. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112612 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Implement basic support for indexing function templates inDouglas Gregor
libclang. This includes: - Cursor kind for function templates, with visitation logic - Cursor kinds for template parameters, with visitation logic - Visitation logic for template specialization types, qualified type locations - USR generation for function templates, template specialization types, template parameter types. Also happens to fix PR7804, which I tripped across while testing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112604 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Add support for windows x86-64 varargs, patch by Cameron Esfahani!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112603 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31improve isHexaLiteral to work with escaped newlines and trigraphs,Chris Lattner
patch by Francois Pichet! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112602 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31libclang indexing support for C++ constructors, destructors, andDouglas Gregor
conversion functions. This introduces new cursor kinds for these three C++ entities, and reworks visitation of function declarations so that we get type-source information for the names. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112600 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Add a simple test for indexing namespacesDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112598 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Teach IR generation to return 'this' from constructors and destructorsJohn McCall
under the ARM ABI. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112588 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Fix a regression that allowed clearly ill formed code. The diagnostic is stillChandler Carruth
terrible, FIXME left to do a proper job of diagnosing this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112581 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Revert my lame attempt at appeasing the CFGBuilderDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112580 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31When provide code completions for a variadic Objective-C methodDouglas Gregor
declaration send or a variadic function call, collapse the ", ..." into the parameter before it, so that we don't get a second placeholder. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112579 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Teach the CFGBuilder not do die on CXXBindTemporaryExpr, ↵Douglas Gregor
CXXOperatorCallExpr. Fixes a Boost.Graph crasher. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112578 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Implement the __has_nothrow trait family, by Steven Watanabe.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112577 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Add range of return value expression in ReturnUndefChecker. Patch by Jim ↵Ted Kremenek
Goodnow II! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112569 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Enable inline namespaces in C++03 as an extension.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112566 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Add a forgotten place where the enclosing namespace set matters, plus a big ↵Sebastian Redl
testcase for inline namespace fun. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112565 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Enable inline namespaces in the AST.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112564 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Rename DeclContext::getLookupContext to getRedeclContext and change its ↵Sebastian Redl
semantics slightly. No functionality change in the absence of inline namespaces. Also, change a few places where inline namespaces actually make a difference to be prepared for them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112563 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Decl::getEnclosingNamespaceContext has no reason to explicitly skip ↵Sebastian Redl
transparent contexts, and would be wrong to do so with inline namespaces. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112562 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31When instantiating a function type, instantiate the return type beforeDouglas Gregor
instantiating the parameters. In a perfect world, this wouldn't matter, and compilers are free to instantiate in any order they want. However, every other compiler seems to instantiate the return type first, and some code (in this case, Boost.Polygon) depends on this and SFINAE to avoid instantiating something that shouldn't be instantiated. We could fight this battle, and insist that Clang is allowed to do what it does, but it's not beneficial: it's more predictable to instantiate this way, in source order. When we implement late-specified return types, we'll need to instantiate the return type last when it was late-specified, hence the FIXME. We now compile Boost.Polygon properly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112561 91177308-0d34-0410-b5e6-96231b3b80d8