aboutsummaryrefslogtreecommitdiff
path: root/AST
AgeCommit message (Collapse)Author
2008-02-12Add wchar_t type to ASTContext. Will be needed for wide strings, since Eli Friedman
they are of type wchar_t[]. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47004 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-12Fix type compatibility between constant and variable arrays.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@47003 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-10Refine bug fix to Expr::isLvalue (commit r46917).Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46919 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-10Change Expr::isLvalue() to allow the "void" type. This fixes bz2000 ↵Steve Naroff
submitted by Neil Booth. Neil, can you point me to the place in the C99 spec that says this is allowed? I thought Expr::isLvalue() conformed to the spec, which says "C99 6.3.2.1: an lvalue is an expression with an object type or an incomplete type other than void.". Please advise. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46917 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-08Put back the top-level asm code; all tests pass now.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46868 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-08Back out 46855 for now, it causes test failures on Darwin.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46867 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-07Handle top-level asm declarations.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46855 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-06Minor reordering of the serialization of the fields of MemberExpr to resultTed Kremenek
in a smaller encoding on disk. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46832 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-06Make sure to propagate qualifiers through the member operator.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46830 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-06Fix the codegen of structs with flexible array members.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46806 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-06Be a bit stricter about array type compatibility.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46799 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-06move the codegen ASTConsumer out of the driver into libcodegen,Chris Lattner
eliminating a bunch of forwarding methods and generally simplifying things. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46792 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-05Handle simple asm statements correctly.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46777 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-04Add experimental support for address space qualified types. Address spaceChristopher Lamb
qualifiers use the __attribute__((address_space(id))) syntax. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46691 91177308-0d34-0410-b5e6-96231b3b80d8
2008-02-01For ObjCAtCatchStmt, removed field 'NextAtCatchStmt' (which referenced the ↵Ted Kremenek
next @catch) and put the the next ObjcAtCatchStmt* as part of SubExprs. This fixes a bug with iterating over the children of ObjcAtCatch, where the next @catch was not properly being iterated over as a child. Altered serialization of ObjCAtCatchStmt to reflect this new layout of its subexpressions, and fixed an ownership issue with the next @catch not being serialized as an owned pointer. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46647 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-31Make CallExpr::isBuiltinConstantExpr slightly more efficient.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46594 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-31Add support for CallExpr::isBuiltinConstantExpr(). For now, this hook is ↵Steve Naroff
used to support CFConstantStrings. Can be extended to support other built-in functions. This allows the following code to compile without error... #include <CoreFoundation/CoreFoundation.h> #define CONST_STRING_DECL(S, V) const CFStringRef S = (const CFStringRef)__builtin___CFStringMakeConstantString(V); CONST_STRING_DECL(kCFTimeZoneSystemTimeZoneDidChangeNotification, "kCFTimeZoneSystemTimeZoneDidChangeNotification") git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46592 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-30Added method "printTerminator" to CFGBlock so that external clients canTed Kremenek
pretty-print a block's terminator. When building CFGs, for IfStmts ('if'), we no longer add the ParenExpr that is the subexpression of the IfStmt to the CFG; instead we add its first descendant subexpression that is not a ParenExpr. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46580 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-30Implement first round of feedback on __builtin_overloadNate Begeman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46572 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-30Abolish a bunch of Xcode inserted tabs.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46566 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-30Fixed misc. issues raised by Chris L. on @synchronized implementation.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46558 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-30move some constructors out of line and fix indentation in ↵Chris Lattner
ObjCAtThrowStmt::getSourceRange. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46547 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-29Rewriting of @synchronized. This has one FIXME in it. But this should allow ↵Fariborz Jahanian
@sychronized to be rewritten. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46533 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-29- Hooked up deserialization of ObjCAtSynchronizedStmt Stmt::Create().Ted Kremenek
- Some minor optimizations of the encoding format for ObjCAtSynchronizedStmt. - Reordered methods so that the deserialization methods for ObjCAtSynchronizedStmt appear in alphabetical order with the corresponding methods of the other AST nodes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46529 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-29AST for @synchronized.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46524 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-29Tighten up ASTContext::typesAreCompatible()...it needs to make sure the ↵Steve Naroff
qualifiers match. The comment and C99 citation for this routine were correct...the code needed to conform to the comment/spec. This fixes the test added below. Tightening up this routine forced tweaks to Sema::CheckSubtractionOperands() and Sema::CheckCompareOperands(). For example, they both need to operate on the unqualified pointee... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46522 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-29Bunch of type defs, etc. for @synchronized.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46520 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-29Implement __builtin_offsetof.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46515 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-29Fix bz1950. ASTContext::functionTypesAreCompatible() needs to operate on the ↵Steve Naroff
unqualified parameter types (per C99 6.7.5.3p15). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46472 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-26Added back logic in patch r46361 ↵Ted Kremenek
(http://llvm.org/viewvc/llvm-project?rev=46361&view=rev) with the addition of some previously missing NULL pointer checks. Modified the UninitializedValues analysis to not expect that every Expr* at the block-level is a block-level expression (we probably need to change the name of such expressions to something truer to their meaning). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46380 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-25Reverting r46361 (http://llvm.org/viewvc/llvm-project?rev=46361&view=rev) untilTed Kremenek
I diagnose the source of the failures it causes in the test suite. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46376 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-25fix isIntegerConstantExpr evaluation of unary !.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46364 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-25When adding assignment expressions to the set of block-level expressions, onlyTed Kremenek
include the assignment expressions whose result (as in the value of the expression) is used by other expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46361 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-25Support checking and codegen of constant vector globalsNate Begeman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46343 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-24Exclude vectors from Type::isScalar() predicate.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46328 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-23Missing ObjC stuff. Patch by Mike Stump.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46268 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-22Problem with ObjC's type-encoding of nested structs causing infinit recursion.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46260 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-21Add a predicate/getter when checking for incomplete array types ("[]").Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46231 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-17Modified the notion of "Block-level expressions" in CFGs to include Stmt*. ThisTed Kremenek
is because GNU-style Statement-expressions cause the last statement in the statement-expression to act like an expression. We now have two notions: block-level statements and block-level expressions. The former are all Stmt* that appear in the list of statements in CFGBlocks. The latter is the subset of the former; these block-level statements are used as subexpressions somewhere in the AST. CFG::isBlockExpr() returns true for the latter, not the former (previously isBlockExpr() always returned true for non-Expr Stmt*). Modified the LiveVariables analysis to also track liveness state for block-level expressions (using the updated definition of block-level expressions). Modified the dataflow solver so that when it records values for block-level statements, it records the dataflow value *before* the transfer function for a Stmt* is evaluated (not after). This is more in sync in what clients will want. Modified CFGStmtVisitor to record the current block-level statement. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46143 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-17Implement basic overload support via a new builtin, __builtin_overload.Nate Begeman
__builtin_overload takes 2 or more arguments: 0) a non-zero constant-expr for the number of arguments the overloaded functions will take 1) the arguments to pass to the matching overloaded function 2) a list of functions to match. The return type of __builtin_overload is inferred from the function whose args match the types of the arguments passed to the builtin. For example: float a; float sinf(float); int sini(int); float b = __builtin_overload(1, a, sini, sinf); Says that we are overloading functions that take one argument, and trying to pass an argument of the same type as 'a'. sini() does not match since it takes and argument of type int. sinf does match, so at codegen time this will turn into float b = sinf(a); git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46132 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-17Renamed getSynthesizedSelectorSize to getSynthesizedMethodSize. Compute ↵Fariborz Jahanian
method name size in accordance with how rewriter synthesizes method name. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46131 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-17Added method Expr::IgnoreParens(), which returns the first non-ParenExpr Expr*.Ted Kremenek
Refactored the use of this method into both the Sema module and Analysis module, which were using their own static functions that did the same thing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46129 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-17Computed length of a __func__ identifier used in an objective-c method ↵Fariborz Jahanian
correctly, when creating its type. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46109 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16Simplify comment.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46103 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-16Type::isArithmeticType(): disallow incomplete enum decls.Steve Naroff
Bug submitted by Eli. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46102 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-15- Change Type::isComplexType() to exlude GCC's complex integer extension. In ↵Steve Naroff
general, we will keep the lowest level Type predicates "pure" (i.e. true to the C99 spec). - Modify Sema::UsualArithmeticConversions() to work with the new definition of Type::isComplexType(). This is a nice cleanup and also fixes a bug submitted by Eli (which I've added to the test suite). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46005 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-15Rework commit r45976, which was incorrect.Steve Naroff
- Add Type::isComplexIntegerType(), Type::getAsComplexIntegerType(). - Don't inlude complex types with Type::isIntegerType(), which is too general. - Use the new predicates in Sema::UsualArithmeticConversions() to recognize/convert the types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45992 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-14Teach Type::isIntegerType() about GCC's __complex__ integer extensions...Steve Naroff
Bug submitted by Eli. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45976 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-14When serializing CompoundLiteralExpr, serialize out the file scope flag beforeTed Kremenek
serializing the subexpression (Init), as this results in a more efficient encoding in the bitstream. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45967 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-14Record if a compound literal expression is @ file scope. This allows us to ↵Steve Naroff
implement C99 6.5.2.5p6. This could have been done without modifying the AST (by checking the decl type and passing the info down to isContextExpr), however we concluded this is more desirable. Bug/patch by Eli Friedman! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@45966 91177308-0d34-0410-b5e6-96231b3b80d8