- Jan 08, 2011
-
-
Alexis Hunt authored
llvm-svn: 123076
-
Chandler Carruth authored
temporaries with no-return destructors. The CFG now properly supports temporaries and implicit destructors which both makes this kludge no longer work, and conveniently removes the need for it. Turn on CFG handling of implicit destructors and initializers. Several ad-hoc benchmarks don't indicate any measurable performance impact from growing the CFG, and it fixes real correctness problems with warnings. As a result of turning on these CFG elements, we started to tickle an inf-loop in the unreachable code logic used for warnings. The fix is trivial. llvm-svn: 123056
-
Ted Kremenek authored
prefix in a printf format string is matched with the appropriate conversion specifier. llvm-svn: 123055
-
Ted Kremenek authored
prefix to format conversions (POSIX extension). llvm-svn: 123054
-
- Jan 07, 2011
-
-
Ted Kremenek authored
to reject this code, but at least clang doesn't crash anymore. Crash reported in PR 8880. llvm-svn: 123017
-
Douglas Gregor authored
TreeTransform version of TransformExprs() rather than explicit loop, so that we expand pack expansions properly. Test cast coming soon... llvm-svn: 123014
-
Douglas Gregor authored
function parameter pack expansions. llvm-svn: 123007
-
Fariborz Jahanian authored
Fix an unexpected hickup caused by exceeding size of generated table (and a misleading comment). Improve on help message for -fapple-kext. llvm-svn: 123003
-
Douglas Gregor authored
instantiated function parameters, enabling instantiation of arbitrary pack expansions involving function parameter packs. At this point, we can now correctly compile a simple, variadic print() example: #include <iostream> #include <string> void print() {} template<typename Head, typename ...Tail> void print(const Head &head, const Tail &...tail) { std::cout << head; print(tail...); } int main() { std::string hello = "Hello"; print(hello, ", world!", " ", 2011, '\n'); } llvm-svn: 123000
-
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
-
John McCall authored
In particular, the iteration variable (if present) should be created and destroyed in a narrow span around the loop body, and the body should be emitted in a cleanup scope in case it's not a compound statement. Otherwise, rename a few variables and use phis instead of temporary variables for the index and buffer count. llvm-svn: 122988
-
Fariborz Jahanian authored
llvm-svn: 122987
-
Douglas Gregor authored
parameters into parameter types, so that substitution of explicitly-specified function template arguments uses the same path. This enables the use of explicitly-specified function template arguments with variadic templates. llvm-svn: 122986
-
- 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
-
Bob Wilson authored
Patch by Sylvère Teissier. llvm-svn: 122965
-
Roman Divacky authored
Fix the width and align of bool type on Darwin to be 32bits while keeping it 8 everywhere else. Change the definition of va_list to default to SV4 ABI one and let darwin subtarget override this. Both changes submitted by Nathan Whitehorn and reviewed by Rafael Espindola. llvm-svn: 122956
-
-
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
-
Jakob Stoklund Olesen authored
llvm-svn: 122941
-
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
-
Douglas Gregor authored
Fast-path an arity check when performing template argument deduction that compares two parameter-type-lists. No functionality change. llvm-svn: 122928
-
Douglas Gregor authored
TypeSourceInfo when transforming a function parameter. The callees of this routine already assume that TypeSourceInfo will be present, and we want to always be sure that it exists. llvm-svn: 122927
-
Douglas Gregor authored
1) Declaration of function parameter packs 2) Instantiation of function parameter packs within function types. 3) Template argument deduction of function parameter packs when matching two function types. We're missing all of the important template-instantiation logic for function template definitions, along with template argument deduction from the argument list of a function call, so don't even think of trying to use these for real yet. llvm-svn: 122926
-
Douglas Gregor authored
llvm-svn: 122924
-
Fariborz Jahanian authored
property when it is 'readonly'. // rdar://8820813 llvm-svn: 122923
-
- Jan 05, 2011
-
-
Douglas Gregor authored
llvm-svn: 122905
-
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
template argument packs. Plus, remove a FIXME that I fixed yesterday. llvm-svn: 122903
-
Douglas Gregor authored
corresponding template parameter, make sure that prior converted template arguments are available for substitution. llvm-svn: 122902
-
Argyrios Kyrtzidis authored
llvm-svn: 122900
-
Douglas Gregor authored
for template template argument pack expansions (which was no longer used) and another that was a placeholder for an llvm_unreachable. llvm-svn: 122898
-
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
-
Chris Lattner authored
llvm-svn: 122894
-
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
implemented, however. llvm-svn: 122888
-
Douglas Gregor authored
llvm-svn: 122878
-
Douglas Gregor authored
parameter packs. Also, the "no template parameters after a template parameter pack" rule only applies to primary class templates. llvm-svn: 122877
-
Douglas Gregor authored
parameters and template template parameters. llvm-svn: 122875
-
Douglas Gregor authored
template<template<class> class ...Metafunctions> struct apply_to_each; llvm-svn: 122874
-