aboutsummaryrefslogtreecommitdiff
path: root/AST
AgeCommit message (Collapse)Author
2007-09-22Use APFloat for the representation of FP immediates, ask the targetChris Lattner
for *which* apfloat to use for a particular type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42234 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-21This patch instantiates objects for forward protocols and in general handles ↵Fariborz Jahanian
use of protocols referenced in @protocol declarations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42191 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-19Added support to clang driver to view ASTs using GraphViz. ThisTed Kremenek
functionality is still preliminary. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42152 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-19Remove SelectorTable/SelectorInfo, simply store all selectors in the central ↵Steve Naroff
IdentifierTable. Rationale: We currently have a separate table to unique ObjC selectors. Since I don't need all the instance data in IdentifierInfo, I thought this would save space (and make more sense conceptually). It turns out the cost of having duplicate entries for unary selectors (i.e. names without colons) outweighs the cost difference between the IdentifierInfo & SelectorInfo structures. Here is the data: Two tables: *** Selector/Identifier Stats: # Selectors/Identifiers: 51635 Bytes allocated: 1999824 One table: *** Identifier Table Stats: # Identifiers: 49500 Bytes allocated: 1990316 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42139 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-18Progress on message expressions...Steve Naroff
- Add ObjcMessageExpr AST node and associated constructors. - Add SourceLocation's to ActOnKeywordMessage/ActOnUnaryMessage API. - Instantiate message expressions... - Replace alloca usage with SmallString. Next step, installing a correct type, among other tweaks... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42116 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-18Patch for object creation and handling of category declarations.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42104 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17Patch to remove ObjcProtoMethodDecl and use ObjcMethodDeclFariborz Jahanian
instead for @protocol method decls. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42070 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17Patch to add objective-c's @protocl type declaration.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42060 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17When building CFGs we now (unconditionally) add an empty CFGBlock to the CFGTed Kremenek
to serve as the entry block. An empty entry block (just as with an empty exit block, which we already have) simplifies building analyses on top of CFGs with very little extra overhead. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42031 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17Add const to debug hook...Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42025 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17Add support for ObjC keyword selectors.Steve Naroff
- Add SelectorInfo/SelectorTable classes, modeled after IdentifierInfo/IdentifierTable. - Add SelectorTable instance to ASTContext, created lazily through ASTContext::getSelectorInfo(). - Add SelectorInfo slot to ObjcMethodDecl. - Add helper function to derive a SelectorInfo from ObjcKeywordInfo. Misc: Got the Decl stats stuff up and running again...it was missing support for ObjC AST's. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42023 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17Fixed unterminated string issue.Hartmut Kaiser
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42022 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-17make var in anon namespace static. Use \n instead of std::endl.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42020 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-16Silenced a VC++ warning.Hartmut Kaiser
Updated VC++ project files. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42015 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-16fix some warnings, patch by Justin HandvilleChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42010 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-16decl counting isn't implemented yet for objc. -stats probably crashes for it.Chris Lattner
Patch by Justin Handville git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42009 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-16fix warning.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42006 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-16Fixes/tweaks that prevent "defaults-i.m" from compiling.Steve Naroff
- Allow classnames as the receiver (removing a FIXME from ParseObjCMessageExpression). - Added a FIXME to ParseObjCMessageExpression()...we need to return a message expr AST node! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42001 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-16Fixed a problem VC++ revealed in release mode. Please verify.Hartmut Kaiser
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41996 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-16Fixed two problems VC++ revealed in release mode. Please verify.Hartmut Kaiser
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41995 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-15pretty print some nodes more nicely.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41989 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14Patch to store ivars into interface class object.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41961 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-14Now that the dust has settled on the Decl refactoring, I noticed FieldDecl ↵Steve Naroff
didn't need NextDeclarator. As a result, I'm removing it. Removing both slots (NextDeclarator/Next) end up reducing the size of fields/ivars by 40%. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41948 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-13Move Decl::NextDeclarator (w/ setters/getters) down to ScopedDecl/FieldDecl.Steve Naroff
Decl is now svelte:-) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41935 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-13Phase 2 of making the Decl class more lightweight...Steve Naroff
Move Identifier/Loc instance variables (and associated getters/setters) down from Decl to ScopedDecl/FieldDecl. Objc AST's can now inherit from Decl without getting instance variables and types that are C specific. For now, I am keeping NextDeclarator, since I believe it may be useful to ObjC. If not, it can be moved later. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41934 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-12Patch for building method declaration nodes. Also fixed a segfault in ↵Fariborz Jahanian
cocoa.m due to use of @property. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41880 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-11Added static method "CFG::hasImplicitControlFlow".Ted Kremenek
This method is used to determine if an expression contains implicit control-flow, and thus appears in a distinct statement slot in the CFG. For example: (1) x = ... ? ... ? ... logically becomes: (1) ... ? ... : ... (a unique statement slot for the ternary ?) (2) x = [E1] (where E1 is actually the ConditionalOperator*) A client of the CFG, when walking the statement at (2), will encounter E1. In this case, hasImplicitControlFlow(E1) == true, and the client will know that the expression E1 is explicitly placed into its own statement slot to capture the implicit control-flow it has. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41868 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-11Fixed bug where ternary expressions and GCC-style conditional expressions Ted Kremenek
where not reversing the order of their subexpression blocks. Added feature where CallExprs are placed in their own statement slot in a CFGBlock. Thus we have a designated "return site" within a CFGBlock when reasoning about function calls. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41866 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-11get rid of ugly "warning: no newline at end of file"Gabor Greif
warnings that some compilers diagnose git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41847 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-10Early patch to collect objective-c methods inserts them inFariborz Jahanian
class object. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41801 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-10Modified dumping of Decl information to including the Decl type.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41796 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-06The goal of this commit is to get just enough Sema support to recognize ↵Steve Naroff
Objective-C classes as types. That said, the AST nodes ObjcInterfaceDecl, ObjcInterfaceType, and ObjcClassDecl are *very* preliminary. The good news is we no longer need -parse-noop (aka MinimalActions) to parse cocoa.m. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41752 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-05Moved tracking of CFG block IDs into the CFG class.Ted Kremenek
Added CFG::getNumBlockIDs() to query the number of distinct block ids created. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41724 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-04Silence VC++ warnings, patch by Hartmut KaiserChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41693 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-02More progress on array initializers.Steve Naroff
- Added Expr::isConstantExpr(). - Added type checking for InitListExpr elements. - Added diagnostic for trying to initialize a variable sized object. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41674 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-01Finish converting SwitchStmt AST to source ranges.Steve Naroff
Move DumpSourceRange() to DumpStmt(). Now -parse-ast-dump will display source range info for all stmts/exprs. One day we should implement the source range protocol for Decls. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41670 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-31Convert more statments over to SourceRanges...Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41666 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-31Fixed missing '(' and ')' characters in (CFG) pretty-printing ofTed Kremenek
statement expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41659 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-31Added better pretty printing in CFGs for __builtin_choose_exprTed Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41658 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-31Further cleanups in CFG printing for comma expressions, statement ↵Ted Kremenek
expressions, and indirect gotos. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41657 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-31Cleanups for printing the terminators of CFGBlocks for "?", "||", and "&&" ↵Ted Kremenek
operators. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41654 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-31Added "PrinterHelper" interface (include/AST/PrinterHelper) that canTed Kremenek
be passed as an (optional) argument to StmtPrinter to customize printing of AST nodes. Used new PrinterHelper interface to enhance printing and visualization of CFGs. The CFGs now illustrate the semantic connectives between statements and terminators, wheras in the previous printing certain expressions would (visible) be printed multiple times to reflect which expressions used the results of other expressions. The end result is that the CFG is easier to read for flow of expression values (following principles similar to the LLVM IR). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41651 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-31Removed Sema::VerifyConstantArrayType(). With the new ↵Steve Naroff
Array/ConstantArray/VariableArray nodes, this routine was causing more trouble than it was worth. Anders/Chris noticed that it could return an error code without emiting a diagnostic (which results in an silent invalid decl, which should *never* happen). In addition, this routine didn't work well for typedefs and field decls. Lastly, it didn't consider that initializers aren't in place yet. Added Type::getAsConstantArrayType(), Type::getAsVariableArrayType(), Type::getAsVariablyModifiedType(), and Type::isVariablyModifiedType(); Modified Sema::ParseDeclarator() and Sema::ParseField() to use the new predicates. Also added a FIXME for the initializer omission. Also added a missing test for "static" @ file scope. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41647 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-31Added support for __builtin_choose_expr (ChooseExpr) in CFGs.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41646 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-31Add InitListExpr class.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41636 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-30Minor cleanups to pretty-printing for loops in CFGs.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41623 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-30Fixed a bug in constructing CFG blocks for case statement fall-throughTed Kremenek
introduced by moving "CaseStmt" pointers out of the list of statements and into the explicit "label" associated with a CFGBlock. --This line, and those below, will be ignored-- M AST/CFG.cpp git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41622 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-30Diff is self small & self explanatory...Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41621 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-30Fixed bug in CFG construction where we failed to handle loop bodies withTed Kremenek
no statements (or just full of ';' statements). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41620 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-30Fixed bug in CFG construction involving use of labels and "empty"Ted Kremenek
blocks involving only ';' statements. We now correctly handle the following: void empty_label() { l1: ; } git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41619 91177308-0d34-0410-b5e6-96231b3b80d8