aboutsummaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
2009-06-05Add a helper class for building template argument lists.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72915 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05Start of a Sema implementation for #pragma weak. This isn't really theEli Friedman
right approach, but I'm still not sure what the best way to go about this is. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72912 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05Several improvements to template argument deduction:Douglas Gregor
- Once we have deduced template arguments for a class template partial specialization, we use exactly those template arguments for instantiating the definition of the class template partial specialization. - Added template argument deduction for non-type template parameters. - Added template argument deduction for dependently-sized array types. With these changes, we can now implement, e.g., the remove_reference type trait. Also, Daniel's Ackermann template metaprogram now compiles properly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72909 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05Add parser support for #pragma weak.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72907 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-04Set function attribute llvm::Attribute::NoRedZone appropriately.Devang Patel
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72902 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-04Clean up builtin lists, add a few new builtins. (I re-sorted the Eli Friedman
string.h builtins to be in the same order as the list in the C99 standard.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72882 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-04forward -fno-color-diagnostics to clang-cc.Torok Edwin
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72856 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-04Add ANSI color support for clang.Torok Edwin
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72855 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-04Cleanup/Refactoring of ivar collection. No change in functionality.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72827 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-04When performing template argument deduction, ensure that multipleDouglas Gregor
deductions of the same template parameter are equivalent. This allows us to implement the is_same type trait (!). Also, move template argument deduction into its own file and update a few build systems with this change (grrrr). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72819 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-03PR4308: Fix support for -m32/-m64 on Linux.Eli Friedman
I'll look into cleaning this up a bit as a followup. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72794 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-03Driver: Support -mllvm; this just forwards options to clang-cc.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72780 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-03Minor cleanup for implicit int warnings.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72770 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-03Fix up a bunch of warnings to use ExtWarn so they interact with Eli Friedman
-pedantic-errors correctly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72769 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-03Add support for -Wempty-body.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72766 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-03PR4290: Handle vfprintf in a way that doesn't give any diagnostics for Eli Friedman
valid declarations and doesn't give an error for autoconf-style invalid redeclarations. This isn't quite ideal, but I don't see any other way easy way to handle it. (The only thing I can think of that's reasonably general is adding a new builtin type FILETy which is only compatible with a type equivalent to FILE, and that seems like overkill.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72760 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-02Add clang-cc support for -disable-llvm-optzns.Daniel Dunbar
- Avoids running any LLVM optimizations, even at -O2, etc., while still keeping any language changes these optimizations imply. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72742 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-02Missing file for __builtin_unwind_init support.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72728 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-02Add builtin declarations for the variants of sin and cos.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72718 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-02Add --shared option.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72716 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-01A corner case of objc2 gc's write-barrier generationFariborz Jahanian
for the Next runtime. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72703 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-01Fix a bug in hasEmptyExceptionSpec. (Thanks Sebastian for noticing).Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72691 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-01PR4283: Don't truncate multibyte character constants in the Eli Friedman
preprocessor. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72686 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-31Improve irgen of 'new' further.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72677 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-31Downgrade an error about "return in a no-return function" from being Chris Lattner
an error to being a warning that defaults to error. If you want this to be a warning, you have to explicitly pass -Winvalid-noreturn to clang to map it back to a warning. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72669 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-31Disallow exception specs on typedefs.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72664 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-31Initial infrastructure for class template partial specialization. HereDouglas Gregor
we have the basics of declaring and storing class template partial specializations, matching class template partial specializations at instantiation time via (limited) template argument deduction, and using the class template partial specialization's pattern for instantiation. This patch is enough to make a simple is_pointer type trait work, but not much else. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72662 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-31Add more getters to the new AST nodes.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72651 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30Clean up the newly added C++ AST nodes.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72643 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30ActOnReturnStmt should also take a FullExprArg.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72641 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30AddInitializerToDecl needs to take a full expression.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72640 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30Get rid of CXXTempVarDecl.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72637 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30Stop using CXXTempVarDecl and use CXXTemporary instead.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72634 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30Remove VarDecl from CXXConstructExpr.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72633 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30Small fixes to CXXTemporary and CXXBindTemporaryExpr.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72628 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30Add a CXXBindTemporaryExpr.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72627 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30Add a CXXTemporary class. Not used yet.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72626 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30Pretty printing and improved representation for namespace alias declarationsDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72616 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30Printing for using directives, e.g.,Douglas Gregor
using namespace std::debug; Extended UsingDirectiveDecl to store the nested-name-specifier that precedes the nominated namespace. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72614 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30Add a Stmt::printPretty overload which takes an ASTContext; start Eli Friedman
transitioning callers over to pass one in. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72609 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30Expose an API to print a group of decls (like "int a,b;"). Eli Friedman
Make StmtPrinter use DeclPrinter to print all declarations. Merge declarations in the limited case of an unnamed TagDecl followed by one or more declarations using that TagDecl directly. Change SuppressTypeSpecifiers to the more general SuppressSpecifiers, and use it to suppress stuff like "typedef" and "extern". Replace OwnedTag with SuppressTag, since it's more convenient to print declarations from DeclPrinter at the moment. improvements to declaration printing. Fix pretty-printing for K&R function definitions and __builtin_va_arg. We're now to the point where the pretty-printing output for non-trivial programs can actually be piped back into clang. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72608 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30Add support for PrintingPolicy::SuppressTypeSpecifiers to type printing. Eli Friedman
(I have a work-in-progress patch which uses this.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72598 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-30Refactor and clean up the AST printer, so that it uses a DeclVisitor,Douglas Gregor
walks through DeclContexts properly, and prints more of the information available in the AST. The functionality is still available via -ast-print, -ast-dump, etc., and also via the new member functions Decl::dump() and Decl::print(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72597 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-29Add code for emitting C++ destructors. Not used yet.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72591 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-29Create a new PrintingPolicy class, which we pass down through the ASTDouglas Gregor
printing logic to help customize the output. For now, we use this rather than a special flag to suppress the "struct" when printing "struct X" and to print the Boolean type as "bool" in C++ but "_Bool" in C. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72590 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-29Reject incomplete types in exception specs.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72580 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-29Disallow exception specifications on multi-level indirections.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72571 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-29If a declarator group declares a type, make sure to add that declaration Eli Friedman
to the DeclGroup. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72559 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-28When we parse a tag specifier, keep track of whether that tagDouglas Gregor
specifier resulted in the creation of a new TagDecl node, which happens either when the tag specifier was a definition or when the tag specifier was the first declaration of that tag type. This information has several uses, the first of which is implemented in this commit: 1) In C++, one is not allowed to define tag types within a type specifier (e.g., static_cast<struct S { int x; } *>(0) is ill-formed) or within the result or parameter types of a function. We now diagnose this. 2) We can extend DeclGroups to contain information about any tags that are declared/defined within the declaration specifiers of a variable, e.g., struct Point { int x, y, z; } p; This will help improve AST printing and template instantiation, among other things. 3) For C99, we can keep track of whether a tag type is defined within the type of a parameter, to properly cope with cases like, e.g., int bar(struct T2 { int x; } y) { struct T2 z; } We can also do similar things wherever there is a type specifier, e.g., to keep track of where the definition of S occurs in this legal C99 code: (struct S { int x, y; } *)0 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72555 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-28Introduced DeclContext::isDependentContext, which determines whether aDouglas Gregor
given DeclContext is dependent on type parameters. Use this to properly determine whether a TagDecl is dependent; previously, we were missing the case where the TagDecl is a local class of a member function of a class template (phew!). Also, make sure that, when we instantiate declarations within a member function of a class template (or a function template, eventually), that we add those declarations to the "instantiated locals" map so that they can be found when instantiating declaration references. Unfortunately, I was not able to write a useful test for this change, although the assert() that fires when uncommenting the FIXME'd line in test/SemaTemplate/instantiate-declref.cpp tells the "experienced user" that we're now doing the right thing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72526 91177308-0d34-0410-b5e6-96231b3b80d8