Anders Carlsson
c9687907c5
Use the new Expr::Evaluate
...
llvm-svn: 60321
2008-12-01 02:31:41 +00:00
Anders Carlsson
e7c2ac4b54
Remove dead code.
...
llvm-svn: 60320
2008-12-01 02:25:52 +00:00
Anders Carlsson
1dbffc6e36
Add Sema::isNullPointerConstant which extwarns if necessary. Use it in Sema::CheckConditionalOperands.
...
llvm-svn: 60319
2008-12-01 02:17:22 +00:00
Anders Carlsson
4bb9113da4
Add a new variant of isNullConstantExpr that returns an EvalResult.
...
llvm-svn: 60318
2008-12-01 02:13:57 +00:00
Anders Carlsson
f7fba46331
Use VerifyIntegerConstantExpression for case values.
...
llvm-svn: 60317
2008-12-01 02:13:02 +00:00
Anders Carlsson
564730a857
Emit the correct diagnostic when a comma is in an ICE.
...
llvm-svn: 60316
2008-12-01 02:07:06 +00:00
Anders Carlsson
e54e8a1182
Add Sema::VerifyIntegerConstantExpression
...
llvm-svn: 60305
2008-11-30 19:50:32 +00:00
Anders Carlsson
b33d6c8611
Change the diagnostics that the evaluator reports to be of type NOTE.
...
llvm-svn: 60301
2008-11-30 18:37:00 +00:00
Anders Carlsson
5862001157
Replace the isEvaluated bool with a ShortCircuit int, making it easier to handle recursion
...
llvm-svn: 60300
2008-11-30 18:26:25 +00:00
Anders Carlsson
27b8c5c464
Pass the expression to the Error and Extension methods.
...
llvm-svn: 60299
2008-11-30 18:14:57 +00:00
Anders Carlsson
7b6f0af83f
Add a new variant of Evaluate and reimplement the old Evaluate in terms of the new.
...
llvm-svn: 60298
2008-11-30 16:58:53 +00:00
Anders Carlsson
f50de0c590
General cleanup, evaluate the RHS of a logical op even if the LHS will give us the result.
...
llvm-svn: 60297
2008-11-30 16:51:17 +00:00
Anders Carlsson
bd1df8e866
EvalInfo now holds a reference to an EvalResult struct.
...
llvm-svn: 60296
2008-11-30 16:38:33 +00:00
Anders Carlsson
6c5887ce16
Add Expr::EvalResult struct. (Not used just yet)
...
llvm-svn: 60295
2008-11-30 16:19:46 +00:00
Zhongxing Xu
9cc7cba848
remove a test case that causes compiler warning.
...
llvm-svn: 60282
2008-11-30 05:59:27 +00:00
Zhongxing Xu
5c75919093
Add test for initializing array with string literal.
...
llvm-svn: 60281
2008-11-30 05:51:19 +00:00
Zhongxing Xu
d2fa1e0999
Add support for initializing array with string literal.
...
This fixes PR3127
http://llvm.org/bugs/show_bug.cgi?id=3127
llvm-svn: 60280
2008-11-30 05:49:49 +00:00
Eli Friedman
c59bb48e80
Fix for PR2969: generate a memcpy from a constant for constant
...
initializers. llvm-gcc appears to be more aggressive, but incorrect,
for constructs like "const int a[] = {1,2,3};"; that said, current
optimizers will do the appropriate optimizations when safe.
llvm-svn: 60270
2008-11-30 02:11:09 +00:00
Eli Friedman
79ceb0947b
Minor update to CMake build system.
...
llvm-svn: 60269
2008-11-30 01:46:21 +00:00
Anders Carlsson
77b5df6313
CXXFunctionalCastExpr inherits from ExplicitCastExpr.
...
llvm-svn: 60249
2008-11-29 19:58:11 +00:00
Zhongxing Xu
452273d9c6
To be consistent, make the index of the ElementRegion always signed.
...
llvm-svn: 60248
2008-11-29 12:05:04 +00:00
Douglas Gregor
3be4b122d3
Implement the GNU __null extension
...
llvm-svn: 60235
2008-11-29 04:51:27 +00:00
Chris Lattner
9d72ff710e
Switch QualType to use llvm::PointerIntPair internally to do the pointer
...
bitmangling.
llvm-svn: 60226
2008-11-28 23:37:31 +00:00
Zhongxing Xu
e31a8ebfdc
Fix a serious bug.
...
When initialized, the index of the ElementRegion was unsigned. But the index
value of the ArraySubscriptExpr is signed. This inconsistency caused the value
of the array element retrieved to be UnknownVal despite it was initialized to
symbolic.
This is only a hack. Real fix of this problem is required.
llvm-svn: 60207
2008-11-28 08:41:39 +00:00
Zhongxing Xu
33178a0993
Code cleanup. No functional change.
...
llvm-svn: 60206
2008-11-28 08:34:30 +00:00
Zhongxing Xu
85b6e201f4
Use std::make_pair instead of std::pair's ctor.
...
llvm-svn: 60205
2008-11-28 03:55:52 +00:00
Zhongxing Xu
3698bdb417
Enable the GRStateManager to do something when we finish a path. For example,
...
the ConstraintManager can print its internal state before its solver instance is
destroyed.
llvm-svn: 60204
2008-11-28 03:07:05 +00:00
Chris Lattner
e85cb38d5c
remove dead diag
...
llvm-svn: 60181
2008-11-27 19:33:39 +00:00
Sebastian Redl
3ceaf62240
Fix order of evaluation.
...
llvm-svn: 60160
2008-11-27 07:28:14 +00:00
Zhongxing Xu
7b3d3d3ee1
ImmutableList::getInternalPointer() returns a const ImmutableListImpl<T>* pointer, which must be converted to void* explicitly.
...
llvm-svn: 60152
2008-11-27 06:32:54 +00:00
Zhongxing Xu
59e2d41a8e
Factory objects should not be temporary. It caches all objects in the set.
...
llvm-svn: 60151
2008-11-27 06:08:40 +00:00
Zhongxing Xu
b670f294c9
RegionViewMap factory is actually not used. All GDMs should use factories from
...
GDMContext.
llvm-svn: 60150
2008-11-27 06:03:03 +00:00
Daniel Dunbar
e9095f55c7
Test commit.
...
llvm-svn: 60147
2008-11-27 03:47:29 +00:00
Zhongxing Xu
b94f440754
Add comments.
...
llvm-svn: 60146
2008-11-27 02:39:34 +00:00
Zhongxing Xu
2d311e8354
Add license comments.
...
llvm-svn: 60144
2008-11-27 02:19:10 +00:00
Zhongxing Xu
16e3f0e03f
Add support for pluggable components of static analyzer.
...
- Creator function pointers are saved in ManagerRegistry.
- The Register* class is used to notify ManagerRegistry new module is
available.
- AnalysisManager queries ManagerRegistry for configurable module. Then it
passes them to GRExprEngine, in turn to GRStateManager.
llvm-svn: 60143
2008-11-27 01:55:08 +00:00
Douglas Gregor
a29dc05eaf
Add implicit conversions for Objective-C qualified ids, e.g.,
...
id<P0>
The intended overloading behavior of these entities isn't entirely
clear, and GCC seems to have some strange limitations (e.g., the
inability to overload on id<P0> vs. id<P1>). We'll want to revisit
these semantics and determine just how Objective-C++ overloading
should really work.
llvm-svn: 60142
2008-11-27 01:19:21 +00:00
Douglas Gregor
bb9bf88fa4
Cleanup formatting
...
llvm-svn: 60140
2008-11-27 00:52:49 +00:00
Douglas Gregor
e7dd145c02
Don't complain about block pointer to void* conversions
...
llvm-svn: 60138
2008-11-27 00:44:28 +00:00
Ted Kremenek
1f50dc899f
PTHLexer now owns the Token vector.
...
llvm-svn: 60136
2008-11-27 00:38:24 +00:00
Douglas Gregor
231d1c6f8f
Support block pointer conversions in C++. I'm storing the test case locally until we can enable blocks in C++
...
llvm-svn: 60133
2008-11-27 00:15:41 +00:00
Ted Kremenek
b1ef37589c
- Enhance PTH generation to write out IdentifierInfo table in two parts:
...
- a table including the IdentifierInfo data
- an index from persistent IdentifierInfo IDs to indices within this file.
- Enhance PTH generation to write out file map information, mapping inodes to tokens.
llvm-svn: 60132
2008-11-26 23:58:26 +00:00
Douglas Gregor
9ccbcdfb27
Test conversion from apointer to incomplete type to void* in C++
...
llvm-svn: 60131
2008-11-26 23:33:36 +00:00
Douglas Gregor
237f96c40f
Implement implicit conversions for Objective-C specific types, e.g.,
...
converting a pointer to one Objective-C interface into a pointer to another
Objective-C interface, and conversions with 'id'. The semantics seems
to match GCC, although they seem somewhat ad hoc.
Fixed a few cases where we assumed the C++ definition of isObjectType,
but were getting the C definition, causing failures in trouble with
conversions to void pointers.
llvm-svn: 60130
2008-11-26 23:31:11 +00:00
Fariborz Jahanian
6de7eb8587
Another test for property code gen.
...
llvm-svn: 60128
2008-11-26 23:20:29 +00:00
Argyrios Kyrtzidis
9323b04b36
Attempt to unravel the if/else mess in Parser::ParseDirectDeclarator.
...
llvm-svn: 60124
2008-11-26 22:40:03 +00:00
Fariborz Jahanian
57251782d0
Code gen for aggregate-valued properties and a test case.
...
llvm-svn: 60122
2008-11-26 22:36:09 +00:00
Argyrios Kyrtzidis
0c4162a659
Add some comments.
...
llvm-svn: 60119
2008-11-26 21:51:07 +00:00
Argyrios Kyrtzidis
ace521a1e1
Implement some suggestions by Daniel:
...
-Change Parser::ParseCXXScopeSpecifier to MaybeParseCXXScopeSpecifier
-Remove Parser::isTokenCXXScopeSpecifier and fold it into MaybeParseCXXScopeSpecifier
-Rename Parser::TryAnnotateScopeToken to TryAnnotateCXXScopeToken and only allow it to be called when in C++
llvm-svn: 60117
2008-11-26 21:41:52 +00:00
Argyrios Kyrtzidis
041f958303
Add an overload for operator<<(const DiagnosticBuilder &DB,bool I).
...
Fixes building error on MSVC where passing bool couldn't resolve to one of the overloads.
llvm-svn: 60116
2008-11-26 20:39:45 +00:00
Fariborz Jahanian
e7167c28f6
Removed a FIXME. Added a test case for anonymous category.
...
llvm-svn: 60115
2008-11-26 20:33:54 +00:00
Fariborz Jahanian
f8ef9f3dc9
Set default property attributes on each property.
...
Implemented anonymous category (also know as continuation class)
used to override main class's property attribute. This is work in
propgress.
llvm-svn: 60114
2008-11-26 20:01:34 +00:00
Anders Carlsson
f7a9a92359
Convert incomplete array types before emitting debug info for them, fixes PR3134.
...
llvm-svn: 60109
2008-11-26 17:40:42 +00:00
Nuno Lopes
8c6fbc04ee
add missing RUN lines
...
llvm-svn: 60107
2008-11-26 15:50:12 +00:00
Douglas Gregor
08d96d5182
Fix a minor typo in the handling of the conditional operator for Objective-C interface pointers
...
llvm-svn: 60096
2008-11-26 06:43:45 +00:00
Douglas Gregor
a60a6914cc
Tweak the new ResolveOverloadedCallFn to just return a FunctionDecl. It makes ActOnCallExpr simpler
...
llvm-svn: 60094
2008-11-26 06:01:48 +00:00
Douglas Gregor
99dcbff154
Move the overloading logic of Sema::ActOnCallExpr to a separate function
...
llvm-svn: 60093
2008-11-26 05:54:23 +00:00
Zhongxing Xu
21148402d6
Add plugin loading for clang. This will be used to load alternative constraint manager for static analysis.
...
llvm-svn: 60091
2008-11-26 05:23:17 +00:00
Devang Patel
c6fab4f50f
Disable -loop-index-split for now.
...
llvm-svn: 60089
2008-11-26 05:01:52 +00:00
Ted Kremenek
bf2d60145d
Re-apply r60071 now that raw_fd_ostream::tell has been committed.
...
llvm-svn: 60086
2008-11-26 03:36:26 +00:00
Daniel Dunbar
3ea9485335
Revert 60071, depends on uncommitted LLVM changes.
...
llvm-svn: 60077
2008-11-26 02:18:33 +00:00
Ted Kremenek
22d4b885fd
Migrate token-cache generation logic from dummy harness in PPLexerChange.cpp to CacheTokens.cpp.
...
llvm-svn: 60071
2008-11-26 00:57:55 +00:00
Ted Kremenek
e6847594ef
Add setter method PreprocessorLexer::setParsingPreprocessorDirective(). This will be used by the mechanism to generate cached tokens.
...
llvm-svn: 60070
2008-11-26 00:57:02 +00:00
Nuno Lopes
615f34c719
remove debug-only assertion in the complex float evaluator as it makes some real apps crash
...
llvm-svn: 60069
2008-11-26 00:39:53 +00:00
Daniel Dunbar
762e77b55f
Only call TryAnnotateScopeToken when parsing C++.
...
- This improves -parse-noop of Carbon.h by +2%, and I believe
compensates for the majority of the performance regression in r58913.
llvm-svn: 60063
2008-11-25 23:05:24 +00:00
Anders Carlsson
32ef8ceaa1
Handle returning complex types that get coerced. Fixes PR3131
...
llvm-svn: 60058
2008-11-25 22:21:48 +00:00
Sebastian Redl
511ed55524
Use RAII objects to ensure proper destruction of expression and statement AST nodes in the parser in most cases, even on error.
...
llvm-svn: 60057
2008-11-25 22:21:31 +00:00
Daniel Dunbar
44b58a2c14
Fix 80-col violations.
...
llvm-svn: 60051
2008-11-25 21:53:21 +00:00
Fariborz Jahanian
829b908b74
Refactored checking on readonly property into a method.
...
llvm-svn: 60050
2008-11-25 21:48:26 +00:00
Fariborz Jahanian
9a207ee4dc
Patch to allow over-riding of readonly property to
...
a writable property in one of its category.
llvm-svn: 60035
2008-11-25 17:56:43 +00:00
Anders Carlsson
28a423f42e
Remove more #ifdeffed code
...
llvm-svn: 60033
2008-11-25 17:16:39 +00:00
Anders Carlsson
9f77f60620
Remove the #ifdeffed out code.
...
llvm-svn: 60032
2008-11-25 17:10:10 +00:00
Nuno Lopes
6cdcbd1f95
add note about running the test suite with valgrind
...
llvm-svn: 60029
2008-11-25 15:46:06 +00:00
Nuno Lopes
a1232e5d7f
remove unused var
...
llvm-svn: 60018
2008-11-25 12:23:46 +00:00
Douglas Gregor
3ff3cf5f21
Test another error message, make sure to verify C++ new and delete tests
...
llvm-svn: 60007
2008-11-25 04:08:05 +00:00
Douglas Gregor
2afd0be069
Simple parsing of exception specifications, with no semantic analysis yet
...
llvm-svn: 60005
2008-11-25 03:22:00 +00:00
Zhongxing Xu
f39268ae8c
Add documentation for test.
...
llvm-svn: 60002
2008-11-25 01:45:11 +00:00
Daniel Dunbar
5c4cc09498
Comment fix.
...
llvm-svn: 59997
2008-11-25 00:20:22 +00:00
Zhongxing Xu
2939a50b67
Add no-warning to test case.
...
llvm-svn: 59995
2008-11-24 23:45:56 +00:00
Fariborz Jahanian
8fc3741b76
Patch to remove bogus waring when a property declaration
...
is imported from a protocol into the implementation.
llvm-svn: 59988
2008-11-24 22:16:00 +00:00
Sebastian Redl
198a5838df
Remove an empty if and add a reminder for when we implement C++ try-catch.
...
llvm-svn: 59987
2008-11-24 21:45:59 +00:00
Ted Kremenek
3ca000af83
Display the function we are analyzing before running LiveVariables.
...
llvm-svn: 59983
2008-11-24 20:53:32 +00:00
Ted Kremenek
e03879b8ad
Fix CFG bug where the 'increment' block for a 'for' statement would not be
...
properly reversed once constructed.
This fixes PR 3125:
http://llvm.org/bugs/show_bug.cgi?id=3125
llvm-svn: 59982
2008-11-24 20:50:24 +00:00
Sebastian Redl
849b1e6ac7
Remove some bad characters from comment.
...
llvm-svn: 59979
2008-11-24 20:06:50 +00:00
Sebastian Redl
f7cb84d771
Fix the fix of revision 59974. Now array-struct.c passes too.
...
llvm-svn: 59975
2008-11-24 19:39:40 +00:00
Sebastian Redl
81c1e1306c
Fix crash of array bounds checking under 64-bit.
...
There might be other, similar bugs lurking there.
llvm-svn: 59974
2008-11-24 19:35:33 +00:00
Ted Kremenek
01c414c070
Remove FIXME comment.
...
llvm-svn: 59973
2008-11-24 19:27:06 +00:00
Zhongxing Xu
9165ed69af
Add support for AllocaRegion extent with GDM.
...
One design problem that is emerging is the signed-ness problem during static
analysis. Many unsigned value have to be converted into signed value because
it partipates in operations with signed values.
On the other hand, we cannot blindly make all values occuring in static analysis
signed, because we do have cases where unsignedness is required, for example,
integer overflow detection.
llvm-svn: 59957
2008-11-24 09:44:56 +00:00
Zhongxing Xu
1dffa8cd73
Add utility methods.
...
llvm-svn: 59956
2008-11-24 09:38:21 +00:00
Zhongxing Xu
f1b4ff28a7
Fix 80-col violation.
...
llvm-svn: 59954
2008-11-24 07:38:01 +00:00
Zhongxing Xu
6587c75488
Cleanup code with utility method.
...
llvm-svn: 59951
2008-11-24 07:02:06 +00:00
Chris Lattner
1e5665e6be
Change a whole lot of diagnostics to take QualType's directly
...
instead of converting them to strings first. This also fixes a
bunch of minor inconsistencies in the diagnostics emitted by clang
and adds a bunch of FIXME's to DiagnosticKinds.def.
llvm-svn: 59948
2008-11-24 06:25:27 +00:00
Chris Lattner
f3d3faeca6
Rename NamedDecl::getName() to getNameAsString(). Replace a bunch of
...
uses of getName() with uses of getDeclName(). This upgrades a bunch of
diags to take DeclNames instead of std::strings.
This also tweaks a couple of diagnostics to be cleaner and changes
CheckInitializerTypes/PerformInitializationByConstructor to pass
around DeclarationNames instead of std::strings.
llvm-svn: 59947
2008-11-24 05:29:24 +00:00
Anders Carlsson
a7c5eb72a0
Reimplement Expr::isConstantExpr in terms of Expr::Evaluate. This fixes PR2832.
...
llvm-svn: 59946
2008-11-24 05:23:59 +00:00
Anders Carlsson
4fb8a9c6b6
__builtin_constant_p takes an argument that can have any type.
...
llvm-svn: 59944
2008-11-24 05:23:12 +00:00
Zhongxing Xu
f556cd6cb9
Strings are NULL terminated. So the region size should plus one.
...
llvm-svn: 59943
2008-11-24 05:16:01 +00:00
Anders Carlsson
87da2b5dce
Forgot the newline :)
...
llvm-svn: 59942
2008-11-24 05:13:45 +00:00
Anders Carlsson
3abcb58a35
Add test case for bug that's been fixed.
...
llvm-svn: 59941
2008-11-24 05:11:21 +00:00
Anders Carlsson
a42ee44aab
The address of a variable is only constant if the variable has global storage.
...
llvm-svn: 59939
2008-11-24 04:41:22 +00:00
Anders Carlsson
4c76e93507
Fix bug in the constant evaluator. Fixes PR3115.
...
llvm-svn: 59938
2008-11-24 04:21:33 +00:00