aboutsummaryrefslogtreecommitdiff
path: root/include
AgeCommit message (Collapse)Author
2009-05-27Reimplement much of the way that we track nested classes in theDouglas Gregor
parser. Rather than placing all of the delayed member function declarations and inline definitions into a single bucket corresponding to the top-level class, we instead mirror the nesting structure of the nested classes and place the delayed member functions into their appropriate place. Then, when we actually parse the delayed member function declarations, set up the scope stack the same way as it was when we originally saw the declaration, so that we can find, e.g., template parameters that are in scope. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72502 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-27restrict is not a keyword in gnu89 mode. Change TokenKinds.def to Eli Friedman
reflect that. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72500 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-27Reintroduce the home for exception specs, and make Sema fill it. However, ↵Sebastian Redl
keep the spec out of the canonical type this time. Net effect is currently nothing, because the spec isn't checked anywhere. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72498 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-27Add a big test case for I-C-Es in C++, and a fix to make it work. The fix ↵Sebastian Redl
might not be the right way to do it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72490 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-27Enumeration declarations that were instantiated from an enumerationDouglas Gregor
within a template now have a link back to the enumeration from which they were instantiated. This means that we can now find the instantiation of an anonymous enumeration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72482 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-27Initialize ObjCSenderDispatch in LangOptions.Fariborz Jahanian
Patch by Benjamin Kramer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72476 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-27Convert ObjC qualified type clients over to using iterators.Steve Naroff
This allows me to remove some API that I don't want to carry over to ObjCObjectPointerType. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72475 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-26When evaluating a VarDecl as a constant or determining whether it isDouglas Gregor
an integral constant expression, maintain a cache of the value and the is-an-ICE flag within the VarDecl itself. This eliminates exponential-time behavior of the Fibonacci template metaprogram. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72428 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-26Fix for PR4140: Add the start of a Linux toolchain (basically, just Eli Friedman
barely enough to get the given usage of -print-file-name working). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72412 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-26Add a new CallExpr::getCallReturnType and use it in Expr::isLvalueInternal. ↵Anders Carlsson
No intended functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72410 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-26Remove a bunch of unused constructorsAnders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72407 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-25reword a warning for clarityChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72391 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-25default -Wnonnull to on.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72390 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-25move some format group options around in the file. Move NonNull group intoChris Lattner
DiagnosticGroups.td, and add it as part of -Wformat (which gets it into -Wall). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72389 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-23Use 'Exprs.data()' instead of 'Exprs.empty() ? NULL : ...'Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72304 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22Fix the parent classes in TypeNodes.def, from Olaf KrzikallaDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72293 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22Modify begin()/end() for AsmStmt iterators to handle the case when Exprs.empty()Ted Kremenek
is true. Because of recent changes to llvm::SmallVector, using these iterators when Exprs was empty would cause an assertion failure. This fixes: PR 4245. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72286 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22Cannot type cast @selector expressions.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72284 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22Representation of and template instantiation for memberDouglas Gregor
expressions. This change introduces another AST node, CXXUnresolvedMemberExpr, that captures member references (x->m, x.m) when the base of the expression (the "x") is type-dependent, and we therefore cannot resolve the member reference yet. Note that our parsing of member references for C++ is still quite poor, e.g., we don't handle x->Base::m or x->operator int. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72281 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22This patch adds support for sender-aware dispatch in Objective-C for the GNU ↵Fariborz Jahanian
runtime, when compiled with -fobjc-sender-dependent-dispatch. This is used in AOP, COP, implementing object planes, and a few other things. Patch by David Chisnall. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72275 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22Don't warn about -funit-at-a-time, and reject -fno-unit-at-a-time.Daniel Dunbar
- We could just warn about -fno-unit-at-a-time, but in practice people using it probably aren't going to get what they want out of clang. Also, use "clang" specified error for unsupported things instead of driver unsupported error. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72272 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22(Next runtime only) check to see if class implements forwardInvocation method Fariborz Jahanian
and objects of this class are derived from 'NSProxy'. Under such conditions, which means that every method possible is implemented in the class, we should not issue "Method definition not found" warnings. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72267 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22Handle correctly a very ugly part of the C++ syntax. We cannot disambiguate ↵Argyrios Kyrtzidis
between a parenthesized type-id and a paren expression without considering the context past the parentheses. Behold: (T())x; - type-id (T())*x; - type-id (T())/x; - expression (T()); - expression git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72260 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22Factor the compound literal parsing out from ParseParenExpression and into a ↵Argyrios Kyrtzidis
new ParseCompoundLiteralExpression. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72259 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22Modification to ParseParenExpression.Argyrios Kyrtzidis
Now it parses the cast expression unless 'stopIfCastExpr' is true. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72258 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22Remove ParseSimpleParenExpression.Argyrios Kyrtzidis
Embed its functionality into it's only user, ParseCXXCasts. CXXCasts now get the "actual" expression directly, they no longer always receive a ParenExpr. This is better since the parentheses are always part of the C++ casts syntax. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72257 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22Refactor the common code of 'ParseTypeofSpecifier' and ↵Argyrios Kyrtzidis
'ParseSizeofAlignofExpression' into a new 'ParseExprAfterTypeofSizeofAlignof' method. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72256 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22(llvm up) Use llvm::Triple for storing target triples.Daniel Dunbar
- This commit has some messy stuff in it to extend string lifetimes, but that will go away once we switch to using the enum'd Triple interfaces. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72243 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22Add --analyzer-no-default-checks and --analyzer-output options.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72238 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-21Template instantiation for C99 designated initializers, because weDouglas Gregor
can. Also, delay semantic analysis of initialization for value-dependent as well as type-dependent expressions, since we can't always properly type-check a value-dependent expression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72233 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-21AST XML dump, from Olaf Krzikalla!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72224 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-21Check on null arguments in the presense of nonnull attribute.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72219 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-21Template instantiation for C++ throw expressionsDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72217 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-21Merge the ASTVector and ASTOwningVector templates, since they offeredDouglas Gregor
redundant functionality. The result (ASTOwningVector) lives in clang/Parse/Ownership.h and is used by both the parser and semantic analysis. No intended functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72214 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-21Use v.data() instead of &v[0] when SmallVector v might be empty.Jay Foad
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72210 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-20Introduce a new kind of RAII class, ASTOwningVector, which is anDouglas Gregor
llvm::SmallVector that owns all of the AST nodes inside of it. This RAII class is used to ensure proper destruction of AST nodes when template instantiation fails. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72186 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-20Template instantiation for the various kinds of AST nodes that occurDouglas Gregor
due to C++ type construction of the form T(a1, a2, ..., aN). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72183 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-20Introduce a new expression type, CXXUnresolvedConstructExpr, toDouglas Gregor
describe the construction of a value of a given type using function syntax, e.g., T(a1, a2, ..., aN) when the type or any of its arguments are type-dependent. In this case, we don't know what kind of type-construction this will be: it might construct a temporary of type 'T' (which might be a class or non-class type) or might perform a conversion to type 'T'. Also, implement printing of and template instantiation for this new expression type. Due to the change in Sema::ActOnCXXTypeConstructExpr, our existing tests cover template instantiation of this new expression node. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72176 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-20implementation of format_arg for ObjC methods/functions.Fariborz Jahanian
Still more to do. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72173 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-20* API change: we need to pass GRState to GRExprEngine::EvalBinOp() becauseZhongxing Xu
RegionStore needs to know the type of alloca region. * RegionStoreManager::EvalBinOp() now converts the alloca region to its first element region, as what is done to symbolic region. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72164 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-20Create a temporary if the lvalue is a bitfield. Reported by Eli.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72155 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-19Ban the use of __builtin_types_compatible_p in C++; g++ doesn't support it,Douglas Gregor
and it isn't clear exactly what it's supposed to mean. Thanks Eli! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72142 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-19Remove finished FIXME.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72137 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-19Move AnalysisConsumer.h and Analyses.def from tools/clang-cc to Eli Friedman
include/clang/Frontend, and move AnalysisConsumer.cpp from tools/clang-cc to lib/Frontend. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72135 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-19Template instantiation for __builtin_types_compatible_p.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72134 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-19Template instantiation for cast expressions.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72119 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-19Patch finishes off application of printf attribute on blocks.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72111 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-19Move clang-cc.h to lib/Frontend/Utils.h, and move the associated .cpp Eli Friedman
files to lib/Frontend. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72099 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-19Add comment about FullExprArg.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72098 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-19Template instantiation for call expressions.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72081 91177308-0d34-0410-b5e6-96231b3b80d8