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
Chris Lattner
eb85ab44f2
convert tabs to spaces, patch by Mike Stump!
...
llvm-svn: 47560
2008-02-25 21:04:36 +00:00
Lauro Ramos Venancio
4400a85ce8
Revert an incorrect part of my previuos patch.
...
llvm-svn: 47553
2008-02-25 19:08:51 +00:00
Lauro Ramos Venancio
8983891531
Fix PR2086.
...
llvm-svn: 47551
2008-02-25 19:03:15 +00:00
Ted Kremenek
eb079dc502
Fixed bug in RemoveDeadBindings when performing the mark-and-sweep over the
...
symbolic store: VarDecl's inserted into the sweep may not always bind to
anything; handle this special case just like bindings to uninitialized values.
llvm-svn: 47550
2008-02-25 18:56:23 +00:00
Ted Kremenek
3866746569
Expanded transfer function support for divide-by-zero checking to include
...
"remainder-by-zero" checking (operator '%').
llvm-svn: 47549
2008-02-25 18:42:54 +00:00
Ted Kremenek
b23cc7191f
Added hack to transfer function logic to handle the case where a DeclRefExpr
...
wrapping an EnumConstantDecl evaluates to an integer type that has a different
signedness than the APSInt stored in the EnumConstantDecl. Will file a Bugzilla
report.
llvm-svn: 47548
2008-02-25 18:34:45 +00:00
Ted Kremenek
6f92e2294a
Added transfer function support for checking for divide-by-zero errors.
...
llvm-svn: 47547
2008-02-25 17:51:31 +00:00
Chris Lattner
cb0d62c70d
enable digraphs for C94, thanks to Neil for pointing this out.
...
llvm-svn: 47543
2008-02-25 04:01:39 +00:00
Chris Lattner
5329e7e5ed
Fix PR2090, a typo in digraph processing.
...
llvm-svn: 47540
2008-02-24 19:05:57 +00:00
Chris Lattner
89a62c8fff
Update comment.
...
llvm-svn: 47539
2008-02-24 19:04:33 +00:00
Steve Naroff
f0ed31aafe
Move the initialization of SEL/objc_selector from Sema::Sema() to Sema::ActOnTranslationUnitScope() and make sure the type/struct get inserted into the translation unit scope.
...
Bug submitted by David Chisnall (thanks!).
llvm-svn: 47538
2008-02-24 16:25:02 +00:00
Ted Kremenek
72be068ab3
Two more Windows-related fixes:
...
- More enum signeness bitfield fixes (MSVC treats enums as signed).
- Fixed in Lex/HeaderSearch.cpp an unsafe copy between two
HeaderSearch::PerFileInfo entries in a common vector. The copy involved two
calls to getFileInfo() within the assignment; these calls could have
side-effects that enlarged the internal vector, and with MSVC this would
invalidate one of the values in the assignment.
Patch by Argiris Kirtzidis!
llvm-svn: 47536
2008-02-24 03:55:14 +00:00
Ted Kremenek
d87eef89c8
In FileManager: use full paths to unique files and directories on Windows,
...
since inodes are bogus abstraction on that platform.
Patch by Argiris Kirtzidis!
llvm-svn: 47535
2008-02-24 03:15:25 +00:00
Eli Friedman
401675b0de
Minor code cleanup.
...
llvm-svn: 47530
2008-02-23 07:32:49 +00:00
Ted Kremenek
f948d2a75f
Change encoding of TokenKind in IdentifierTable to be of type "unsigned"
...
instead of TokenKind because of signedness issues with MSVC and enums.
Patch from Argiris Kirtzidis.
llvm-svn: 47515
2008-02-23 01:05:54 +00:00
Ted Kremenek
652d18e37c
Patch from Argiris Kirtzidis:
...
The patch fixes some debug assertions that the msvcrt throws:
1)
- if (isprint(value) && value < 256) {
+ if (value < 256 && isprint(value)) {
isprint() does an assertion check of its own for value < 256; check value before calling it to prevent it.
2)
- Stmt->Names.push_back(std::string(&data[0], data.size()));
+ if (data.size() == 0)
+ Stmt->Names.push_back(std::string());
+ else
+ Stmt->Names.push_back(std::string(&data[0], data.size()));
If data.size() == 0 then data[0] throws "out of range" assertion.
llvm-svn: 47512
2008-02-23 00:52:04 +00:00
Ted Kremenek
b0b7d28f67
Fixed horrid bug in LiveVariables analysis where we were only merging at
...
confluence points the liveness information for variables (Decls) and NOT
block-level expressions.
llvm-svn: 47506
2008-02-22 23:17:20 +00:00
Ted Kremenek
c77f34daad
Modified clang driver option -dump-live-variables to (optionally) use the
...
--analyze-function option to analyze specific functions.
llvm-svn: 47498
2008-02-22 20:13:09 +00:00
Ted Kremenek
88329bf0ea
clang driver options --dump-cfg and --view-cfg now (optionally) use the
...
--analyze-function option to dump/view the CFGs of specific functions.
llvm-svn: 47497
2008-02-22 20:00:31 +00:00
Ted Kremenek
76c03b4a55
When running the GRSimpleVals analysis, skip functions that do not
...
appear in a file.
llvm-svn: 47491
2008-02-22 19:10:58 +00:00
Ted Kremenek
43638a87e5
Punt on unifying symbolic lvalues. This won't be needed for many checkers.
...
llvm-svn: 47489
2008-02-22 18:41:59 +00:00
Ted Kremenek
cb507025d4
Added "assumption" logic for lval::FuncVal and lval::GotoLabel, and simplified
...
assumption logic for lval::DeclVal.
llvm-svn: 47466
2008-02-22 00:54:56 +00:00
Ted Kremenek
51017b5432
Bug fix: For transfer function for unary "!", compare the subexpression value
...
against '0' of the same bit-width.
llvm-svn: 47465
2008-02-22 00:42:36 +00:00
Ted Kremenek
20c91421fe
Bug fix in liveness: Only compute liveness information for VarDecls.
...
llvm-svn: 47464
2008-02-22 00:34:10 +00:00
Ted Kremenek
eb653882de
Return "Unknown" when using the value of a function pointer whose value
...
is symbolic.
llvm-svn: 47463
2008-02-21 23:17:39 +00:00
Ted Kremenek
6d2bbd9467
Regression fix: Handle binary operators where both the left and right
...
operands are symbolic lvalues.
llvm-svn: 47459
2008-02-21 22:08:33 +00:00
Ted Kremenek
9f1ed12bc4
Added transfer function support for dispatching to functions we don't know
...
about. The default logic is to invalidate the values of all values
passed-by-reference.
llvm-svn: 47456
2008-02-21 19:46:04 +00:00
Nate Begeman
b16d53ea31
add a test case
...
llvm-svn: 47455
2008-02-21 19:44:16 +00:00
Nate Begeman
d45d38d2b7
Handle __attribute__((annotate("string")))
...
llvm-svn: 47451
2008-02-21 19:30:49 +00:00
Ted Kremenek
e82c7a44d6
RemoveDeadBindings should now check for UninitalizedVal, as it is a now
...
an error to cast it to LVal.
llvm-svn: 47450
2008-02-21 19:30:14 +00:00
Ted Kremenek
7328fa6ec8
Regression fix: Handle pointer arithmetic in unary ++/--.
...
llvm-svn: 47449
2008-02-21 19:29:23 +00:00
Ted Kremenek
7f8ebb73af
Removed bogus assertions regard LValues binding to UnknownVal; they can
...
do so implicitly.
llvm-svn: 47447
2008-02-21 19:15:37 +00:00
Ted Kremenek
d21429a8e7
Remove incorrect casts from UnknownVal to NonLVal.
...
llvm-svn: 47446
2008-02-21 19:10:12 +00:00
Ted Kremenek
b1e3218125
FIX: Promote the correct operand.
...
llvm-svn: 47445
2008-02-21 18:46:24 +00:00
Ted Kremenek
7e4861b3c1
Simplified and generalized transfer function logic for casts, allowing
...
the transfer function to be invoked without an Expr* for the Cast operation.
Added implicit promotions to the transfer function logic for compound
assignments.
llvm-svn: 47444
2008-02-21 18:43:30 +00:00
Ted Kremenek
d2332f9625
Added transfer function support for sizeof(void)
...
llvm-svn: 47443
2008-02-21 18:15:29 +00:00
Eli Friedman
c62dd9d345
Some const initializer tests for stuff I just committed.
...
llvm-svn: 47442
2008-02-21 18:07:36 +00:00
Ted Kremenek
7f0639b039
Major cleanup of path-sensitive analysis engine and the current analysis
...
based on constant. prop. and limited symbolics.
- Renamed class: RValue -> RVal, LValue -> LVal, etc.
- Minor method renamings and interface cleanups.
- Tightened the RVal "type system" so that UninitializedVal and UnknownVal
cannot be cast to LVal or NonLVal. This forces these corner cases values
to be explicitly handled early before being dispatched to plug-in transfer
function logic.
- Major cleanup in the transfer function logic for binary and unary operators.
Still fixing some regressions, but we now explicitly handle Uninitialized
and Unknown values in a more rigorous way.
llvm-svn: 47441
2008-02-21 18:02:17 +00:00
Eli Friedman
a243311f1d
Clean up constant implicit cast emission; fixes a few edge cases
...
invlolving implicit casts that cause both a decay to pointer type and a
type conversion.
llvm-svn: 47440
2008-02-21 17:57:49 +00:00
Eli Friedman
115e989985
Fix brace-enclosed string initializers for char arrays. From pr2079,
...
ahtough I had the fix in my tree previously.
llvm-svn: 47439
2008-02-21 17:45:41 +00:00
Gabor Greif
5c27a96967
Change variable name to Tq (from TQ)
...
because silly gcc 3.4.6 barfs on this
construct.
Type.h defines an "enum TQ", which makes
the parser to err.
llvm-svn: 47438
2008-02-21 17:40:55 +00:00
Gabor Greif
4999168309
Added classes SolarisTargetInfo and
...
SolarisSparcV8TargetInfo to be able
to handle "sparc-" triple prefixes.
Please be aware that this is a minimal
kludge, that pretty much duplicates
the features of DarwinPowerPCTargetInfo,
and also incorrectly uses stuff from
the PPC namespace.
But in result "make test" now passes
a lot of tests, the notable exceptions
being the objc rewrite tests and
mandel.c.
llvm-svn: 47436
2008-02-21 16:29:08 +00:00
Chris Lattner
3b418d8446
implement codegen support for sizeof(void), fixing PR2080.
...
llvm-svn: 47429
2008-02-21 05:45:29 +00:00
Chris Lattner
a2417c9d8b
add some semantic checks for address spaces.
...
llvm-svn: 47423
2008-02-21 01:42:41 +00:00
Chris Lattner
05d8cca8b6
add a fixme.
...
llvm-svn: 47421
2008-02-21 01:32:57 +00:00
Chris Lattner
788404f312
Collect and build and process type attributes on pointers. For
...
example, we can now correctly build the type for things like:
_AS1 float * _AS2 *B;
llvm-svn: 47420
2008-02-21 01:32:26 +00:00
Chris Lattner
ed71d60f4d
move some code, no other change.
...
llvm-svn: 47419
2008-02-21 01:08:11 +00:00
Chris Lattner
efedd9ec67
move type attribute processing into the creatively named ProcessTypeAttributes method.
...
llvm-svn: 47418
2008-02-21 01:07:18 +00:00
Chris Lattner
ee0d271819
Correctly handle address space qualifiers in declspecs. This
...
allows us to correctly handle stuff like:
_AS1 float *B;
and to reject stuff like:
_AS1 _AS2* x;
llvm-svn: 47417
2008-02-21 00:48:22 +00:00
Chris Lattner
556676a20b
move ConvertDeclSpecToType into Sema
...
llvm-svn: 47415
2008-02-20 23:53:49 +00:00
Chris Lattner
dcee3a9630
rename some methods.
...
llvm-svn: 47414
2008-02-20 23:25:22 +00:00
Chris Lattner
f179190206
Use getKind() in HandleDeclAttribute instead of decoding the string inline.
...
llvm-svn: 47413
2008-02-20 23:17:35 +00:00
Chris Lattner
f18c743222
add a method to AttributeList that converts an identifier to an enum.
...
llvm-svn: 47412
2008-02-20 23:14:47 +00:00
Nate Begeman
7dd8e72de9
Tabs are the enemy
...
llvm-svn: 47410
2008-02-20 22:57:40 +00:00
Chris Lattner
dba738e740
add some code that will be used to remove processed attrs from
...
declspec, it is currently nonfunctional though.
llvm-svn: 47405
2008-02-20 22:04:11 +00:00
Chris Lattner
19d8a38861
Change ConvertDeclSpecToType to break out of switch instead of
...
returning directly. This allows us to factor handling of _Complex.
llvm-svn: 47404
2008-02-20 21:40:32 +00:00
Chris Lattner
445fcabff7
Alternate address spaces work:
...
rename QualType::getQualifiers to getCVRQualifiers.
Add some fixme's and clean up some code relevant to qualifiers.
Change ASQualType to contain a Type* instead of a QualType.
Any CVR qualifiers should be on the outer qual type.
llvm-svn: 47398
2008-02-20 20:55:12 +00:00
Ted Kremenek
34e83b80fd
Implemented transfer function logic for unary '+'
...
llvm-svn: 47357
2008-02-20 04:12:31 +00:00
Ted Kremenek
b597bb9c4a
Placed transfer function logic for dereferences in its own method, while at
...
the same time clearing up some logic of how the unary '*' operator is processed.
llvm-svn: 47356
2008-02-20 04:02:35 +00:00
Lauro Ramos Venancio
ca0fd02cdd
Improve non-const initializer implementation.
...
llvm-svn: 47347
2008-02-19 22:04:22 +00:00
Lauro Ramos Venancio
91fdb9ec43
Implement CodeGenModule::getMemSetFn method.
...
llvm-svn: 47346
2008-02-19 22:01:01 +00:00
Ted Kremenek
4ae9985285
Added missing case in constant propagation logic for handling the Xor of
...
two concrete integer values.
llvm-svn: 47341
2008-02-19 20:53:37 +00:00
Ted Kremenek
9c08512656
Added special handling for UninitializedVals for the transfer function logic
...
for pointer dereferences.
llvm-svn: 47340
2008-02-19 20:53:06 +00:00
Ted Kremenek
4baef06bbc
Implemented "getType()" for symbolic values representing the "contents" of
...
another symbolic value.
llvm-svn: 47339
2008-02-19 20:51:40 +00:00
Lauro Ramos Venancio
e2162c6549
Simplify aggregate initilizer implementation. Use the CodeGenModule::EmitConstantExpr method when
...
possible.
Fix mediabench/mpeg2/mpeg2dec test.
llvm-svn: 47336
2008-02-19 19:27:31 +00:00
Ted Kremenek
9fd2531b5e
Fixed transfer function for casts to always evaluate the effects of the
...
cast's subexpression even if the cast itself has no effect.
llvm-svn: 47335
2008-02-19 18:52:54 +00:00
Ted Kremenek
fe0b5740ce
Added transfer function support for casting to "void".
...
llvm-svn: 47333
2008-02-19 18:47:04 +00:00
Chris Lattner
d2a02fe840
fix the second half of PR2041: __restrict is ok in c90 mode, even if
...
restrict isn't.
llvm-svn: 47316
2008-02-19 06:46:10 +00:00
Ted Kremenek
86dc7ae58e
Fixed bug classof() bug with RValues that could cause an UninitializedVal
...
or UnknownVal to be interpreted as an actual NonLValue/LValue.
llvm-svn: 47304
2008-02-19 02:34:18 +00:00
Ted Kremenek
dbb1a3724c
For now, --grsimple skips analyzing functions in header files.
...
llvm-svn: 47303
2008-02-19 02:33:31 +00:00
Ted Kremenek
8b51dc2754
Added back explicit state/node creation when visiting IntegerLiterals and
...
CharacterLiterals. This may not be a permanent solution; it doesn't cost that
much, however, to create a few additional states, and solves a whole bunch
of edge cases when handling ?, ||, and &&.
llvm-svn: 47299
2008-02-19 02:01:16 +00:00
Ted Kremenek
e0188e6ad7
Added boilerplate transfer function support for CallExprs.
...
llvm-svn: 47298
2008-02-19 01:44:53 +00:00
Nate Begeman
22011e90c9
Allow ArraySubscriptExpr to be a base node for vector dereference. This
...
allows you to do things like
typedef __attribute__(( ocu_vector_type(4))) float float4;
float4 *x;
float y = x[0][2];
llvm-svn: 47295
2008-02-19 01:11:03 +00:00
Ted Kremenek
58cc30b64b
Added FIXME for properly handling local arrays using symbolic LValues.
...
For now we just treat their values as "Unknown."
llvm-svn: 47294
2008-02-19 00:29:51 +00:00
Ted Kremenek
0f7130adc4
--grsimple now reports the number of nodes in the ExplodedGraph for
...
an analyzed function.
GRExprEngine now records stores to "uninitialized lvalues" (which are sinks in
the ExplodedGraph).
llvm-svn: 47293
2008-02-19 00:22:37 +00:00
Lauro Ramos Venancio
c58fc4052e
A global without initializer must be emitted as weak.
...
Fix Olden/bh test.
llvm-svn: 47292
2008-02-19 00:04:15 +00:00
Ted Kremenek
a6f63d94a5
Added "size()" and "empty()" methods to ExplodedGraphImpl.
...
llvm-svn: 47289
2008-02-18 23:00:23 +00:00
Ted Kremenek
346169fa3d
Added more assertions and checks in transfer function logic to check for
...
UninitializedVals and UnknownVals.
llvm-svn: 47288
2008-02-18 22:57:02 +00:00
Lauro Ramos Venancio
dec89733a7
Implement multi-dimension array initalizer.
...
Fix McCat/08-main test.
llvm-svn: 47286
2008-02-18 22:44:02 +00:00
Ted Kremenek
86e793937a
Running -grsimple now emits diagnostics about the time spent analyzing each function. Will
...
probably make this a separate command line option later.
Added "--analyze-function" option to the driver to (gradually) allow different
analyses to only be run on specific functions. Currently only --grsimple uses
this option.
llvm-svn: 47285
2008-02-18 21:21:23 +00:00
Ted Kremenek
3b1beb224b
Temporary solution to push analysis through to analyzing PCRE.
...
We will implement symbol "unification" later.
llvm-svn: 47284
2008-02-18 21:19:49 +00:00
Anders Carlsson
196aa53300
Add more supported constraints.
...
llvm-svn: 47270
2008-02-18 17:00:25 +00:00
Steve Naroff
f631ae2cf8
Tweak fix for http://llvm.org/bugs/show_bug.cgi?id=2000 to work across typedefs.
...
llvm-svn: 47269
2008-02-18 15:14:59 +00:00
Anders Carlsson
6b5b42be41
More bitfield improvements.
...
llvm-svn: 47260
2008-02-18 07:13:09 +00:00
Anders Carlsson
9195e08e5e
Fix bug where we would report the wrong value for __alignof__ with an expr that is not a type.
...
llvm-svn: 47259
2008-02-18 07:10:45 +00:00
Nate Begeman
d8c4156172
Turn handling of parameter attributes back on, fixing the ObjC breakage
...
llvm-svn: 47246
2008-02-17 21:20:31 +00:00
Nate Begeman
d811e74786
Revert this temporarily, it's breaking objc :/
...
llvm-svn: 47245
2008-02-17 21:04:23 +00:00
Nate Begeman
f0e4a52211
Handle parameter attributes
...
llvm-svn: 47243
2008-02-17 21:02:04 +00:00
Chris Lattner
b080ed504e
Fix PR2042. One remaining issue: we don't currently diagnose
...
int foobar(int);
int foobar() {}
which requires ifdef'ing out a testcase in predefined-function.c.
llvm-svn: 47236
2008-02-17 19:31:09 +00:00
Anders Carlsson
ffd0992247
Change alignment for doubles to 32 bits which is what X86 has.
...
llvm-svn: 47234
2008-02-17 03:40:02 +00:00
Eli Friedman
f7e92acaba
Implemnt isVariablyModifiedType correctly.
...
llvm-svn: 47233
2008-02-17 00:59:11 +00:00
Chris Lattner
df53e20f2d
implement codegen support for aggregates casted to void.
...
llvm-svn: 47226
2008-02-16 23:55:16 +00:00
Eli Friedman
1d88371663
A couple of msvc compile fixes from the ml; I haven't tested with msvc,
...
but the fixes are reasonable.
llvm-svn: 47224
2008-02-16 23:17:23 +00:00
Lauro Ramos Venancio
bada8d4b5b
Implement extern block var.
...
llvm-svn: 47223
2008-02-16 22:30:38 +00:00
Anders Carlsson
f13b1efa75
Add more tests
...
llvm-svn: 47217
2008-02-16 19:51:36 +00:00
Anders Carlsson
6e3ace5205
Better handling of the aligned attribute.
...
llvm-svn: 47216
2008-02-16 19:51:27 +00:00
Anders Carlsson
acea415ec5
More comments from Chris.
...
llvm-svn: 47210
2008-02-16 03:37:41 +00:00
Chris Lattner
27055194b7
Fix CheckEndOfDirective to diagnose lines that contain macros that expand to
...
zero tokens. This fixes PR2045, thanks to Neil for finding another
incredibly subtle corner case :)
llvm-svn: 47203
2008-02-16 01:20:36 +00:00
Anders Carlsson
3ea23a45d9
Make sizeof and __alignof work correctly with packed structs.
...
llvm-svn: 47202
2008-02-16 01:20:23 +00:00
Ted Kremenek
074965c5cb
Further cleanup. Moved definitions for SymbolManager and ValueManager into
...
their own [.cpp;.h] files.
llvm-svn: 47201
2008-02-16 01:12:31 +00:00
Anders Carlsson
4b93979008
Fix typo
...
llvm-svn: 47199
2008-02-16 00:39:40 +00:00
Anders Carlsson
28e7108142
Handle packed attribute correctly
...
llvm-svn: 47197
2008-02-16 00:29:18 +00:00
Anders Carlsson
214260e04a
Address comments from Chris.
...
llvm-svn: 47195
2008-02-16 00:24:09 +00:00
Anders Carlsson
8321a155a5
Store attributes in a global hash map instead.
...
llvm-svn: 47193
2008-02-15 23:57:38 +00:00
Anders Carlsson
e5070069c8
Store attributes in a global hash map instead.
...
llvm-svn: 47191
2008-02-15 23:30:50 +00:00
Ted Kremenek
6698cb8aa3
Refactored code for transfer functions for binary operators involving two LValues.
...
Fixed bug in transfer functions for sizeof(*); we were incorrectly evaluating to
a value of the wrong type.
Fixed bug in transfer functions for compound assignments where we did not properly
handle assignments involving dereferences of symbolic values.
llvm-svn: 47190
2008-02-15 23:15:23 +00:00
Lauro Ramos Venancio
10984b2ee9
Set Ubuntu 7.10 c++ include path.
...
llvm-svn: 47186
2008-02-15 22:36:38 +00:00
Lauro Ramos Venancio
ace55dac39
Add c++ to "inferlanguage"
...
llvm-svn: 47185
2008-02-15 22:35:25 +00:00
Ted Kremenek
8db4b110c3
Added transfer function support for conditional branches with a NULL condition (e.g., "for(;;)").
...
Fixed bug in transfer function for compound assignment operators when both operands where variables but had a non-pointer type (we fired an assertion).
llvm-svn: 47184
2008-02-15 22:29:00 +00:00
Ted Kremenek
e81734b01c
Simplified transfer function logic for ++/-- operators.
...
Added more boilerplate transfer function support for pointer arithmetic.
Added more pretty-printing support for symbolic constraints.
Added transfer function support for handling enum values.
Minor pointer types cleanup in ExplodedGraphImpl.
llvm-svn: 47183
2008-02-15 22:09:30 +00:00
Ted Kremenek
c4bf7ef744
Added predicate function "UnaryOperator::isIncrementOp()".
...
llvm-svn: 47181
2008-02-15 22:04:52 +00:00
Eli Friedman
5c9490924c
Don't call non-existent method... sorry about the spam; the fix seemed
...
trivial, but I forgot that method doesn't exist yet.
llvm-svn: 47175
2008-02-15 19:53:52 +00:00
Eli Friedman
b26be3d053
Get rid of unused variable warning.
...
llvm-svn: 47174
2008-02-15 19:49:39 +00:00
Eli Friedman
bd258284e0
Split out incomplete arrays from VariableArrayType into
...
IncompleteArrayType. This should make code dealing with both incomplete
and variable length arrays much more readable, plus it allows properly
making the distinction between isVariableArrayType() and
isVariablyModifiedType(). The patch is a little big, but it's
strightforward. so I don't think there should be any issues.
llvm-svn: 47165
2008-02-15 18:16:39 +00:00
Chris Lattner
287c734075
Fix PR2041: restrict is not a keyword in c90.
...
llvm-svn: 47160
2008-02-15 18:02:59 +00:00
Eli Friedman
9e805b24fd
Part of clearing up the whole VariableArrayType + incomplete arrays
...
thing. Some cleanups that can be done independently of the fix.
llvm-svn: 47158
2008-02-15 12:53:51 +00:00
Eli Friedman
783a5c262b
Remove unnecessary references to VariableArrayType from Analysis.
...
llvm-svn: 47157
2008-02-15 12:28:27 +00:00
Eli Friedman
a682d39639
Remove useless parameter from isConstantSizeType.
...
llvm-svn: 47156
2008-02-15 12:20:59 +00:00
Anders Carlsson
1a84106117
Get rid of AttributeList in the AST and use the new Attr class instead
...
llvm-svn: 47155
2008-02-15 07:04:12 +00:00
Eli Friedman
78e47634b2
Get rid of outdated code that masks type errors. Fixes PR2036.
...
llvm-svn: 47154
2008-02-15 06:56:02 +00:00
Eli Friedman
e9d0954c06
Nevermind, these tests work... I messed up my testing.
...
llvm-svn: 47153
2008-02-15 06:29:53 +00:00
Eli Friedman
a01cfa75eb
Partial fix for struct compatibility; there's still something messy
...
going on with mixing scopes, though.
llvm-svn: 47152
2008-02-15 06:03:44 +00:00
Ted Kremenek
bc0ba39a1e
Added boilerplate transfer function support for pointer arithmetic operations.
...
llvm-svn: 47147
2008-02-15 00:52:26 +00:00
Ted Kremenek
e161afc4dd
Added --grsimple-view option to clang driver; this is the same as
...
--grsimple except that it visualizes the ExplodedGraph using dot and
outputs the current function being analyzed. --grsimple is now silent
except when it emits diagnostics.
llvm-svn: 47146
2008-02-15 00:35:38 +00:00
Ted Kremenek
8e6f6e05c3
Added "symbol iterators" for RValues, allowing easy iteration over the symbols
...
referenced by an RValue, instead of having to query the type of the RValue.
Modified ValueState::RemoveDeadBindings to also prune dead symbols.
llvm-svn: 47142
2008-02-14 23:25:54 +00:00
Ted Kremenek
5b70a22656
When visualizing ExplodedNodes created by GRExprEngine, color nodes with
...
null-dereferences or bad control-flow red.
llvm-svn: 47140
2008-02-14 22:54:53 +00:00
Ted Kremenek
5d8bab7ecd
Don't analyze functions when we have parse errors.
...
llvm-svn: 47139
2008-02-14 22:54:17 +00:00
Ted Kremenek
d3122cb83c
Renamed GRConstants => GRSimpleVals.
...
Moved driver logic for --grsimple to GRSimpleVals.cpp.
llvm-svn: 47137
2008-02-14 22:36:46 +00:00
Ted Kremenek
bd8957b6b2
#include cleanups in GRExprEngine.cpp/GRExprEngine.h. Moved GRExprEngine to
...
clang namespace.
llvm-svn: 47136
2008-02-14 22:16:04 +00:00
Ted Kremenek
64de207c52
Partitioned definition/implementation of GRExperEngine into .h and .cpp.
...
Still some cleanup to do, but this initial checkin compiles and runs correctly.
llvm-svn: 47135
2008-02-14 22:13:12 +00:00
Ted Kremenek
cf7cf8e8b0
Migrated transfer functions for binary operators for simple value tracking
...
from RValues to GRTransferFuncs/GRSimpleVals.
llvm-svn: 47131
2008-02-14 19:37:24 +00:00
Chris Lattner
99a59b6ba0
ParseCompoundStatementBody expects to only be called with { as the current
...
token. Diagnose when the { is missing in objc @try blocks instead of aborting.
llvm-svn: 47130
2008-02-14 19:27:54 +00:00
Ted Kremenek
4bad8f7ad6
Migrated transfer functions for unary "~" and "-" to GRTransferFuncs/GRSimpleVals.
...
llvm-svn: 47126
2008-02-14 18:40:24 +00:00
Ted Kremenek
3ca942969e
Started partitioning of transfer function logic (and thus the policy behind
...
these operations) into GRTransferFuncs and its subclasses. Originally all
of this logic was handled by the class RValue, but in reality different
analyses will want more flexibility on how they evaluate different values.
Transfer functions migrated so far: "Cast"
llvm-svn: 47125
2008-02-14 18:28:23 +00:00
Ted Kremenek
747c777bde
Moved Rvalues.h from "Analysis/" to "include/clang/Analysis/PathSensitive".
...
llvm-svn: 47123
2008-02-14 17:30:51 +00:00
Nate Begeman
a338594236
Completed note
...
llvm-svn: 47120
2008-02-14 08:19:48 +00:00
Anders Carlsson
b0aad621fd
Address comments from Chris.
...
llvm-svn: 47118
2008-02-14 07:43:43 +00:00
Anders Carlsson
b853a1a049
Add Attr.h which is an AST-level class for GCC attributes.
...
llvm-svn: 47112
2008-02-14 07:14:34 +00:00
Steve Naroff
2d868f2bcd
Remove DeclSpec::Invalid, a recently added bool that allowed the parser to detect if the decl spec was invalid.
...
For now, we will stick with the original strategy - clients of Parse::ParseDeclarationSpecifiers() should never have to know this.
llvm-svn: 47104
2008-02-14 03:30:24 +00:00
Steve Naroff
f631997cb5
A much better fix for http://llvm.org/bugs/show_bug.cgi?id=1987 .
...
llvm-svn: 47103
2008-02-14 02:58:32 +00:00
Ted Kremenek
80ebc1d1c9
Added support to GRCoreEngine/GRExprEngine for processing control-flow
...
from switch...case...default statements.
llvm-svn: 47100
2008-02-13 23:08:21 +00:00
Dan Gohman
63705ecefd
Adjust for APInt's isPositive being renamed to isNonNegative.
...
llvm-svn: 47091
2008-02-13 22:09:49 +00:00
Ted Kremenek
654c78fd2d
When creating the CFGBlocks for a switch statement, we now have the "default"
...
branch ALWAYS be the last successor for a switch-terminated block. This allows
clients to distinguish cases like the following:
switch(...)
case XXX:
switch(...) {
case YYY: ...
}
case ZZZ: ..
}
In this case, the block with "case ZZZ:" is the default block for the inner
switch statement, but that case is associated with the outer switch statement,
and not the inner one. Clients can test for this behavior by checking if a
successor block is the last one (and thus just assume that this is the "default"
case).
llvm-svn: 47088
2008-02-13 22:05:39 +00:00
Ted Kremenek
9682be18ae
Fixed bug in CFG construction when processing switch statements that contain no
...
"default" case. In such cases, we now correctly add the CFGBlock representing
the code after the switch statement as a successor to the block terminated by
the switch statement.
llvm-svn: 47087
2008-02-13 21:46:34 +00:00
Ted Kremenek
cd44b12f96
Fixed 80 col violations.
...
llvm-svn: 47076
2008-02-13 18:06:44 +00:00
Chris Lattner
7b7ace5537
avoid making implicit casts that just remove typedefs.
...
llvm-svn: 47074
2008-02-13 18:01:07 +00:00
Ted Kremenek
755d39b233
Unbreak the build.
...
llvm-svn: 47072
2008-02-13 17:45:18 +00:00
Ted Kremenek
1c16527774
Renamed files to match class renaming in r47070:
...
http://llvm.org/viewvc/llvm-project?rev=47070&view=rev
llvm-svn: 47071
2008-02-13 17:43:07 +00:00
Ted Kremenek
f6c62f3459
Renamed class GREngine => GRCoreEngine.
...
Renamed class GRConstants => GRExprEngine.
This was done with a Perl script, and will result in 80 col. violations that
I will gradually fix up.
llvm-svn: 47070
2008-02-13 17:41:41 +00:00
Eli Friedman
2be9af9556
Fix a minor bug in isNullPointerConstant triggered by the linux
...
tgmath.h.
Note that there is another issue with tgmath.h, so mandel.c still
doesn't work.
llvm-svn: 47069
2008-02-13 17:29:58 +00:00
Ted Kremenek
2bba901a36
Simplify GRIndirectGotoNodeBuilder.
...
llvm-svn: 47068
2008-02-13 17:27:37 +00:00
Ted Kremenek
632bcb82a7
Added GREngine support for "break" and "continue".
...
llvm-svn: 47064
2008-02-13 16:56:51 +00:00
Anders Carlsson
73cc507602
Use IgnoreParenCasts.
...
llvm-svn: 47041
2008-02-13 01:22:59 +00:00
Chris Lattner
f26609686f
Move IgnoreParenCasts to be a method on Expr.
...
llvm-svn: 47040
2008-02-13 01:02:39 +00:00
Ted Kremenek
7022efbe7b
Added support to GREngine/GRConstants for handling computed gotos.
...
llvm-svn: 47038
2008-02-13 00:24:44 +00:00
Ted Kremenek
822f7370b2
Added GREngine support for GotoStmt.
...
llvm-svn: 47034
2008-02-12 21:51:20 +00:00
Dan Gohman
922096cc5e
Adjust for the API change to APInt::getBitsSet.
...
People more familiar with clang than me, please review this.
llvm-svn: 47033
2008-02-12 21:49:34 +00:00
Ted Kremenek
736e441266
Added transfer function/value track logic for taking the address of a label.
...
llvm-svn: 47030
2008-02-12 21:37:56 +00:00
Ted Kremenek
1f3d4a73f5
Minor (cosmetic) reshuffling of code. Fixed a bug in "Assume" logic when
...
handling Non-Lvalues of the type nonlval::SymbolVal; we were accidentally
casting them to lval::SymbolVal.
llvm-svn: 47029
2008-02-12 21:37:25 +00:00
Ted Kremenek
002bf74fbc
Added transfer function logic for sizeof(expr)/sizeof(type). This currently
...
doesn't support VLAs.
Reordered some cases in the switch statement of GRConstant::Visit() so
that they are ordered alphabetically based on AST node type.
llvm-svn: 47021
2008-02-12 19:49:57 +00:00
Ted Kremenek
f225dffd4d
Fixed misspelling in comment.
...
llvm-svn: 47016
2008-02-12 19:01:33 +00:00
Ted Kremenek
fb9cc188af
Renamed local variable.
...
Added transfer function support for CharacterLiteral.
llvm-svn: 47014
2008-02-12 18:50:32 +00:00
Ted Kremenek
07d65aa238
Moved class declaration for ObjCForCollectionStmt to be co-located with
...
the class declarations for the other ObjC***Stmt classes.
llvm-svn: 47013
2008-02-12 18:34:31 +00:00
Ted Kremenek
90ae68fe71
Added GRBlockCounter class, which tracks the number of times blocks
...
have been visited in a path. Added GRBlockCounter as an item to be
enqueued to the worklist.
Modified "ProcessBranch" in GRConstants to prune branches with symbolic
conditions that have been already taken.
llvm-svn: 47010
2008-02-12 18:08:17 +00:00
Eli Friedman
a7bf7ed476
Make typechecking for enum+int compatibility stricter.
...
llvm-svn: 47005
2008-02-12 08:46:17 +00:00
Eli Friedman
2b90b0d09e
Add wchar_t type to ASTContext. Will be needed for wide strings, since
...
they are of type wchar_t[].
llvm-svn: 47004
2008-02-12 08:29:21 +00:00
Eli Friedman
16f909670e
Fix type compatibility between constant and variable arrays.
...
llvm-svn: 47003
2008-02-12 08:23:06 +00:00
Steve Naroff
ab468cb14b
Allow the parser to detect invalid DeclSpec's. This fixes http://llvm.org/bugs/show_bug.cgi?id=1987 .
...
This commit only "guards" the call to ParseDeclarationSpecifiers() in ParseDeclarationOrFunctionDefinition().
We could consider guarding all calls, however this is a bit radical (since it effectively stops parsing the declaration once we have a bad declspec). Will discuss with Chris tomorrow.
llvm-svn: 46984
2008-02-12 04:08:59 +00:00
Steve Naroff
c1e22c7fa1
Fix unsafe static cast...
...
llvm-svn: 46980
2008-02-12 01:09:36 +00:00
Steve Naroff
69e8f9efab
Several cleanups surrounding Parser::ParseAsmStatement() and Parser::FuzzyParseMicrosoftAsmStatement().
...
llvm-svn: 46977
2008-02-11 23:15:56 +00:00
Ted Kremenek
633654ffab
Consolidated use of BumpPtrAllocator shared by various ImmutableSet/ImmutableMap
...
factories.
Fixed a horrible bug in lval:DeclVar::classof(RValue* V); we weren't checking
V was an LValue, allowing nonlval::ConcereteInts to match isa<lval::DeclVar>.
llvm-svn: 46976
2008-02-11 23:12:59 +00:00
Steve Naroff
bff738543d
Move policy on unnamed fields (a Microsoft extension) from Parser::ParseStructDeclaration() to the driver.
...
llvm-svn: 46974
2008-02-11 22:40:08 +00:00
Steve Naroff
5915777fca
Move Microsoft __declspec hack from the parser to the preprocessor. Since we have no plans to actually implement this construct, it is cleaner to limit the change to the preprocessor.
...
llvm-svn: 46973
2008-02-11 22:29:58 +00:00
Steve Naroff
5a858df0b3
Fix http://llvm.org/bugs/show_bug.cgi?id=2013 .
...
llvm-svn: 46972
2008-02-11 22:17:33 +00:00
Steve Naroff
b5fc2551e4
After yesterday's discussion ( http://lists.cs.uiuc.edu/pipermail/cfe-dev/2008-February/001044.html ), decided not to change the semantics of Type::isIncompleteType().
...
This commit simply changes a couple comments to reflect this decision.
llvm-svn: 46970
2008-02-11 21:52:37 +00:00
Ted Kremenek
ed3be17b6f
Separate bindings for subexpressions to be in a separate map for
...
bindings for block-level expressions.
Moved pretty-printing logic (DOT) for ValueStates to ValueState.cpp.
llvm-svn: 46965
2008-02-11 19:21:59 +00:00
Anders Carlsson
6a8350b4f1
Get rid of bogus warnings when the second argument in va_start is either an implicit cast expr or a paren expr.
...
llvm-svn: 46950
2008-02-11 04:20:54 +00:00
Steve Naroff
4b32796d1c
Add a comment/FIXME to an earlier change.
...
llvm-svn: 46947
2008-02-11 02:42:07 +00:00
Steve Naroff
e78e2af754
Tweak test...
...
llvm-svn: 46946
2008-02-11 02:16:41 +00:00
Chris Lattner
c9b96ae832
strings are arrays too
...
llvm-svn: 46945
2008-02-11 01:35:07 +00:00
Eli Friedman
f54c4e5fea
A couple of minor fixes to aggregate codegen, to stop asserting on some
...
edge cases.
llvm-svn: 46944
2008-02-11 01:09:17 +00:00
Eli Friedman
a5b2023810
Make unsupported constant exprs fail with a warning instead of crashing
...
codegen.
llvm-svn: 46943
2008-02-11 00:23:10 +00:00
Steve Naroff
326389b8ce
Fix http://llvm.org/bugs/show_bug.cgi?id=1988 .
...
Sema::CheckInitializerListTypes() needs to ignore invalid structures.
llvm-svn: 46942
2008-02-11 00:06:17 +00:00
Chris Lattner
36fc8790b7
Fix PR1992 by computing the right type for string literals, which
...
is an array type not a pointer type. This requires updating some
diags that change and updating the code generator to handle the
proper form of strings.
llvm-svn: 46941
2008-02-11 00:02:17 +00:00
Eli Friedman
de4496bb9e
Basic codegen test for conditional with void*.
...
llvm-svn: 46940
2008-02-10 23:18:23 +00:00
Eli Friedman
fadc8462be
Add a couple of sema tests for qualifiers with conditionals containing
...
void*.
llvm-svn: 46939
2008-02-10 23:14:16 +00:00
Chris Lattner
7b8134f5c6
Fix PR1999, by emitting a hard error only if an argument declarator is completely
...
missing. Otherwise, it is an implicit int case, which is valid in c90 and invalid
elsewhere, but accepted as an extension.
llvm-svn: 46938
2008-02-10 23:08:00 +00:00
Eli Friedman
15888c23f5
Fix the type of conditionals involving void* to be self-consistent and
...
spec-compliant.
I'll put together some testcases in a bit.
llvm-svn: 46937
2008-02-10 22:59:36 +00:00
Steve Naroff
15833ed168
Add a diagnostics helper to remove some redundant code.
...
llvm-svn: 46936
2008-02-10 21:38:56 +00:00
Chris Lattner
00c5b28923
long is 32-bit is on win32.
...
llvm-svn: 46935
2008-02-10 21:12:45 +00:00
Steve Naroff
1018ea35b7
Refine bug fix to Expr::isLvalue (commit r46917).
...
llvm-svn: 46919
2008-02-10 01:39:04 +00:00
Steve Naroff
43c50866f1
Change Expr::isLvalue() to allow the "void" type. This fixes bz2000 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.
llvm-svn: 46917
2008-02-10 00:30:18 +00:00
Anders Carlsson
c0b0e59643
Implement __builtin_va_copy
...
llvm-svn: 46911
2008-02-09 20:26:43 +00:00
Anders Carlsson
2e64d1a50f
Behave correctly if a constraint expression is invalid.
...
llvm-svn: 46910
2008-02-09 19:57:29 +00:00
Steve Naroff
4cc387212a
Fix spelling in comment.
...
llvm-svn: 46906
2008-02-09 17:25:18 +00:00
Steve Naroff
45173e0ac0
Fix <rdar://problem/5733511> clang doesn't emit error for const array.
...
llvm-svn: 46905
2008-02-09 16:59:44 +00:00
Eli Friedman
a62f3e1352
Expose the logic for field address codegen; it is needed for aggregate
...
initializers, and I don't want to duplicate the bitfield-handling code.
(I'll send a patch for aggregate initializers to the mailing
list sometime soon.)
llvm-svn: 46904
2008-02-09 08:50:58 +00:00
Steve Naroff
a369922449
A bunch-o changes to fix <rdar://problem/5716046> incomplete implementation of ObjC class warning is incomplete
...
As part of this fix, I made a low-level change to the text diagnostics machinery (to basically avoid printing duplicate source lines/carets when you have multiple diagnostics that refer to the same exact place). For now, this only happens with we don't have a source range (could be extended to support source ranges as well).
llvm-svn: 46897
2008-02-08 22:06:17 +00:00
Ted Kremenek
b54312d5a0
Split off expression-bindings in ValueState from variable-bindings.
...
llvm-svn: 46892
2008-02-08 21:10:02 +00:00
Ted Kremenek
4142cc834b
Changed "GetValue" methods to take an
...
Expr* instead of a Stmt*, since we only
store bindings for Expr*.
llvm-svn: 46891
2008-02-08 20:29:23 +00:00
Lauro Ramos Venancio
d74057fa87
Fix a bitfield regression. Reported by Anders Carlsson.
...
llvm-svn: 46889
2008-02-08 19:46:46 +00:00
Ted Kremenek
80ff44ff30
Moved implementation of "RemoveDeadBindings" from the main
...
GRConstants logic to ValueStateManager.
llvm-svn: 46888
2008-02-08 19:17:19 +00:00
Ted Kremenek
5d9073c776
Removed ability to create symbol bindings
...
in VarKey and VariableBindingsTy.
llvm-svn: 46887
2008-02-08 19:08:13 +00:00
Steve Naroff
8c099c3f03
Use getLogicalLineNumber() in FuzzyParseMicrosoftAsmStatement(), it's more general and simplifies the code.
...
llvm-svn: 46885
2008-02-08 18:01:27 +00:00
Ted Kremenek
09d6ba1496
Moved that clang doesn't depend on llvm-gcc above
...
the subsection of building clang with llvm.
llvm-svn: 46884
2008-02-08 07:32:26 +00:00
Ted Kremenek
fd39e73b7a
Implemented transfer functions for "<<" and ">>" when the RValues are
...
ConcreteInts.
llvm-svn: 46883
2008-02-08 07:14:58 +00:00
Eric Christopher
6aa87cbb63
Add instructions for building clang while building llvm.
...
llvm-svn: 46881
2008-02-08 07:10:48 +00:00
Ted Kremenek
707b07ccf9
Implemented transfer functions for Statement-Expressions and Commas.
...
Fixed bug in dispatching to the correct transfer function for |=, &=, and ^|.
llvm-svn: 46880
2008-02-08 07:05:39 +00:00
Eric Christopher
2dc30a5ac8
De-^Mify file.
...
llvm-svn: 46879
2008-02-08 06:45:49 +00:00
Steve Naroff
db5f7d7699
Support fuzzy parsing MS line-oriented __asm's that originate from a macro (a case where we can't obtain source line info). As the test case indicates, we don't currently support line-oriented asm statements that mix file/macro body tokens.
...
llvm-svn: 46878
2008-02-08 03:36:19 +00:00
Ted Kremenek
fd641f1056
More variable renamings.
...
llvm-svn: 46875
2008-02-08 03:02:48 +00:00
Ted Kremenek
173743da67
Renamed InvalidValue to UnknownVal.
...
Renamed UninitializedValue to UninitializedVal.
llvm-svn: 46874
2008-02-08 02:57:34 +00:00
Eli Friedman
113eed5cff
Fix indentation.
...
llvm-svn: 46873
2008-02-08 01:24:30 +00:00
Eli Friedman
1974e5321a
Detabify SemaExpr. My text editor defaults to 8 spaces per tab, so it
...
gets kind of annoying.
llvm-svn: 46872
2008-02-08 01:19:44 +00:00
Eli Friedman
4297826cac
Improve diagnostic for illegal array initialization.
...
llvm-svn: 46869
2008-02-08 00:48:24 +00:00
Anders Carlsson
5c6c05956e
Put back the top-level asm code; all tests pass now.
...
llvm-svn: 46868
2008-02-08 00:33:21 +00:00
Anders Carlsson
0fae4f56df
Back out 46855 for now, it causes test failures on Darwin.
...
llvm-svn: 46867
2008-02-08 00:23:11 +00:00
Steve Naroff
4e79d340bd
- Add support for fuzzy parsing line-oriented __asm's (yuck).
...
- Change handling of __w64 to a built-in macro.
llvm-svn: 46864
2008-02-07 23:24:32 +00:00
Lauro Ramos Venancio
9eff02d9f8
Simplify bitfield codegen.
...
Fix codegen of struct { short a[3]; int b:15; }.
llvm-svn: 46859
2008-02-07 19:29:53 +00:00
Lauro Ramos Venancio
0f166de892
Fix codegen of
...
struct {
char a[3];
unsigned char b:1;
};
Fix PR1990.
llvm-svn: 46856
2008-02-07 18:18:58 +00:00
Anders Carlsson
bcc3a4bf64
Handle top-level asm declarations.
...
llvm-svn: 46855
2008-02-07 17:19:11 +00:00
Steve Naroff
6936a08704
Minor cleanup from yesterday's -fms-extension commit. Move __int* MS keywords to predefined macros. This removes some of the MS-madness from Parser::ParseDeclarationSpecifiers().
...
llvm-svn: 46852
2008-02-07 15:26:07 +00:00
Ted Kremenek
e187d0511f
Added some more opcode pretty-printing.
...
Minor cleanups with generating nodes for NULL-pointer dereferences.
llvm-svn: 46851
2008-02-07 15:20:13 +00:00
Ted Kremenek
d74da0838f
Added proof-of-concept NULL pointer diagnostics to GRConstants.
...
Modified the driver to pass the Diagnostic object to GRConstants.
llvm-svn: 46847
2008-02-07 06:33:19 +00:00
Ted Kremenek
149512c013
Added support to distinguish between both implicit and explicit null dereferences.
...
llvm-svn: 46846
2008-02-07 06:04:18 +00:00
Chris Lattner
3b5054dda0
Implement support for the extremely atrocious MS /##/ extension,
...
which pastes together a comment. This is only enabled with
-fms-extensions of course.
llvm-svn: 46845
2008-02-07 06:03:59 +00:00
Chris Lattner
f96e8d0925
these aren't tokens.
...
llvm-svn: 46844
2008-02-07 05:57:50 +00:00
Ted Kremenek
e324704e62
Added recording of "implicit" NULL dereferences of symbolic pointers.
...
llvm-svn: 46843
2008-02-07 05:48:01 +00:00
Eli Friedman
69d56cff31
Add a FIXME for alternate address spaces.
...
llvm-svn: 46841
2008-02-07 05:24:51 +00:00
Chris Lattner
6bd4c7f94f
get the tree building again
...
llvm-svn: 46840
2008-02-07 05:01:42 +00:00
Ted Kremenek
88da1de048
Added several guards in transfer functions for "InvalidValues".
...
Fixed bug in RemoveDeadBindings by implementing a simple "mark-and-sweep"
cleaner over the bindings, starting from the Decls and block-level expressions
that are considered "live" by the Liveness analysis.
Fixed bug in isa<> implementation for class LValue.
Added "VisitDeclRefExpr" to GRConstants so that we explicitly bind the current
value of variable to the Block-level Expression (i.e., when the DeclRefExpr is
at the CFGBlock level).
llvm-svn: 46839
2008-02-07 04:16:04 +00:00
Steve Naroff
b2c80c7c7b
Implement -fms-extensions. This allows us to fuzzy parse non-standard MS constructs used in "windows.h".
...
llvm-svn: 46838
2008-02-07 03:50:06 +00:00
Ted Kremenek
a56c08a2e4
Fixed bug in LiveVariables analysis where Block-level exprs appearing
...
as the initializers for DeclStmts were not being registered as being
live at the start of the DeclStmt.
llvm-svn: 46837
2008-02-07 02:38:55 +00:00
Ted Kremenek
43523e0fe8
Added transfer function logic for ReturnStmts.
...
Fixed insidious bug in handling dereferences.
llvm-svn: 46835
2008-02-07 01:08:27 +00:00
Ted Kremenek
4aa77cee11
Minor reordering of the serialization of the fields of MemberExpr to result
...
in a smaller encoding on disk.
llvm-svn: 46832
2008-02-06 23:03:14 +00:00
Ted Kremenek
cdd0be1dc1
Major code refactoring/cleanup with transfer function logic. Now the
...
code structure is more suitable for additional symbolic analysis.
llvm-svn: 46831
2008-02-06 22:50:25 +00:00
Eli Friedman
1242fff6ec
Make sure to propagate qualifiers through the member operator.
...
llvm-svn: 46830
2008-02-06 22:48:16 +00:00
Chris Lattner
871e0ceffb
explicitly document that return statement argument does not necessarily follow the result type of the function. Add testcase.
...
llvm-svn: 46823
2008-02-06 21:20:34 +00:00
Anders Carlsson
377ad02de5
Use the subprocess module instead of os.system. Patch by Sam Bishop.
...
llvm-svn: 46819
2008-02-06 19:03:27 +00:00
Ted Kremenek
afa5f492e5
Added main transfer function support for unary operator "!".
...
llvm-svn: 46815
2008-02-06 17:56:00 +00:00
Ted Kremenek
17b65b557b
Added assumption logic for symbolic non-lvalues when used in conditions such as
...
"if(x)". On the true branch we know the value is != 0, and on the false branch
we know it is 0.
llvm-svn: 46814
2008-02-06 17:32:17 +00:00
Anders Carlsson
d3b06cda3c
Add pointer + int (and vice versa) to the constant emitter.
...
llvm-svn: 46812
2008-02-06 07:23:14 +00:00
Anders Carlsson
093f1a099f
Generate code for the various __builtin_ctz functions.
...
llvm-svn: 46811
2008-02-06 07:19:27 +00:00
Chris Lattner
b818af539f
now that ConvertTagDeclType is nice and simple, use it from UpdateCompletedType.
...
llvm-svn: 46809
2008-02-06 06:06:49 +00:00
Chris Lattner
d11482ea22
simplify and speed up type refinement logic. No functionality change.
...
llvm-svn: 46808
2008-02-06 06:03:51 +00:00
Chris Lattner
a64dde6b48
only convert the type name once, not each type it is refined.
...
llvm-svn: 46807
2008-02-06 05:48:29 +00:00
Eli Friedman
220ee41011
Fix the codegen of structs with flexible array members.
...
llvm-svn: 46806
2008-02-06 05:33:51 +00:00
Chris Lattner
3340b92582
simplify a bunch of code.
...
llvm-svn: 46805
2008-02-06 05:29:46 +00:00
Chris Lattner
56096f3020
rename TypeHolderMap to TypeCache, which more aptly describes what it is.
...
llvm-svn: 46804
2008-02-06 05:21:55 +00:00
Chris Lattner
ee9fafd533
split tagged decl layout into its own method.
...
llvm-svn: 46803
2008-02-06 05:18:32 +00:00
Chris Lattner
f6e3669eb2
only update the llvm type for a struct when we used the struct
...
previously in an opaque context. If we didn't do this,
computing its layout could be wasted: just be lazy.
llvm-svn: 46802
2008-02-06 05:12:09 +00:00
Chris Lattner
68be60694e
sink more of the type related code into CodeGenTypes.
...
llvm-svn: 46801
2008-02-06 05:08:19 +00:00
Chris Lattner
8b945ee058
codegen static variables in a function into a different namespace from
...
static variables outside functions.
llvm-svn: 46800
2008-02-06 04:54:32 +00:00
Eli Friedman
d49a720d52
Be a bit stricter about array type compatibility.
...
llvm-svn: 46799
2008-02-06 04:53:22 +00:00
Chris Lattner
a5e4d30942
Finish off the refactoring of type handling stuff. Now we recompile every
...
tag decl after it has been completed
llvm-svn: 46798
2008-02-06 04:51:19 +00:00
Ted Kremenek
73451846a7
Fixed bug in '=' transfer function: RHS does not have to be a non-LValue.
...
llvm-svn: 46797
2008-02-06 04:41:14 +00:00
Ted Kremenek
d17f05435a
Fixed signedness bug in cast transfer function when casting integers to pointers.
...
Removed lval::SymIntConstraintVal; wrappers for symbolic constraints are not lvalues (only integers that evaluate to !0 or 0).
llvm-svn: 46796
2008-02-06 04:31:33 +00:00
Ted Kremenek
b2652827e6
Modified state pretty-printing to include the '!=' and '==' constraints on
...
symbols (for constant integers).
llvm-svn: 46795
2008-02-06 03:56:15 +00:00
Ted Kremenek
0ea8fea0ba
Disabled operator= for ValueStateImpl.
...
ValueState no longer inherits FoldingSetNode (not needed).
Removed redundant operator= implementation for ValueState (it simply did the default behavior).
llvm-svn: 46794
2008-02-06 02:50:36 +00:00
Ted Kremenek
4ff4e7ce9f
Fixed bug when allocating a ValueStateImpl object in getPersistentState()
...
using the bump-pointer allocator and a placed new; we accidentally allocated
a ValueStateImpl* instead, causing an overrun when we did a placed new().
llvm-svn: 46793
2008-02-06 02:45:20 +00:00
Chris Lattner
adf1f51fc5
move the codegen ASTConsumer out of the driver into libcodegen,
...
eliminating a bunch of forwarding methods and generally
simplifying things.
llvm-svn: 46792
2008-02-06 02:01:47 +00:00
Chris Lattner
b5eda6253b
pull .ll and .bc writing out of the ASTConsumer destructors into some top
...
level code in clang. This is a cleanup, but does implement "-o" for
-emit-llvm. One effect of this is that "clang foo.c -emit-llvm" will now
emit into foo.ll instead of stdout. Use "clang foo.c -emit-llvm -o -" or
"clang < foo.c -emit-llvm" to get the old behavior.
llvm-svn: 46791
2008-02-06 01:42:25 +00:00
Ted Kremenek
03e7b55f22
Added some skeleton code for performing "assume" on symbols: e.g. assume($0 != 0).
...
This action will add constraints to the possible values of a symbol.
Still needs to be debugged.
llvm-svn: 46789
2008-02-06 00:54:14 +00:00
Chris Lattner
622c193a32
inform astconsumer about tagdecls as they are defined.
...
llvm-svn: 46788
2008-02-06 00:51:33 +00:00
Chris Lattner
fe0e0af434
pass the astconsumer into Sema's ctor, clean up some stuff in
...
Sema::ActOnTranslationUnitScope. The various ObjC pieces at the top
of Sema.cpp should be moved into SemaObjC or something.
llvm-svn: 46787
2008-02-06 00:46:58 +00:00
Chris Lattner
8082d870bd
rename ASTSTreamer.{h|cpp} -> ParseAST.{h|cpp}
...
llvm-svn: 46786
2008-02-06 00:23:21 +00:00