Fariborz Jahanian
521b3a363e
Patch for diagnosing type mismatch between
...
methods in class and its implementation.
This is work in progress.
llvm-svn: 60573
2008-12-05 01:35:25 +00:00
Ted Kremenek
8e942123cb
Remove SymbolDataContentsOf (unused).
...
llvm-svn: 60572
2008-12-05 01:31:31 +00:00
Ted Kremenek
d368de794a
StoreManager::Retrieve and StoreManager::RemoveDeadBindings now take a GRState* argument instead of a Store. This allows them to use the GDM for storing other data.
...
llvm-svn: 60570
2008-12-05 00:47:52 +00:00
Chris Lattner
79413956d4
change getCurFunctionDecl to skip through Block contexts to find
...
the containing block. Introduce a new getCurFunctionOrMethodDecl
method to check to see if we're in a function or objc method.
Minor cleanups to other related places. This fixes rdar://6405429.
llvm-svn: 60564
2008-12-04 23:50:19 +00:00
Chris Lattner
2ca529ce61
instead of forcing blocks on by default, make them default to off, but let
...
specific targets default them to on. Default blocks to on on 10.6 and later.
Add a -fblocks option that allows the user to override the target's default.
Use -fblocks in the various testcases that use blocks.
llvm-svn: 60563
2008-12-04 23:20:07 +00:00
Fariborz Jahanian
5271058c75
Output better diagnostics for continuation class
...
property attribute mis-specification.
llvm-svn: 60562
2008-12-04 22:56:16 +00:00
Chris Lattner
c7c6dd4d97
replace useNeXTRuntimeAsDefault with a generic hook that allows targets
...
to specify their default language options.
llvm-svn: 60561
2008-12-04 22:54:33 +00:00
Ted Kremenek
1aed3ddffa
Remove unneeded assertion.
...
llvm-svn: 60559
2008-12-04 22:47:11 +00:00
Sebastian Redl
33a3101d43
Code cleanup in new handling.
...
llvm-svn: 60557
2008-12-04 22:20:51 +00:00
Ted Kremenek
baedbf47f6
Use 'free' to release PerIDCache since it was allocated using calloc().
...
llvm-svn: 60556
2008-12-04 22:09:37 +00:00
Ted Kremenek
7d71db77d2
Fix bug in attribute(nonnull) processing where not all of the parameter indices in nonnull(...) were actually processed.
...
llvm-svn: 60546
2008-12-04 19:38:33 +00:00
Sebastian Redl
f84512a360
Fix some diagnostics and enhance test cases. Now tests member new and ambiguous overloads.
...
llvm-svn: 60542
2008-12-04 17:24:46 +00:00
Steve Naroff
4588d0f060
Several things...
...
- Implement RewritePropertySetter(). While the routine is simple, there were some tricky changes to RewriteFunctionBodyOrGlobalInitializer(), the main rewriter loop. It also required some additional instance data to distinguish setters from getters, as well as some changes to RewritePropertyGetter().
- Implement FIXME: for pretty printing ObjCPropertyRefExpr's.
- Changed ObjCPropertyRefExpr::getSourceRange() to point to the end of the property name (not the beginning). Also made a minor name change from "Loc"->"IdLoc" (to make it clear the Loc does not point to the ".").
llvm-svn: 60540
2008-12-04 16:24:46 +00:00
Daniel Dunbar
2c4efe68ea
Mention an optimization opportunity pointed out by Chris.
...
llvm-svn: 60535
2008-12-04 09:05:45 +00:00
Ted Kremenek
677779ab36
Revamp RegionStoreManager::RemoveDeadBindings. This method now does a complete mark-and-sweep of the store, removing dead regions and recording the set of live and dead symbols appropriately.
...
llvm-svn: 60523
2008-12-04 02:08:27 +00:00
Ted Kremenek
8e8cc81aec
Update comment.
...
llvm-svn: 60520
2008-12-04 02:06:04 +00:00
Zhongxing Xu
96c0fa8b42
Add comments.
...
llvm-svn: 60516
2008-12-04 01:12:41 +00:00
Sebastian Redl
45c2f9d320
Correct CodeGen assumption that LongTy == Int32Ty in a few places. This makes several CodeGenObjC tests pass on 64-bit by fixing assertions. This doesn't mean that the result is actually what the GNU runtime expects, though.
...
llvm-svn: 60515
2008-12-04 00:10:55 +00:00
Sebastian Redl
ba3fdfcbff
Fix some type punning errors in SizeOfAlignOf and Typeid AST nodes. This should satisfy compilers and language lawyers alike.
...
llvm-svn: 60511
2008-12-03 23:17:54 +00:00
Sebastian Redl
faf6808e7a
Overload resolution for the operator new function. Member version is still untested.
...
llvm-svn: 60503
2008-12-03 20:26:15 +00:00
Ted Kremenek
fff9f4aaaf
BasicConstraintManager:
...
- Fix nonsensical logic in AssumeSymGE. When comparing 'sym >= constant' and the
constant is the maximum integer value, add the constraint that 'sym ==
constant' when the path is deemed feasible. All other cases are feasible.
- Improve AssumeSymGT. When comparing 'sym > constant' and constant is the
maximum integer value we know the path is infeasible.
- Add test case for this enhancement to AssumeSymGT.
llvm-svn: 60490
2008-12-03 19:06:30 +00:00
Ted Kremenek
f935cfe277
BasicConstraintManager:
...
- Fix nonsensical logic in AssumeSymLE. When comparing 'sym <= constant' and the
constant is the minimum integer value, add the constraint that 'sym ==
constant' when the path is deemed feasible. All other cases are feasible.
- Improve AssumeSymLT to address <rdar://problem/6407949>. When comparing
'sym < constant' and constant is the minimum integer value we know the
path is infeasible.
- Add test case for <rdar://problem/6407949>.
llvm-svn: 60489
2008-12-03 18:56:12 +00:00
Sebastian Redl
9c33e96813
Fix typo in index operator overloading.
...
llvm-svn: 60483
2008-12-03 16:32:40 +00:00
Anders Carlsson
6a113d9ddb
If a global var decl has an initializer, make sure to always set its linkage to external.
...
llvm-svn: 60462
2008-12-03 05:51:23 +00:00
Ted Kremenek
73a4d28758
PTH:
...
Use an array instead of a DenseMap to cache persistent IDs -> IdentifierInfo*. This leads to a 4% speedup at -fsyntax-only using PTH.
llvm-svn: 60452
2008-12-03 01:16:39 +00:00
Ted Kremenek
33eeabda61
- Remove PTHManager.cpp. Move all of its functions to PTHLexer.cpp since some of the internal methods are used by PTHLexer (their implementations are intertwined.) This enables some important inlining opportunities at -O3.
...
- Don't construct an std::vector<Token> prior to feeding PTH tokens to the Preprocessor. Stream them off the PTH file directly.
llvm-svn: 60447
2008-12-03 00:38:03 +00:00
Sebastian Redl
d6d55eeef5
Correct pretty printing of array new expressions.
...
llvm-svn: 60444
2008-12-02 22:08:59 +00:00
Ted Kremenek
af058b5696
Preprocessor:
...
- Added method "setPTHManager" that will be called by the driver to install
a PTHManager for the Preprocessor.
- Fixed some comments.
- Added EnterSourceFileWithPTH to mirror EnterSourceFileWithLexer.
llvm-svn: 60437
2008-12-02 19:46:31 +00:00
Ted Kremenek
498b6210fc
Added PTHManager, a utility class that will be used by Preprocessor to lazily create PTHLexer objects for pre-tokenized files.
...
llvm-svn: 60436
2008-12-02 19:45:05 +00:00
Fariborz Jahanian
eae373ea32
More type-checking of setter/getter methods. This is still
...
work in prgress.
llvm-svn: 60430
2008-12-02 18:39:49 +00:00
Sebastian Redl
538787f571
Add better comments to ::new parsing. Thanks to Doug for the review.
...
llvm-svn: 60423
2008-12-02 17:10:24 +00:00
Sebastian Redl
6ef75e9ee8
Make RegionStoreManager::InitializeArray safe against array sizes that don't have pointer width.
...
This may be the case on 64-bit systems. Whether that fact is a bug is a different question, but it's easy to cure the symptom.
llvm-svn: 60422
2008-12-02 16:47:35 +00:00
Sebastian Redl
db36b9b962
Make the parser handle ::new and ::delete correctly.
...
llvm-svn: 60421
2008-12-02 16:35:44 +00:00
Eli Friedman
39bc53593d
Update cmake build; patch by Csaba Hruska.
...
llvm-svn: 60418
2008-12-02 16:23:30 +00:00
Eli Friedman
e918435f94
Fix for PR3150: obvious copy-paste bug in
...
ScalarExprEmitter::VisitBinLOr.
llvm-svn: 60415
2008-12-02 16:02:46 +00:00
Sebastian Redl
351bb78a10
Handle new by passing the Declaration to the Action, not a processed type.
...
llvm-svn: 60413
2008-12-02 14:43:59 +00:00
Ted Kremenek
817737a002
Add FIXME.
...
llvm-svn: 60390
2008-12-02 01:26:07 +00:00
Eli Friedman
f5d08c9ee4
Disabling this code due to regression on test/CodeGen/bitfield.c. See
...
PR3152.
llvm-svn: 60389
2008-12-02 01:17:45 +00:00
Douglas Gregor
f558618fa4
A little more scaffolding for parsing templates:
...
- Template parameter scope to hold the template parameters
- Template parameter context for parsing declarators
- Actions for template type parameters and non-type template
parameters
llvm-svn: 60387
2008-12-02 00:41:28 +00:00
Fariborz Jahanian
015a48d1db
This patch corrects problem in searching for a setter/getter method for
...
a property. Previous scheme of seaching in interface's list of methods
would not work because this list is not yet constructed. This is in preparation
for doing semantic check on viability of setter/getter method declarations.
llvm-svn: 60386
2008-12-02 00:19:12 +00:00
Douglas Gregor
eb31f39558
Basic support for parsing templates, from Andrew Sutton
...
llvm-svn: 60384
2008-12-01 23:54:00 +00:00
Douglas Gregor
da747baa3c
Improve error recovery when parsing a function definition fails
...
llvm-svn: 60380
2008-12-01 23:03:32 +00:00
Douglas Gregor
b690cbb928
Initialize storage class even if we got an erroneous mutable
...
llvm-svn: 60377
2008-12-01 22:46:22 +00:00
Douglas Gregor
90abb6dead
Objective-C keywords are not always identifiers. Some are also C++ keywords
...
llvm-svn: 60373
2008-12-01 21:46:47 +00:00
Steve Naroff
e1908e393e
-Add several ObjC types to Decl::getDeclKindName(), a useful debug hook.
...
-Start adding support for rewriting @synthesize.
llvm-svn: 60368
2008-12-01 20:33:01 +00:00
Douglas Gregor
95c326d14a
Use EmitInt, not Emit, to emit unsigned values
...
llvm-svn: 60364
2008-12-01 19:45:16 +00:00
Daniel Dunbar
1f3d7849a8
Add LangOptions marker for assembler-with-cpp mode and use to define
...
__ASSEMBLER__ properly. Patch from Roman Divacky (with minor
formatting changes). Thanks!
llvm-svn: 60362
2008-12-01 18:55:22 +00:00
Douglas Gregor
356513d7d0
Parse the exception-specification throw(...), a Microsoft extension
...
llvm-svn: 60359
2008-12-01 18:00:20 +00:00
Douglas Gregor
f7ab50df29
Define NULL to __null in C++, so that it's guaranteed to have the same size as a pointer
...
llvm-svn: 60355
2008-12-01 17:20:57 +00:00
Anders Carlsson
5b3638b6e7
Generate the correct results for the comma expression. Fixes PR3123.
...
llvm-svn: 60334
2008-12-01 06:44:05 +00:00
Anders Carlsson
eade3ad1f1
Revert change that made isNullPointerConstant start emitting warnings. We don't want that :)
...
llvm-svn: 60333
2008-12-01 06:28:23 +00:00
Anders Carlsson
8628645e94
Change more code over to using the new Expr::Evaluate
...
llvm-svn: 60324
2008-12-01 02:46:24 +00:00
Anders Carlsson
38eef1de6c
Change more code over to using the new Expr::Evaluate
...
llvm-svn: 60323
2008-12-01 02:42:14 +00:00
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
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
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
Sebastian Redl
3ceaf62240
Fix order of evaluation.
...
llvm-svn: 60160
2008-11-27 07:28:14 +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
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
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
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
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
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