- Jan 13, 2011
-
-
Peter Collingbourne authored
process, perform a number of refactorings: - Move MiscNameMangler member functions to MangleContext - Remove GlobalDecl dependency from MangleContext - Make MangleContext abstract and move Itanium/Microsoft functionality to their own classes/files - Implement ASTContext::createMangleContext and have CodeGen use it No (intended) functionality change. llvm-svn: 123386
-
- Jan 12, 2011
-
-
Douglas Gregor authored
(static_cast, dynamic_cast, reinterpret_cast, or const_cast) to improve source-location information. Fixes PR8960. llvm-svn: 123336
-
Jay Foad authored
and mark the fields they use as mutable. This allows us to remove a few const_casts. llvm-svn: 123314
-
John McCall authored
Slight optimization of getObjCGCAttrKind. llvm-svn: 123295
-
Douglas Gregor authored
in ASTContext-allocated memory, copying the provided template arguments. Use this new routine where we can. No functionality change. llvm-svn: 123289
-
- Jan 11, 2011
-
-
Douglas Gregor authored
sentence of [temp.deduct.call]p1, both of which concern the non-deducibility of parameter packs not at the end of a parameter-type-list. The latter isn't fully implemented yet; see the new FIXME. llvm-svn: 123210
-
- Jan 10, 2011
-
-
Bob Wilson authored
llvm-svn: 123184
-
- Jan 09, 2011
-
-
Francois Pichet authored
llvm-svn: 123134
-
Alexis Hunt authored
used to store the CXXConstructorDecl in a delegating constructor. llvm-svn: 123095
-
- Jan 08, 2011
-
-
Alexis Hunt authored
more accurate, and makes it make sense for it to hold a delegating constructor call. llvm-svn: 123084
-
- Jan 07, 2011
-
-
Francois Pichet authored
llvm-svn: 122992
-
Francois Pichet authored
Do not use cdecl, fastcall, stdcall etc.. as identifier name. They are reserved keywords at least on MSVC. llvm-svn: 122991
-
- Jan 06, 2011
-
-
Douglas Gregor authored
template whose last parameter is a parameter pack. This allows us to form a call to, e.g., template<typename ...Args1, typename ...Args2> void f(std::pair<Args1, Args2> ...pairs); given zero or more instances of "pair". llvm-svn: 122973
-
John McCall authored
The initial TreeTransform is a cop-out, but it's more-or-less equivalent to what we were doing before, or rather what we're doing now and might eventually stop doing in favor of using this type. I am simultaneously intrigued by the possibilities of rebuilding a dependent Attri llvm-svn: 122942
-
Douglas Gregor authored
initialize *all* of the bits to zero. Also, when the pattern of a template argument pack expansion, make sure to set the ellipsis location along all paths. This should clear up the valgrind failure that popped up in Clang. llvm-svn: 122931
-
- Jan 05, 2011
-
-
Douglas Gregor authored
parameter packs, along with ParmVarDecl::isParameterPack(), which looks for function parameter packs. Use these routines to fix some obvious FIXMEs. llvm-svn: 122904
-
Douglas Gregor authored
expansions with something that is easier to use correctly: a new template argment kind, rather than a bit on an existing kind. Update all of the switch statements that deal with template arguments, fixing a few latent bugs in the process. I"m happy with this representation, now. And, oh look! Template instantiation and deduction work for template template argument pack expansions. llvm-svn: 122896
-
Douglas Gregor authored
for template template argument pack expansions. This allows fun such as: template<template<class> class ...> struct apply_impl { /*...*/ }; template<template<class> class ...Metafunctions> struct apply { typedef typename apply_impl<Metafunctions...>::type type; }; However, neither template argument deduction nor template instantiation is implemented for template template argument packs, so this functionality isn't useful yet. I'll probably replace the encoding of template template argument pack expansions in TemplateArgument so that it's harder to accidentally forget about the expansion. However, this is a step in the right general direction. llvm-svn: 122890
-
Douglas Gregor authored
template<template<class> class ...Metafunctions> struct apply_to_each; llvm-svn: 122874
-
John McCall authored
the declaration-specifiers and on the declarator itself are moved to the appropriate declarator chunk. This permits a greatly simplified model for how to apply these attributes, as well as allowing a much more efficient query for the GC attribute. Now all qualifier queries follow the same basic strategy of "local qualifiers, local qualifiers on the canonical type, then look through arrays". This can be easily optimized by changing the canonical qualified-array-type representation. Do not process type attributes as decl attributes on declarations with declarators. When computing the type of a block, synthesize a prototype function declarator chunk if the decl-spec type was not a function. This simplifies the logic for building block signatures. Change the logic which inserts an objc_read_weak on a block literal to only fire if the block has a __weak __block variable, rather than if the return type of the block is __weak qualified, which is not actually a sensible thing to ask. llvm-svn: 122871
-
- Jan 04, 2011
-
-
Douglas Gregor authored
parameter pack. Note that we're missing proper libclang support for the new SizeOfPackExpr expression node. llvm-svn: 122813
-
Douglas Gregor authored
non-type template parameter pack, make sure to create a pack expansion for the corresponding template argument. llvm-svn: 122799
-
Douglas Gregor authored
initialize those lovely mixins that come from pack expansions of base specifiers. llvm-svn: 122793
-
- Jan 03, 2011
-
-
Douglas Gregor authored
llvm-svn: 122782
-
Douglas Gregor authored
(transforming each in turn) into calls into one central routine (TransformExprs) that transforms a list of expressions. This refactoring is preparatory work for pack expansions whose in an expression-list. No functionality change. llvm-svn: 122761
-
Douglas Gregor authored
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
-
- Dec 30, 2010
-
-
David Chisnall authored
Expose Objective-C type encodings of declarations to libclang users. This also adds a method in ASTContext which encodes FunctionDecls using the same encoding format that is used for Objective-C methods. llvm-svn: 122639
-
Rafael Espindola authored
The problem was that we were asserting the we never added an empty class to the same offset twice. This is not true for unions, where two members, empty or not, can have the some offset. llvm-svn: 122633
-
- Dec 26, 2010
-
-
David Chisnall authored
llvm-svn: 122564
-
Chris Lattner authored
16-bits in size. Implement this by splitting WChar into two enums, like we have for char. This fixes a miscompmilation of XULRunner, PR8856. llvm-svn: 122558
-
- Dec 24, 2010
-
-
John McCall authored
on array and function declarators. This is pretty far from complete, and I'll revisit it later if someone doesn't beat me to it. llvm-svn: 122535
-
Douglas Gregor authored
extract the appropriate argument from the argument pack (based on the current substitution index, of course). Simple instantiation of pack expansions involving non-type template parameter packs now works. llvm-svn: 122532
-
Douglas Gregor authored
packs, e.g., template<typename T, unsigned ...Dims> struct multi_array; along with semantic analysis support for finding unexpanded non-type template parameter packs in types, expressions, and so on. Template instantiation involving non-type template parameter packs probably doesn't work yet. That'll come soon. llvm-svn: 122527
-
- Dec 23, 2010
-
-
Douglas Gregor authored
template argument corresponding to a template parameter pack is an argument pack of a pack expansion of that template parameter pack. Implements C++0x [temp.dep.type]p2 (at least, as much of it as we can). llvm-svn: 122498
-
Jeffrey Yasskin authored
new gcc warning that complains on self-assignments and self-initializations. Fix one bug found by the warning, in which one clang::OverloadCandidate constructor failed to initialize its FunctionTemplate member. llvm-svn: 122459
-
- Dec 22, 2010
-
-
Douglas Gregor authored
pattern is a template argument, which involves repeatedly deducing template arguments using the pattern of the pack expansion, then bundling the resulting deductions into an argument pack. We can now handle a variety of simple list-handling metaprograms using variadic templates. See, e.g., the new "count" metaprogram. llvm-svn: 122439
-
Fariborz Jahanian authored
if property-dot expression is decidedly an rvalue. // rdar://8155806. llvm-svn: 122430
-
Francois Pichet authored
Previously designated anonymous fields were found via name lookup. This redesign uses the fact that an IndirectFieldDecl declaration will always follow an anonymous implicit field to remove the special case of name lookup. llvm-svn: 122387
-
- Dec 21, 2010
-
-
Douglas Gregor authored
llvm-svn: 122367
-
Douglas Gregor authored
information caused token-annotation to fail in funny ways. Fixes <rdar://problem/8595386>. llvm-svn: 122338
-