Chris Lattner
855d024a83
Remove the first layer of support for "portability" warnings. This is
...
theoretically useful, but not useful in practice. It adds a bunch of
complexity, and not much value. It's best to nuke it. One big advantage
is that it means the target interfaces will soon lose their SLoc arguments
and target queries can never emit diagnostics anymore (yay). Removing this
also simplifies some of the core preprocessor which should make it slightly
faster.
Ted, I didn't simplify TripleProcessor, which can now have at most one
triple, and can probably just be removed. Please poke at it when you have
time.
llvm-svn: 47930
2008-03-05 01:18:20 +00:00
Ted Kremenek
f9c67f6056
Added support for ProgramPoints to represent ExplodedNodes in another
...
ExplodedGraph. This allows us to build "layered" ExplodedGraphs where one
simulation is layered on another.
llvm-svn: 47926
2008-03-05 00:59:43 +00:00
Chris Lattner
43c103ab1b
move this into the right file.
...
llvm-svn: 47925
2008-03-05 00:53:34 +00:00
Ted Kremenek
d5804b31c4
Plug-in transfer function "EvalCall" now takes as an argument the current
...
GRStmtNodeBuilder and is now responsible for adding its own nodes to the graph.
llvm-svn: 47923
2008-03-05 00:33:14 +00:00
Ted Kremenek
31672dbda3
Cleaned up typedefs involving StateTy so that we always use "StateTy*" instead of StateTy.
...
This is conceptually much cleaner, as it shows that the state is always a pointer.
It also makes it easier to marshall these values around across the internal APIs
of the path-sensitive engine.
llvm-svn: 47921
2008-03-05 00:11:33 +00:00
Ted Kremenek
c3c8c5762f
Make GRStmtNodeBuilder only depend on StateTy, and not the type definition
...
of the entire checker.
llvm-svn: 47920
2008-03-04 23:50:00 +00:00
Ted Kremenek
a81c9de767
Moved implementation of GRExprEngine::Nodify into GRStmtNodeBuilder. This will
...
allow us to pass the builder to plug-in transfer functions and allow those
functions to create intermediate nodes.
llvm-svn: 47919
2008-03-04 23:39:43 +00:00
Ted Kremenek
3a3f6e3946
Moved GRExprEngine::NodeSet out of GRExprEngine and made it a standalone class: ExplodedNodeSet.
...
Made GRExprEngine::NodeSet a typedef of ExplodedNodeSet.
llvm-svn: 47914
2008-03-04 23:13:06 +00:00
Ted Kremenek
c76a83f1b6
CallExprs are now no longer block-level expressions in the CFG by construction.
...
llvm-svn: 47913
2008-03-04 22:29:40 +00:00
Ted Kremenek
9f3f827e65
Added preliminary transfer function support for references.
...
llvm-svn: 47912
2008-03-04 22:16:08 +00:00
Ted Kremenek
7aedc47285
For the transfer function for CallExpr, invalidate all arguments
...
passed-by-reference to builtin functions until we have better builtin support.
llvm-svn: 47910
2008-03-04 22:01:56 +00:00
Anders Carlsson
c83008a281
Make intrinsics always_inline.
...
llvm-svn: 47902
2008-03-04 21:11:29 +00:00
Ted Kremenek
229f6773bb
For the transfer function of DeclStmt, for now initialize the values of
...
structs (local variables) to Unknown instead of Undefined. (added FIXME to initialize *members* of struct to undefined)
llvm-svn: 47901
2008-03-04 20:40:11 +00:00
Ted Kremenek
e26c37d37d
Fixed another obscure node-caching bug.
...
llvm-svn: 47898
2008-03-04 19:52:15 +00:00
Ted Kremenek
122a529ab4
Implemented "print" method for ValueState.
...
llvm-svn: 47894
2008-03-04 18:30:35 +00:00
Chris Lattner
0fdc379475
The operand to the visibility attribute is required to be a quoted string, not a bare identifier.
...
llvm-svn: 47893
2008-03-04 18:08:48 +00:00
Ted Kremenek
c490bdbdb1
TargetInfo objects now own the TargetInfoImpl objects they refer to.
...
TargetInfo::AddSecondaryTarget is now private, as it is only used during
object construction.
llvm-svn: 47891
2008-03-04 17:47:18 +00:00
Ted Kremenek
b9832d3cb4
Add transfer function support for the default initialization of static
...
variables that are pointers or integers.
llvm-svn: 47880
2008-03-04 04:18:04 +00:00
Ted Kremenek
2a30ea6269
Fixed insidious state propagation bug that would sometimes cause the state
...
to bifurcate at the wrong places and not propagate at others.
llvm-svn: 47876
2008-03-04 00:56:45 +00:00
Ted Kremenek
b2ce263891
Enhanced pretty-printing of undefined-argument errors.
...
llvm-svn: 47873
2008-03-04 00:42:54 +00:00
Chris Lattner
8e48dfe9a1
move deprecated -> attributes.c
...
llvm-svn: 47856
2008-03-03 21:17:42 +00:00
Anders Carlsson
1f604a5d6f
Temporarily rename mmintrin.h so that it won't clash with the system header. It will be renamed back once the few remaining methods have been implemented.
...
llvm-svn: 47852
2008-03-03 19:34:30 +00:00
Ted Kremenek
3f06864c25
Fixed subtle caching bug in ExplodedGraph that would cause some nodes to
...
be incorrectly merged together.
llvm-svn: 47851
2008-03-03 19:29:58 +00:00
Anders Carlsson
a5e2e60d69
Add mmintrin.h header
...
llvm-svn: 47850
2008-03-03 19:29:06 +00:00
Ted Kremenek
98c56677a7
Only allow a "noreturn" attribute to be affixed to a FunctionDecl.
...
llvm-svn: 47844
2008-03-03 16:52:27 +00:00
Ted Kremenek
7e97ed56e3
Added TODO.
...
llvm-svn: 47843
2008-03-03 16:50:00 +00:00
Ted Kremenek
8efd6b4ed8
Added FIXME.
...
llvm-svn: 47842
2008-03-03 16:47:31 +00:00
Gabor Greif
e2e5c3f394
The attribute nothrow maps to llvm attribute nounwind. Fix testcase.
...
llvm-svn: 47841
2008-03-03 14:53:09 +00:00
Gabor Greif
76ac5cf9d3
Chris added this testcase with r47837. The mail only shows one todo-warning but I see 3. Strangeness. Correcting lines 16 and 24.
...
llvm-svn: 47840
2008-03-03 14:30:39 +00:00
Chris Lattner
028d6d5792
avoid a warning.
...
llvm-svn: 47839
2008-03-03 05:57:43 +00:00
Chris Lattner
65079bd9be
fix codegen support for functions that are nothrow and noreturn.
...
llvm-svn: 47838
2008-03-03 03:45:26 +00:00
Chris Lattner
8496639787
Add a bunch of attributes, patch by Nuno Lopes.
...
llvm-svn: 47837
2008-03-03 03:28:21 +00:00
Chris Lattner
184adbfe5b
Find clang headers in the clang headers dir, search it before
...
the system headers dir. This produces an annoying warning:
clang.cpp:883: warning: ISO C++ forbids casting between pointer-to-function and pointer-to-object
I'm not sure how to remove it. :(
llvm-svn: 47836
2008-03-03 03:16:03 +00:00
Chris Lattner
c16b6b2eab
Build the clang headers.
...
llvm-svn: 47834
2008-03-03 01:23:30 +00:00
Chris Lattner
4f838791f8
Add a makefile to build and install headers.
...
llvm-svn: 47833
2008-03-03 01:22:28 +00:00
Chris Lattner
b7256cd1d6
Add codegen support for ObjC message expressions with the GNU runtime.
...
Patch by David Chisnall!
llvm-svn: 47790
2008-03-01 08:50:34 +00:00
Chris Lattner
a087ff9a66
Add codegen support for ObjC message expressions with the GNU runtime.
...
Patch by David Chisnall!
llvm-svn: 47789
2008-03-01 08:45:05 +00:00
Chris Lattner
9f64b40cbf
newline at end of file, by David Chisnall
...
llvm-svn: 47788
2008-03-01 08:43:22 +00:00
Chris Lattner
ef24b38d9c
character literals have char type in C++ and int type in C. Patch
...
by Nuno Lopes for PR2089
llvm-svn: 47787
2008-03-01 08:32:21 +00:00
Chris Lattner
c1bc541323
Add support for the CPATH, C_INCLUDE_PATH, CPLUS_INCLUDE_PATH,
...
OBJC_INCLUDE_PATH, and OBJCPLUS_INCLUDE_PATH environment variables.
Patch by Sam Bishop!
llvm-svn: 47785
2008-03-01 08:07:28 +00:00
Ted Kremenek
51e87ea210
Added extra check for calls to functions where we pass undefined values
...
as arguments.
llvm-svn: 47778
2008-02-29 23:53:11 +00:00
Steve Naroff
b96e4ab649
Fix http://llvm.org/bugs/show_bug.cgi?id=2103 .
...
llvm-svn: 47775
2008-02-29 23:30:25 +00:00
Ted Kremenek
6f5fca78e4
Add checks for function calls via a function pointer that is NULL, Undefined,
...
or otherwise a constant integer value that doesn't evaluate to an address.
llvm-svn: 47774
2008-02-29 23:14:48 +00:00
Ted Kremenek
fcf6863f09
Minor CFG optimization: don't create separate block-level expressions for DeclStmt initializers when the initializer is a literal.
...
llvm-svn: 47771
2008-02-29 22:32:24 +00:00
Ted Kremenek
36748da5a6
When AST-dumping ObjCMessageExpr, output the selector.
...
llvm-svn: 47769
2008-02-29 22:04:05 +00:00
Steve Naroff
83777fef1a
Fix http://llvm.org/bugs/show_bug.cgi?id=2106 .
...
llvm-svn: 47768
2008-02-29 21:48:07 +00:00
Gabor Greif
05fdaeaed2
Fix a crash where PI.TypeInfo has not been filled in case of missing ObjCInterfaceDecl.
...
Happens with Xcode 2.4.1 headers on test
Parser/objc-foreach-error-1.m
llvm-svn: 47767
2008-02-29 20:35:55 +00:00
Ted Kremenek
17f4dbde36
"Refinement" of hack to bound loop-traversals: visit any block at a maximum of 3 times along a given path.
...
llvm-svn: 47766
2008-02-29 20:27:50 +00:00
Chris Lattner
f4c1aa67bd
testcase for attr deprecated, by Nuno Lopes.
...
llvm-svn: 47757
2008-02-29 18:11:31 +00:00
Chris Lattner
c18bfbb6a6
make include guards more unique.
...
llvm-svn: 47754
2008-02-29 17:10:38 +00:00
Chris Lattner
8a8558bcd4
Add support for attribute(deprecated), patch by Nuno Lopes!
...
llvm-svn: 47753
2008-02-29 16:48:43 +00:00
Ted Kremenek
b2b50b7bf5
Added simple hack to reduce redundant warnings from the checker:
...
Cache the location of the error. Don't emit the same
warning for the same error type that occurs at the same program
location but along a different path.
llvm-svn: 47727
2008-02-28 20:38:16 +00:00
Ted Kremenek
e0c79380cd
Added checking for undefined results of '<<' and '>>' (shifting by too many bits, etc.)
...
This current implementation only works when both operands are concrete values; later we will add support for symbolic values.
llvm-svn: 47726
2008-02-28 20:32:03 +00:00
Eli Friedman
0c2f26dd17
Implementation of the first clang-native header, stdbool.h. Comments
...
welcome.
llvm-svn: 47724
2008-02-28 19:45:29 +00:00
Gabor Greif
031a711881
Updated clang webpage to hint at "make update". Also
...
changed "very early" to "early" when talking about
the state of clang.
llvm-svn: 47718
2008-02-28 14:59:26 +00:00
Ted Kremenek
22c62c1641
Merged ValueState and ValueStateImpl into just ValueState, with GRExprEngine::StateTy just becoming ValueState*.
...
llvm-svn: 47714
2008-02-28 10:21:43 +00:00
Ted Kremenek
93d1fed5ff
Renamed "Uninitialized" -> "Undefined" in path-sensitive value tracking engine.
...
llvm-svn: 47713
2008-02-28 09:25:22 +00:00
Ted Kremenek
49b61ab6bd
Added parsing of attributes for functions.
...
llvm-svn: 47693
2008-02-27 22:18:07 +00:00
Ted Kremenek
06516b124b
Fixed use of an uninitialized variable.
...
llvm-svn: 47691
2008-02-27 20:47:56 +00:00
Ted Kremenek
5668972630
End paths when calling a function marked "noreturn."
...
llvm-svn: 47690
2008-02-27 20:43:44 +00:00
Ted Kremenek
f7146ca3bc
Added support for attribute "noreturn."
...
llvm-svn: 47689
2008-02-27 20:43:06 +00:00
Ted Kremenek
fef05fae67
Small tweaks to the transfer function for DeclStmt: do not mark external global
...
variables as uninitialized, and only "initialize" static function variables.
llvm-svn: 47683
2008-02-27 19:21:33 +00:00
Lauro Ramos Venancio
e1938405fa
Disable internalize. Unfortunately, the configure scripts are not ready for some link time optimizations.
...
llvm-svn: 47682
2008-02-27 18:46:32 +00:00
Ted Kremenek
41dd9d0bee
Removed VarDecl::hasStaticStorage() (redundant with hasGlobalStorage())
...
Removed VarDecl::hasAutoStorage() (only used by hasLocalStorage())
Merged logic from VarDecl::hasAutoStorage() into VarDecl::hasLocalStorage(),
and expanded (fixed) the logic of hasLocalStorage() to handle Extern and PrivateExtern.
Renamed Expr::hasStaticStorage() to Expr::hasGlobalStorage().
llvm-svn: 47681
2008-02-27 18:39:48 +00:00
Ted Kremenek
fd8352c2b9
Added string "[CHECKER]" to the output diagnostics produced by the GRSimpleVals analysis.
...
llvm-svn: 47678
2008-02-27 17:56:16 +00:00
Ted Kremenek
40d876376d
Fixed edge-case in CFG construction where goto jumps would not always get
...
properly back-patched.
llvm-svn: 47675
2008-02-27 17:33:02 +00:00
Lauro Ramos Venancio
7143697def
A, q and Z are valid LLVM inline asm constraints.
...
Fix regression in Applications/ClamAV/clamscan.
llvm-svn: 47673
2008-02-27 16:53:36 +00:00
Ted Kremenek
a1523a38f9
Bug fix in CFG construction: Properly register the loop head as the implicit
...
successor of blocks created above it.
llvm-svn: 47666
2008-02-27 07:20:00 +00:00
Ted Kremenek
cbb21b61c8
Small fix to VisitLVal: this method can be called on Block-Level expressions.
...
In such cases, handle them just like Visit().
llvm-svn: 47665
2008-02-27 07:04:16 +00:00
Ted Kremenek
1c64daba5b
When analyzing a function, eagerly create symbolic values for all
...
globals/parameters at the beginning of the analysis.
llvm-svn: 47664
2008-02-27 06:47:26 +00:00
Ted Kremenek
c025841dd4
Header file cleanups: reduce number of includes; move ValueState.h into include directory tree.
...
llvm-svn: 47661
2008-02-27 06:07:00 +00:00
Ted Kremenek
947528f000
Similar bug fix to r47650; when processing CallExprs if we did not generate an
...
ExplodedNode for the Callee subexpression we would not evaluate the CallExpr
transfer function.
llvm-svn: 47651
2008-02-27 00:46:25 +00:00
Ted Kremenek
76a2e985c3
Fixed bug in the core transfer function logic for CallExprs where we would
...
sometimes skip evaluating all the arguments when some arguments would not
create new ExplodedNodes.
llvm-svn: 47650
2008-02-27 00:44:11 +00:00
Ted Kremenek
39321aa199
Fixed CFG construction bug that occurred when a condition for a loop spanned
...
multiple basic blocks (which can happen when they contain '&&', '||', '?'). The
bug was that the loop backedge when to the last block in the loop condition, not
the first.
llvm-svn: 47649
2008-02-27 00:28:17 +00:00
Chris Lattner
bb7bc8d4f0
fix an interaction between -isystem . and isysroot.
...
llvm-svn: 47646
2008-02-26 23:46:22 +00:00
Ted Kremenek
6217dffec3
Fix bug when processing '?' operator: invalidate the old "Uninitialized" value of the block-level expression for ?.
...
llvm-svn: 47645
2008-02-26 23:37:01 +00:00
Ted Kremenek
448538d860
Added boilerplate for plug-in transfer function support for CallExprs.
...
GRSimpleVals performs the following action: invalidate all values passed-by-reference.
llvm-svn: 47638
2008-02-26 23:04:29 +00:00
Ted Kremenek
dea8c07899
Don't emit divide-by-zero errors when we divide by an unknown (not
...
uninitialized) value. At this point we're just too imprecise.
llvm-svn: 47636
2008-02-26 22:27:51 +00:00
Ted Kremenek
dc1b0114ed
Changed VarDecl::hasGlobalStorage() to be the negation of hasLocalStorage().
...
Before it was the negation of hasAutoStorage(), which is incorrect.
"Register" storage for Decls do not indicate global variables.
llvm-svn: 47630
2008-02-26 21:57:11 +00:00
Lauro Ramos Venancio
01a72ff5d3
Implement codegen for the following static var init.
...
void g() {
static char a[10];
static char *b = a;
}
Now we can compile wget!
llvm-svn: 47627
2008-02-26 21:41:45 +00:00
Ted Kremenek
e9f30d3288
Removed static analysis-specific diagnostics from DiagnosticKinds.def.
...
Use custom diagnostics for static analysis checkers. Added warnings
for dereferencing uninitialized values and divide-by-zeroes.
llvm-svn: 47626
2008-02-26 21:31:18 +00:00
Ted Kremenek
c7ba873dc7
Removed hack with toggling the signedness flag of the APSInt stored
...
in an EnumConstantDecl. This was made possible because of a recent fix
in the parser:
http://llvm.org/viewvc/llvm-project?rev=47581&view=rev
llvm-svn: 47624
2008-02-26 21:04:29 +00:00
Ted Kremenek
bc54390803
Small fixes to shore up overhauling of transfer function logic for '&&' and '||.
...
llvm-svn: 47620
2008-02-26 19:40:44 +00:00
Lauro Ramos Venancio
8af648ac55
Fix a bug in ConvertAsmString function.
...
llvm-svn: 47618
2008-02-26 19:19:58 +00:00
Ted Kremenek
9b69ed398b
optimization: no longer create ExplodedNodes for IntegerLiteral and
...
CharacterLiteral expressions.
llvm-svn: 47617
2008-02-26 19:17:09 +00:00
Ted Kremenek
f3a4b9617e
Major cleanup of the transfer function logic for '&&', '||', and '?'. We
...
now store in the state essentially which branch we took. This removes
a bunch of bogus assumptions (and likely bugs), reduces the complexity of
the implementation, and facilitates more optimizations.
llvm-svn: 47613
2008-02-26 19:05:15 +00:00
Lauro Ramos Venancio
c9fbd7301a
Convert x86 target specific inline asm constraints to LLVM.
...
llvm-svn: 47609
2008-02-26 18:33:46 +00:00
Ted Kremenek
ce3563445c
Fixed inverted condition.
...
llvm-svn: 47590
2008-02-26 03:44:25 +00:00
Ted Kremenek
5affb58dd6
Do include ParenExpr in the CFG; only include their subexpression.
...
llvm-svn: 47588
2008-02-26 02:37:08 +00:00
Ted Kremenek
06b671097d
Added lazy "symbolication" of parameter variables and global variables.
...
Added recording of divide-by-zero and divide-by-uninitialized nodes.
llvm-svn: 47586
2008-02-26 02:15:56 +00:00
Chris Lattner
b7e656b177
add parsing, ast building and pretty printing support for C++ throw expressions.
...
Patch by Mike Stump!
llvm-svn: 47582
2008-02-26 00:51:44 +00:00
Chris Lattner
7768313c13
Fix PR2092 by making sure the sign of the enum value follows the
...
sign of its type in the early exit case. No testcase, because this
doesn't manifest as a failure.
llvm-svn: 47581
2008-02-26 00:33:57 +00:00
Chris Lattner
a3343a86ea
fix const correctness.
...
llvm-svn: 47580
2008-02-26 00:32:36 +00:00
Ted Kremenek
f699882a76
Fixed bug in CFG construction when a CompoundStmt ended with a NullStmt.
...
This caused the whole body to get dropped from the CFG.
llvm-svn: 47579
2008-02-26 00:22:58 +00:00
Ted Kremenek
733f810600
Added FIXME.
...
llvm-svn: 47578
2008-02-26 00:20:52 +00:00
Ted Kremenek
7845b2607a
Minor bug fix in LiveVariables: don't "kill" decls referenced by a DeclStmt
...
that aren't VarDecls.
llvm-svn: 47572
2008-02-25 22:28:54 +00:00
Eli Friedman
0992b38a78
Fix a little typo... per cfe-dev, this was apparently causing test
...
failures on OS X in some cases. (Thank you valgrind.)
llvm-svn: 47568
2008-02-25 22:11:40 +00:00
Chris Lattner
f5c619f98c
clarify comment, this is undefined behavior in any case, even if it only
...
bits VC++ right now.
llvm-svn: 47565
2008-02-25 21:38:21 +00:00
Ted Kremenek
3ed28de5cc
doxygenify some comments.
...
llvm-svn: 47564
2008-02-25 21:33:32 +00:00
Ted Kremenek
3a6fd9c177
Better handling of calls to functions via function pointers.
...
llvm-svn: 47562
2008-02-25 21:16:03 +00:00