aboutsummaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2008-11-13don't highlight field name, just put a caret on it.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59255 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Using llvm::OwningPtr<> for CurLexer and CurTokenLexer. This makes both the ↵Ted Kremenek
ownership semantics of these objects explicit within the Preprocessor and also tightens up the code (explicit deletes not needed). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59249 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Use PushIncludeMacroStack/PopMacroStack instead of manually pushing/popping ↵Ted Kremenek
from IncludeMacroStack. This is both cleaner and makes the include stack transparently extensible. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59248 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13- Revert r59229 and r59232: AllocRegion should be immutable.Ted Kremenek
- Temporarily disabled test Analysis/array-struct.c for region store. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59245 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Process array base expression of any type.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59240 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Array index might be unsigned. We have to generate a temporary signed value forZhongxing Xu
it to be evaluated by APSInt::operators. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59238 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Incomplete struct pointer can be used as a function argument.Zhongxing Xu
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59235 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Lift the pointer to alloca'ed region to the pointer to its first element.Zhongxing Xu
This is required by some operations, e.g., *p = 1; p[0] = 1;. Also set the AllocaRegion's type during the cast. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59232 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Change AllocaRegion to subclass TypedRegion. We need to know ElementRegion'sZhongxing Xu
type when assigning to it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59229 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Hook up "BodyBlock", not "Block".Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59227 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Correctly connect 'continue' and 'break' statements in Objective-C fast ↵Ted Kremenek
enumeration for blocks to the appropriate basic blocks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59226 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13GRExprEngine/CFRefCount/GRSimpleVals: We don't do any special handling (yet) ↵Ted Kremenek
of vector types. Add explicit checks that when we process integers that they really are scalars. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59225 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Fix for crash issues with comma operators with a void first operand, and Eli Friedman
some more bullet-proofing/enhancements for tryEvaluate. This shouldn't cause any behavior changes except for handling cases where we were crashing before and being able to evaluate a few more cases in tryEvaluate. This should settle the minor mess surrounding r59196. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59224 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Fix uninitialized variable.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59222 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13[LLVM up] Update for raw_fd_ostream change. This fixes a FIXME thatDaniel Dunbar
the Backend output should be done in binary mode. - I'd appreciate it if someone who has a Windows build could verify this. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59221 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13GRExprEngine::VisitInitListExpr:Ted Kremenek
- Don't crash on vector types. - Handle typedefs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59220 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Easy IRgen improvement for bitfields, don't emit x >> 0.Daniel Dunbar
- Logic such as this quite possibly should be optional builder behavior. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59213 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Backout of r59196, plus a new ICE test. Sorry if this is a Eli Friedman
little rude; I figure it's cleaner to just back this out now so it doesn't get forgotten or mixed up with other checkins. The modification to isICE is simply wrong; I've added a test that the change to isICE breaks. I'm pretty sure the modification to tryEvaluate is also wrong. At the very least, there's some serious miscommunication going on here, as this is going in exactly the opposite direction of r59105. My understanding is that tryEvaluate is not supposed to care about side effects. That said, a lot of the clients to tryEvaluate are expecting it to enforce a no-side-effects policy, so we probably need another method that provides that guarantee. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59212 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Supply finished flag to EmitBlock for common statements which useDaniel Dunbar
landing pads. - Primarily a cleanliness issue instead of a performance issue (this eliminates all blocks w/o predecessors on 176.gcc/expr.c), but this also allows subsequent code to recognize it is unreachable and potentially avoid IRgen. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59211 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Normalize many BasicBlock names.Daniel Dunbar
- Use dotted notation for blocks related to a particular statement type. - Use .end for landing pads. No functionality change in NDEBUG mode. :) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59210 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Add IsFinished arg to EmitBlock.Daniel Dunbar
- Indicates that caller is done with the block and it can be dropped if it has no predecessors. Useful for callers who need to make landing pads but which may not be reached. No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59207 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13For if blocks with no else, name the join block ifend instead of theDaniel Dunbar
more confusing ifelse. Use dotted names for if blocks (if.then vs ifthen). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59201 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Fix bug where the body block of an ObjCForCollectionStmt would not properly ↵Ted Kremenek
get expanded as a series of basic blocks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59197 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13Fix bug in constant evaluation exposed by 176.gcc.Daniel Dunbar
- Evaluation of , operator used bogus assumption that LHS could be evaluated as an integral expression even though its type is unspecified. This change is making isICE very permissive of the LHS in non-evaluated contexts because it is not clear what predicate we would use to reject code here. The standard didn't offer me any guidance; opinions? git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59196 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Don't build identifiers for C++ constructors, destructors, orDouglas Gregor
conversion functions. Instead, we just use a placeholder identifier for these (e.g., "<constructor>") and override NamedDecl::getName() to provide a human-readable name. This is one potential solution to the problem; another solution would be to replace the use of IdentifierInfo* in NamedDecl with a different class that deals with identifiers better. I'm also prototyping that to see how it compares, but this commit is better than what we had previously. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59193 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Move some diagnostic handling to PreprocessorLexer.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59191 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Add virtual dtor to PreprocessorLexer.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59188 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Remove Lexer::LexIncludeFilename.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59186 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Move LexIncludeFilename from Lexer to PreprocessorLexer.Ted Kremenek
PreprocessorLexer now has a virtual method "IndirectLex" which allows it to call the lex method of its subclasses. This is not for performance intensive operations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59185 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Quick fix for crash in IRgen when we can tryEvaluate a condition toDaniel Dunbar
something that is not an int. - Ignore these cases for now, added FIXME that we should also boolize them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59184 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Use PushIncludeMacroStack() instead of manually manipulating the include stack.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59181 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Update CFGStmtVisitor to recognize that ObjCForCollectionStmts are special ↵Ted Kremenek
block-level "expressions". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59176 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Disable some debug prints.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59174 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Add skeleton for PTH lexer.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59169 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Fix a FIXME by improving a diagnostic, add a testcase for PR3048Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59167 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12make TryFixInvalidVariablyModifiedType a static function.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59163 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Shore up transfer function for ObjCForCollectionStmt.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59162 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Use Stmt* instead of Expr* for block-level expression.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59161 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12ObjCForCollectionStmts are block-level expressions.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59160 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Restructure code to encourage fallthrough, no functionality change.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59157 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12fix PR3048. I'm going to do some more work before closing it off andChris Lattner
adding a testcase. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59156 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Add (preliminary) transfer function support for ObjCForCollectionStmt. ↵Ted Kremenek
Still need to flesh out some logic. When processing DeclStmt, use the new interface to StateManager::BindDecl. Conjuring of symbols is now done in VisitDeclStmt. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59155 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Conjured symbols now bind to Stmt* instead of Expr*.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59154 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Update method names involving GRStateRef. No functionality change.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59153 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12GRStateRef:Ted Kremenek
- Rename SetSVal to BindLoc - Add BindDecl - Add BindExpr GRState: - Environment now binds to Stmt* instead of Expr*. This is needed for processing ObjCForCollectionStmt (essentially the declaration of the the 'element' variable can have an SVal attached to it). - BindDecl no longer accepts Expr* for the initialization value; use SVal* instead. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59152 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12StoreManager::BindDecl now takes an SVal* for the initialization value ↵Ted Kremenek
instead of an Expr* (which can be null). Lazy symbolication of conjured symbols is now the sole responsibility of GRExprEngine. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59151 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Implement support for operator overloading using candidate operatorDouglas Gregor
functions for built-in operators, e.g., the builtin bool operator==(int const*, int const*) can be used for the expression "x1 == x2" given: struct X { operator int const*(); } x1, x2; The scheme for handling these built-in operators is relatively simple: for each candidate required by the standard, create a special kind of candidate function for the built-in. If overload resolution picks the built-in operator, we perform the appropriate conversions on the arguments and then let the normal built-in operator take care of it. There may be some optimization opportunity left: if we can reduce the number of built-in operator overloads we generate, overload resolution for these cases will go faster. However, one must be careful when doing this: GCC generates too few operator overloads in our little test program, and fails to compile it because none of the overloads it generates match. Note that we only support operator overload for non-member binary operators at the moment. The other operators will follow. As part of this change, ImplicitCastExpr can now be an lvalue. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59148 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Start a README.txt of possible optimizations to do in IRgen.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59130 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Handle ?: in EmitBranchOnBoolExpr.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59129 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-12Rename ?: operator blocks to cond.true and cond.false (I don't knowDaniel Dunbar
what "cond.?" means, and this avoids quoting). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@59128 91177308-0d34-0410-b5e6-96231b3b80d8