Douglas Gregor
4c95288f64
Don't try to evaluate an expression that is type- or value-dependent while building the CFG
...
llvm-svn: 79941
2009-08-24 21:39:56 +00:00
Benjamin Kramer
89b422c118
Replace cerr with errs().
...
llvm-svn: 79854
2009-08-23 12:08:50 +00:00
Zhongxing Xu
1a3ec57520
If the 'while' has an empty body, set the body to the continue target block.
...
Although this does not make the CFG more correct, it makes the CFG more
beautiful without multiple roots.
llvm-svn: 79509
2009-08-20 03:21:49 +00:00
Zhongxing Xu
a778b02e89
If the body of for loop is empty, set its body to the continue target.
...
Otherwise we get a wrong CFG.
llvm-svn: 79507
2009-08-20 02:56:48 +00:00
Mike Stump
8c5d7996e8
Add noreturn as a type attribute, handle printing for them and handle
...
calls to noreturn function pointers when CFG building.
llvm-svn: 77089
2009-07-25 21:26:53 +00:00
Ted Kremenek
963cc31583
Add doxygen comments and simplify expression.
...
llvm-svn: 76955
2009-07-24 06:55:42 +00:00
Ted Kremenek
3075428d16
Introduce a new variant type 'TryResult' to represent the result of
...
TryEvaluateBool instead of using a raw 'int'. This avoids any
confusion of how 'int' converts to bool, and makes the resultant code
easier to read.
Condense a bunch of 'addSuccessor()' calls in 'if ... else' to use the
ternary operator instead.
llvm-svn: 76947
2009-07-24 04:47:11 +00:00
Mike Stump
773582dbb8
Refactor and push the evaluation as late as possible.
...
llvm-svn: 76911
2009-07-23 23:25:26 +00:00
Mike Stump
8dd1b6bd10
Improve CFG support for C++ throw expressions.
...
llvm-svn: 76814
2009-07-22 22:56:04 +00:00
Ted Kremenek
b1c170e64b
Make 'SaveAndRestore' and friends reusable classes in libAnalysis.
...
llvm-svn: 76795
2009-07-22 21:45:16 +00:00
Mike Stump
3557ea840b
Wire up CFG improvements for __builtin_choose_expr.
...
llvm-svn: 76531
2009-07-21 01:46:17 +00:00
Mike Stump
8d50b6aeff
Wire up CFG improvements for do { } while () when the condition is known.
...
llvm-svn: 76530
2009-07-21 01:27:50 +00:00
Mike Stump
014b3eabd1
Wire up for statement CFG improvements for conditionals that are known.
...
llvm-svn: 76529
2009-07-21 01:12:51 +00:00
Mike Stump
23a443bea7
Wire up CFG improvements for while when the condition is known.
...
llvm-svn: 76522
2009-07-21 00:38:52 +00:00
Mike Stump
0d76d075e4
Add yet more analysis for CFGs involving conditionals that are actually constant.
...
llvm-svn: 76500
2009-07-20 23:24:15 +00:00
Ted Kremenek
0747de6aaa
Fix some fallout from CFGBuilder restructuring: all expressions that we explicitly handle have the possibility to be block-level expressions.
...
llvm-svn: 76277
2009-07-18 00:47:21 +00:00
Ted Kremenek
fe9b768aaa
Fix possible null dereference in CFG construction.
...
llvm-svn: 76261
2009-07-17 22:57:50 +00:00
Ted Kremenek
93668002c4
Restructure CFG builder to have just one visitor path instead of two. The result
...
is an algorithm that is much easier to understand and slightly more efficient.
Thanks to Mike Stump for our discussions on the CFGBuilder and his comments that
helped prompt this long needed cleanup.
llvm-svn: 76250
2009-07-17 22:18:43 +00:00
Ted Kremenek
2182259f36
Move WalkAST logic for 'ChooseExpr' to 'VisitChooseExpr'.
...
llvm-svn: 76205
2009-07-17 18:20:32 +00:00
Ted Kremenek
51d40b07a0
Move WalkAST logic for 'ConditionalOperator' into 'VisitConditionalOperator'.
...
llvm-svn: 76202
2009-07-17 18:15:54 +00:00
Ted Kremenek
0bcdc981ef
Remove stale comments.
...
llvm-svn: 76196
2009-07-17 18:04:55 +00:00
Chris Lattner
c960b3e80c
clean up this code, add the fixme back.
...
llvm-svn: 76180
2009-07-17 15:50:19 +00:00
Zhongxing Xu
3c8fa978ad
Refactor code into a new CallExpr::getDirectCallee() method. Simplify some
...
code with the new method.
llvm-svn: 76164
2009-07-17 07:29:51 +00:00
Mike Stump
31feda5585
Fixup indentation of rest of switch statement to match llvm coding
...
conventions. Also reflowed comments and removed spaces at end of
lines and fixed up 80 col violations.
llvm-svn: 76140
2009-07-17 01:31:16 +00:00
Mike Stump
48871a2880
Make noreturn functions alter the CFG.
...
llvm-svn: 76133
2009-07-17 01:04:31 +00:00
Ted Kremenek
6796fbd2e8
Move the source-level CFG from libAST to libAnalysis.
...
llvm-svn: 76092
2009-07-16 18:13:04 +00:00