#
bd066789 |
| 09-Feb-2011 |
John McCall <rjmccall@apple.com> |
Remove vtables from the Stmt hierarchy; this was pretty easy as there were only three virtual methods of any significance.
The primary way to grab child iterators now is with Stmt::child_range ch
Remove vtables from the Stmt hierarchy; this was pretty easy as there were only three virtual methods of any significance.
The primary way to grab child iterators now is with Stmt::child_range children(); Stmt::const_child_range children() const; where a child_range is just a std::pair of iterators suitable for being llvm::tie'd to some locals. I've left the old child_begin() and child_end() accessors in place, but it's probably a substantial penalty to grab the iterators individually now, since the switch-based dispatch is kindof inherently slower than vtable dispatch. Grabbing them together is probably a slight win over the status quo, although of course we could've achieved that with vtables, too.
I also reclassified SwitchCase (correctly) as an abstract Stmt class, which (as the first such class that wasn't an Expr subclass) required some fiddling in a few places.
There are somewhat gross metaprogramming hooks in place to ensure that new statements/expressions continue to implement getSourceRange() and children(). I had to work around a recent clang bug; dgregor actually fixed it already, but I didn't want to introduce a selfhosting dependency on ToT.
llvm-svn: 125183
show more ...
|
#
8dfa5f17 |
| 18-Jan-2011 |
Jeffrey Yasskin <jyasskin@google.com> |
Fix warnings found by gcc-4.6, from -Wunused-but-set-variable and -Wint-to-pointer-cast.
llvm-svn: 123719
|
#
cdbc539a |
| 15-Jan-2011 |
Douglas Gregor <dgregor@apple.com> |
Introduce a new expression kind, SubstNonTypeTemplateParmPackExpr, that captures the substitution of a non-type template argument pack for a non-type template parameter pack within a pack expansion t
Introduce a new expression kind, SubstNonTypeTemplateParmPackExpr, that captures the substitution of a non-type template argument pack for a non-type template parameter pack within a pack expansion that cannot be fully expanded. This follows the approach taken by SubstTemplateTypeParmPackType.
llvm-svn: 123506
show more ...
|
#
820ba7ba |
| 04-Jan-2011 |
Douglas Gregor <dgregor@apple.com> |
Implement the sizeof...(pack) expression to compute the length of a parameter pack.
Note that we're missing proper libclang support for the new SizeOfPackExpr expression node.
llvm-svn: 122813
|
#
e8e9dd62 |
| 03-Jan-2011 |
Douglas Gregor <dgregor@apple.com> |
Implement support for pack expansions whose pattern is a non-type template argument (described by an expression, of course). For example:
template<int...> struct int_tuple { };
template<int ...
Implement support for pack expansions whose pattern is a non-type template argument (described by an expression, of course). For example:
template<int...> struct int_tuple { };
template<int ...Values> struct square { typedef int_tuple<(Values*Values)...> type; };
It also lays the foundation for pack expansions in an initializer-list.
llvm-svn: 122751
show more ...
|
#
2f9a124f |
| 09-Dec-2010 |
Anders Carlsson <andersca@mac.com> |
Fix build.
llvm-svn: 121341
|
#
69c819cd |
| 09-Dec-2010 |
Ted Kremenek <kremenek@apple.com> |
Remove extra namespace specifier.
llvm-svn: 121334
|
#
bbf91a89 |
| 09-Dec-2010 |
Ted Kremenek <kremenek@apple.com> |
DenseMapInfo is a 'struct', not a 'class'.
llvm-svn: 121321
|
#
bbedd062 |
| 08-Dec-2010 |
Ted Kremenek <kremenek@apple.com> |
Add new libclang hooks for CXCursorSet, a DenseMap-backed hashtable for doing client-side management of CXCursors within a set.
llvm-svn: 121318
|
#
34b21132 |
| 08-Dec-2010 |
Francois Pichet <pichet2000@gmail.com> |
Remove the TypesCompatibleExprClass AST node. Merge its functionality into BinaryTypeTraitExpr.
llvm-svn: 121298
|
#
9dfa3ce9 |
| 07-Dec-2010 |
Francois Pichet <pichet2000@gmail.com> |
Type traits intrinsic implementation: __is_base_of(T, U) New AST node introduced: BinaryTypeTraitExpr; to be reused for more intrinsics.
llvm-svn: 121074
|
#
5d413781 |
| 06-Dec-2010 |
John McCall <rjmccall@apple.com> |
Rename CXXExprWithTemporaries -> ExprWithCleanups; there's no theoretical reason this is limited to C++, and it's certainly not limited to temporaries.
llvm-svn: 120996
|
#
b7bd14fa |
| 02-Dec-2010 |
John McCall <rjmccall@apple.com> |
Simplify the ASTs by consolidating ObjCImplicitGetterSetterExpr and ObjCPropertyRefExpr into the latter.
llvm-svn: 120643
|
#
7df92ae9 |
| 17-Nov-2010 |
Ted Kremenek <kremenek@apple.com> |
Make definition of CXTranslationUnitImpl private to libclang.
llvm-svn: 119585
|
#
91554285 |
| 16-Nov-2010 |
Ted Kremenek <kremenek@apple.com> |
Change CXTranslationUnit to not directly cast to an ASTUnit*, but to wrap both an ASTUnit and a "string pool" that will be used for fast USR generation.
This requires a bunch of mechanical changes,
Change CXTranslationUnit to not directly cast to an ASTUnit*, but to wrap both an ASTUnit and a "string pool" that will be used for fast USR generation.
This requires a bunch of mechanical changes, as there was a ton of code that assumed that CXTranslationUnit and ASTUnit* were the same.
Along with this change, introduce CXStringBuf, which provides an llvm::SmallVector<char> backing for repeatedly generating CXStrings without a huge amount of malloc() traffic. This requires making some changes to the representation of CXString by renaming a few fields (but keeping the size of the object the same).
llvm-svn: 119337
show more ...
|
#
4b4f3699 |
| 16-Nov-2010 |
Ted Kremenek <kremenek@apple.com> |
Move CXString creation/management routines into their own .cpp file and make the interpretation of its flags private.
llvm-svn: 119319
|
#
8d69a216 |
| 15-Nov-2010 |
John McCall <rjmccall@apple.com> |
Add a new expression kind, OpaqueValueExpr, which is useful for certain internal type-checking procedures as well as for representing certain implicitly-generated operations. Uses to follow.
llvm-s
Add a new expression kind, OpaqueValueExpr, which is useful for certain internal type-checking procedures as well as for representing certain implicitly-generated operations. Uses to follow.
llvm-svn: 119289
show more ...
|
#
818e5c18 |
| 01-Nov-2010 |
Ted Kremenek <kremenek@apple.com> |
Encapsulate within CXCursor the notion of whether a VarDecl* is the first Decl in a DeclGroup. We use this to recover some context that is currently not modeled directly in the AST. Currently VarDe
Encapsulate within CXCursor the notion of whether a VarDecl* is the first Decl in a DeclGroup. We use this to recover some context that is currently not modeled directly in the AST. Currently VarDecl's cannot properly determine their source range because they have no context on whether or not they appear in a DeclGroup. For the meantime, this bandaid suffices in libclang since that is where the correct SourceRange is directly needed.
Fixes <rdar://problem/8595749>.
llvm-svn: 117973
show more ...
|
#
796d76a6 |
| 20-Oct-2010 |
Douglas Gregor <dgregor@apple.com> |
Extend the preprocessing record and libclang with support for inclusion directives, keeping track of every #include, #import, etc. in the translation unit. We keep track of the source location and ki
Extend the preprocessing record and libclang with support for inclusion directives, keeping track of every #include, #import, etc. in the translation unit. We keep track of the source location and kind of the inclusion, how the file name was spelled, and the underlying file to which the inclusion resolved.
llvm-svn: 116952
show more ...
|
#
681c0754 |
| 14-Oct-2010 |
Fariborz Jahanian <fjahanian@apple.com> |
Eliminate usage of ObjCSuperExpr used for 'super' as receiver of property or a setter/getter methods. //rdar: //8525788
llvm-svn: 116483
|
Revision tags: llvmorg-2.8.0, llvmorg-2.8.0-rc3, llvmorg-2.8.0-rc2 |
|
#
16a2bdd6 |
| 13-Sep-2010 |
Douglas Gregor <dgregor@apple.com> |
Introduce a new kind of cursor into libclang, which covers a reference to an "overloaded" set of declarations. This cursor kind works for unresolved references to functions/templates (e.g., a call wi
Introduce a new kind of cursor into libclang, which covers a reference to an "overloaded" set of declarations. This cursor kind works for unresolved references to functions/templates (e.g., a call within a template), using declarations, and Objective-C class and protocol forward declarations.
llvm-svn: 113805
show more ...
|
#
4202c0f2 |
| 10-Sep-2010 |
Sebastian Redl <sebastian.redl@getdesigned.at> |
Define and implement CXXNoexceptExpr. Create it in Sema.
llvm-svn: 113623
|
#
a93ab663 |
| 10-Sep-2010 |
Douglas Gregor <dgregor@apple.com> |
Add libclang support for label statements, gotos, and taking the address of a label (GNU extension).
llvm-svn: 113564
|
#
f3af3113 |
| 09-Sep-2010 |
Douglas Gregor <dgregor@apple.com> |
Teach libclang to walk the base and member initializers of a constructor, in source order. Also introduces a new reference kind for class members, which is used here (for member initializers) and wil
Teach libclang to walk the base and member initializers of a constructor, in source order. Also introduces a new reference kind for class members, which is used here (for member initializers) and will also be used for designated initializers and offsetof.
llvm-svn: 113545
show more ...
|
#
5cc0a67f |
| 08-Sep-2010 |
Francois Pichet <pichet2000@gmail.com> |
Fix warnings caused by new CXXUuidofExprClass enumerator.
llvm-svn: 113444
|