aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2011-01-10Fix comment.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123147 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-09Don't crash if SpecString is an empty string.Francois Pichet
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123134 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-09Make a helper function static.Benjamin Kramer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123118 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-08Rename CXXCtorInitializer::BaseOrMember to Initializee, since it will also beSean Hunt
used to store the CXXConstructorDecl in a delegating constructor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123095 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-08Renamed CXXBaseOrMemberInitializer to CXXCtorInitializer. This is both shorter,Sean Hunt
more accurate, and makes it make sense for it to hold a delegating constructor call. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123084 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-08Check for delegating constructors and (currently) return an error about them.Sean Hunt
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123076 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-08Remove a kludge from analysis based warnings that used to detectChandler Carruth
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123056 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-08Add semantic checking that the "thousands grouping"Ted Kremenek
prefix in a printf format string is matched with the appropriate conversion specifier. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123055 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-08Add printf format string parsing support for 'Ted Kremenek
prefix to format conversions (POSIX extension). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123054 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07Fix typo.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123041 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07Variadic templates example: a nearly-complete implementation of a TR1Douglas Gregor
function class template. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123024 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07Fix crash in CFGBuilder on invalid code. We still needTed Kremenek
to reject this code, but at least clang doesn't crash anymore. Crash reported in PR 8880. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123017 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07Variadic templates example: a nearly-complete implementation of a TR1Douglas Gregor
tuple class template. This implementation is boosted directly from the variadic templates proposal. N2080. Note that one section is #ifdef'd out. I'll implement that aspect of template argument deduction next. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123016 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07When instantiating the arguments to an initializer, use theDouglas Gregor
TreeTransform version of TransformExprs() rather than explicit loop, so that we expand pack expansions properly. Test cast coming soon... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123014 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07Fix a valgrind error when transforming function prototypes withDouglas Gregor
function parameter pack expansions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123007 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07Use -check-prefix to make it clear the test is SVR4/DARWINPPC specific.Roman Divacky
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123005 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07Drop the _darwin/_svr4 suffixes.Roman Divacky
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123004 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07Update AST reader/writer to handle new AppleKext.Fariborz Jahanian
Fix an unexpected hickup caused by exceeding size of generated table (and a misleading comment). Improve on help message for -fapple-kext. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123003 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07Implement substitution of a function parameter pack for its set ofDouglas Gregor
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'); } git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123000 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07Prefix all attribute enumerators with attr_ for consistency.Francois Pichet
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122992 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07Do not use cdecl, fastcall, stdcall etc.. as identifier name. They are ↵Francois Pichet
reserved keywords at least on MSVC. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122991 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07Rework a few things about how we emit ObjC's for enumeration statement.John McCall
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122988 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07Add all options needed to support -fapple-kext. wip.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122987 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-07Factor out the template transformation of a sequence of functionDouglas Gregor
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122986 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-06Add target triple.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122980 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-06Implement template argument deduction from a call to a functionDouglas Gregor
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". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122973 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-06test case for r122971.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122972 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-06Put warning about makeing a string writable intoFariborz Jahanian
its own deprecated diagnostics group so it can be turned off selectively. // rdar://8827606 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122967 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-06Add cortex-m3 CPU to getCPUDefineSuffix mapping.Bob Wilson
Patch by Sylvère Teissier. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122965 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-06Added testcase for commit r122963.Abramo Bagnara
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122964 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-06PowerPC fixes.Roman Divacky
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122956 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-06Tweak the wording of this warning further based on a suggestion from Chris.Chandler Carruth
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122951 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-06fix rdar://8823139, a crash on a comment in a preprocessed .s fileChris Lattner
that contains the ## operator. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122946 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-06Introduce an AttributedType, but don't actually use it anywhere yet.John McCall
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 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122942 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-06Clang should not warn on code in clang that is only there to remove warnings.Jakob Stoklund Olesen
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122941 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-06When default-initializing a TemplateArgumentLocInfo, make sure that weDouglas Gregor
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122931 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-05Fast-path an arity check when performing template argument deduction that ↵Douglas Gregor
compares two parameter-type-lists. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122928 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-05Eliminate an unnecessary dance where we tried to cope with the lack ofDouglas Gregor
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122927 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-05Initial implementation of function parameter packs. This implementation allows:Douglas Gregor
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122926 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-05Fix an embarrassing think in the disambiguation logic for the ellipsis in a ↵Douglas Gregor
parameter-type-list git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122924 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-05Don't warn on missing 'copy' attribute on a 'block'Fariborz Jahanian
property when it is 'readonly'. // rdar://8820813 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122923 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-05hasInit() -> hasDefaultArg()Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122905 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-05Add Decl::isParameterPack(), which covers both function and templateDouglas Gregor
parameter packs, along with ParmVarDecl::isParameterPack(), which looks for function parameter packs. Use these routines to fix some obvious FIXMEs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122904 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-05Propagate the "deduced from array bound" bit when comparing deducedDouglas Gregor
template argument packs. Plus, remove a FIXME that I fixed yesterday. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122903 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-05When we're converting deduced template arguments to the type of theDouglas Gregor
corresponding template parameter, make sure that prior converted template arguments are available for substitution. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122902 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-05Use the proper enum as parameter, instead of unsigned. No functionality change.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122900 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-05Eliminate two "unsupported" errors relating to variadic templates: oneDouglas Gregor
for template template argument pack expansions (which was no longer used) and another that was a placeholder for an llvm_unreachable. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122898 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-05Replace the representation of template template argument packDouglas Gregor
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122896 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-05fix a -Wself-assign warningChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122894 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-05Add semantic analysis for the creation of and an AST representationDouglas Gregor
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122890 91177308-0d34-0410-b5e6-96231b3b80d8