- Nov 13, 2008
-
-
Daniel Dunbar authored
- Use dotted notation for blocks related to a particular statement type. - Use .end for landing pads. No functionality change in NDEBUG mode. :) llvm-svn: 59210
-
Daniel Dunbar authored
- 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. llvm-svn: 59207
-
Daniel Dunbar authored
more confusing ifelse. Use dotted names for if blocks (if.then vs ifthen). llvm-svn: 59201
-
Ted Kremenek authored
Fix bug where the body block of an ObjCForCollectionStmt would not properly get expanded as a series of basic blocks. llvm-svn: 59197
-
Daniel Dunbar authored
- 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? llvm-svn: 59196
-
Douglas Gregor authored
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. llvm-svn: 59193
-
Ted Kremenek authored
llvm-svn: 59191
-
- Nov 12, 2008
-
-
Ted Kremenek authored
llvm-svn: 59188
-
Ted Kremenek authored
llvm-svn: 59186
-
Ted Kremenek authored
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. llvm-svn: 59185
-
Daniel Dunbar authored
something that is not an int. - Ignore these cases for now, added FIXME that we should also boolize them. llvm-svn: 59184
-
Ted Kremenek authored
llvm-svn: 59181
-
Ted Kremenek authored
Update CFGStmtVisitor to recognize that ObjCForCollectionStmts are special block-level "expressions". llvm-svn: 59176
-
Daniel Dunbar authored
llvm-svn: 59174
-
Ted Kremenek authored
llvm-svn: 59169
-
Chris Lattner authored
llvm-svn: 59167
-
Chris Lattner authored
llvm-svn: 59163
-
Ted Kremenek authored
llvm-svn: 59162
-
Ted Kremenek authored
llvm-svn: 59161
-
Ted Kremenek authored
llvm-svn: 59160
-
Chris Lattner authored
llvm-svn: 59157
-
Chris Lattner authored
adding a testcase. llvm-svn: 59156
-
Ted Kremenek authored
Add (preliminary) transfer function support for ObjCForCollectionStmt. 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. llvm-svn: 59155
-
Ted Kremenek authored
llvm-svn: 59154
-
Ted Kremenek authored
llvm-svn: 59153
-
Ted Kremenek authored
- 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. llvm-svn: 59152
-
Ted Kremenek authored
StoreManager::BindDecl now takes an SVal* for the initialization value instead of an Expr* (which can be null). Lazy symbolication of conjured symbols is now the sole responsibility of GRExprEngine. llvm-svn: 59151
-
Douglas Gregor authored
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. llvm-svn: 59148
-
Daniel Dunbar authored
llvm-svn: 59130
-
Daniel Dunbar authored
llvm-svn: 59129
-
Daniel Dunbar authored
what "cond.?" means, and this avoids quoting). llvm-svn: 59128
-
Daniel Dunbar authored
llvm-svn: 59127
-
Eli Friedman authored
This pushes it a lot closer to being able to deal with most of the stuff CodeGen's constant expression evaluator knows how to deal with. This also fixes PR3003. The test could possibly use some improvement, but this'll work for now. Test 6 is inspired by PR3003; the other tests are mostly just designed to exercise the new code. The reason for the funny structure of the tests is that type fixing for arrays inside of structs is the only place in Sema that calls tryEvaluate, at least for the moment. llvm-svn: 59125
-
Chris Lattner authored
This cuts another 200 lines off expr.ll, forming 23 selects. llvm-svn: 59124
-
Chris Lattner authored
This happens for stuff like this: x = cond1 || cond2 || cond3 || cond4; llvm-svn: 59123
-
Chris Lattner authored
constant folding. llvm-svn: 59121
-
Daniel Dunbar authored
- Split out "simple" statements which can easily handle IR generation when there is no insert point. These are generally statements which start by emitting a new block or are only containers for other statements. - This fixes a regression in emitting dummy blocks, notably for case statements. - This also fixes spurious emission of a number of debug stoppoint intrinsic instructions. Remove unneeded sw.body block, just clear the insertion point. Lift out CodeGenFunction::EmitStopPoint which calls into the CGDebugInfo class when generating debug info. Normalize definitions of Emit{Break,Continue}Stmt and usage of ErrorUnsupported. llvm-svn: 59118
-
Chris Lattner authored
codegen stuff like "if (!(X && Y))" llvm-svn: 59115
-
Chris Lattner authored
shrinks code yet again by a bit. llvm-svn: 59114
-
Chris Lattner authored
CodeGenFunction.cpp. Change VisitConditionalOperator to use constant fold instead of codegen'ing a constant conditional. Change ForStmt to use EmitBranchOnBoolExpr, this shrinks expr.c very slightly to 40239 lines. llvm-svn: 59113
-