Chris Lattner
53f5d4c1b5
cleanups and simplifications.
...
llvm-svn: 59491
2008-11-18 04:44:58 +00:00
Ted Kremenek
4c5888c67a
Preprocessor::PushIncludeMacroStack() should always zero out CurPPLexer.
...
llvm-svn: 59490
2008-11-18 03:28:24 +00:00
Ted Kremenek
3d9740da29
- Add Lexer::isPragma() accessor for clients of Lexer that aren't friends.
...
- Add static method to test if the current lexer is a non-macro/non-pragma
lexer.
- Refactor some code in PPLexerChange to use this static method.
- No performance change.
llvm-svn: 59486
2008-11-18 01:33:13 +00:00
Chris Lattner
326f757698
minor cleanups and tidying, no functionality change.
...
llvm-svn: 59485
2008-11-18 01:30:42 +00:00
Chris Lattner
74112917b2
implement a fixme by making warnings for ++/-- on non-modifiable-lvalues better.
...
llvm-svn: 59484
2008-11-18 01:26:17 +00:00
Chris Lattner
30bd327746
factor some code out into a helper function
...
llvm-svn: 59483
2008-11-18 01:22:49 +00:00
Ted Kremenek
551c82aa7b
Replace more uses of 'CurLexer->' with 'CurPPLexer->'. No performance change.
...
llvm-svn: 59482
2008-11-18 01:12:54 +00:00
Ted Kremenek
6b73291462
Add hooks to use PTHLexer::Lex instead of Lexer::Lex when CurLexer is null.
...
Performance tests on Cocoa.h (using the regular Lexer) shows no performance
difference.
llvm-svn: 59479
2008-11-18 01:04:47 +00:00
Ted Kremenek
e2c23daa14
Update Xcode project.
...
llvm-svn: 59478
2008-11-18 00:57:33 +00:00
Ted Kremenek
59e003e538
Added conditional guard 'if (CurLexer)' when using SetCommentRetentionState().
...
This is because the PTHLexer will not support this method. Performance testing
on preprocessing Cocoa.h shows that this results in a negligible performance
difference (less than 1%).
I tried making Lexer::SetCommentRetentionState() an out-of-line function (a
precursor to making it a virtual function in PreprocessorLexer) and noticed a 1%
decrease in speed (it is called in a hot part of the Preprocessor).
llvm-svn: 59477
2008-11-18 00:43:07 +00:00
Ted Kremenek
30cd88caab
Change a bunch of uses of 'CurLexer->' to 'CurPPLexer->', which should be the
...
alias for the current PreprocessorLexer. No functionality change. Performance
testing shows this results in no performance degradation when preprocessing
Cocoa.h.
llvm-svn: 59474
2008-11-18 00:34:22 +00:00
Ted Kremenek
68ef9fc6ae
- Add 'CurPPLexer' to Preprocessor to keep track of the current
...
PreprocessorLexer, which will either be a 'Lexer' or 'PTHLexer'.
- Added stub field 'CurPTHLexer' to keep track of the current PTHLexer.
- Modified IncludeStackInfo to track both the current PTHLexer and
current PreprocessorLexer.
llvm-svn: 59472
2008-11-18 00:12:49 +00:00
Sebastian Redl
8071edb297
Implement effects of 'mutable', and a few comments from Chris on its parsing.
...
llvm-svn: 59470
2008-11-17 23:24:37 +00:00
Douglas Gregor
92751d41a0
Eliminate all of the placeholder identifiers used for constructors,
...
destructors, and conversion functions. The placeholders were used to
work around the fact that the parser and some of Sema really wanted
declarators to have simple identifiers; now, the code that deals with
declarators will use DeclarationNames.
llvm-svn: 59469
2008-11-17 22:58:34 +00:00
Ted Kremenek
c775712192
Fold assertion into second valid else branch. This removes a compiler warning
...
where the control reaches the end of a non-void function and also allows the
compiler to generate better code. When this assertion is false we can easily
add more else cases.
llvm-svn: 59468
2008-11-17 22:55:12 +00:00
Steve Naroff
773cdc7c0d
Fix <rdar://problem/6333904> [sema] message lookup on super is incorrect
...
Missing special lookup rule in Sema::ActOnInstanceMessage().
llvm-svn: 59467
2008-11-17 22:29:32 +00:00
Douglas Gregor
0f492d1a11
Only test test/CodeGenObjC/synchronized.m as a i686-apple-darwin8 target
...
llvm-svn: 59463
2008-11-17 20:45:14 +00:00
Douglas Gregor
ae2fbad373
Updated IdentifierResolver to deal with DeclarationNames. The names of
...
C++ constructors, destructors, and conversion functions now have a
FETokenInfo field that IdentifierResolver can access, so that these
special names are handled just like ordinary identifiers. A few other
Sema routines now use DeclarationNames instead of IdentifierInfo*'s.
To validate this design, this code also implements parsing and
semantic analysis for id-expressions that name conversion functions,
e.g.,
return operator bool();
The new parser action ActOnConversionFunctionExpr takes the result of
parsing "operator type-id" and turning it into an expression, using
the IdentifierResolver with the DeclarationName of the conversion
function. ActOnDeclarator pushes those conversion function names into
scope so that the IdentifierResolver can find them, of course.
llvm-svn: 59462
2008-11-17 20:34:05 +00:00
Chris Lattner
9b3bbe9db7
Implement rdar://6319320: give a good diagnostic for cases where people
...
are trying to use the old GCC "casts as lvalue" extension. We don't and
will hopefully never support this.
llvm-svn: 59460
2008-11-17 19:51:54 +00:00
Steve Naroff
753567f2c1
Fix <rdar://problem/6316324> [sema] spurious warning on comparison of qualified id.
...
llvm-svn: 59459
2008-11-17 19:49:16 +00:00
Ted Kremenek
f9f58f085d
Updated checker build.
...
llvm-svn: 59457
2008-11-17 19:26:13 +00:00
Fariborz Jahanian
e3126a24e3
Test case for objective-c's @synchronized statement.
...
llvm-svn: 59451
2008-11-17 18:03:28 +00:00
Douglas Gregor
accde4343c
Add TODO item for adding more source-range information to declarators
...
llvm-svn: 59446
2008-11-17 17:14:10 +00:00
Steve Naroff
ecf2bb8724
Fix <rdar://problem/6320086> parser rejects block capturing ivar.
...
llvm-svn: 59444
2008-11-17 16:28:52 +00:00
Douglas Gregor
d69246bd5b
Some cleanups for C++ operator overloading
...
llvm-svn: 59443
2008-11-17 16:14:12 +00:00
Douglas Gregor
9edcc802c3
Simplify error messages for two-parameter overloaded increment/decrement operators
...
llvm-svn: 59442
2008-11-17 15:03:30 +00:00
Douglas Gregor
77324f3854
Introduction the DeclarationName class, as a single, general method of
...
representing the names of declarations in the C family of
languages. DeclarationName is used in NamedDecl to store the name of
the declaration (naturally), and ObjCMethodDecl is now a NamedDecl.
llvm-svn: 59441
2008-11-17 14:58:09 +00:00
Chris Lattner
d1f5e5d304
pad header out to 80 cols
...
llvm-svn: 59438
2008-11-17 04:06:37 +00:00
Chris Lattner
8ae89ca65e
add OperatorKinds.* to the project.
...
llvm-svn: 59437
2008-11-17 04:05:52 +00:00
Chris Lattner
bcca40b264
line up some columns, no functionality change.
...
llvm-svn: 59436
2008-11-17 04:03:07 +00:00
Eli Friedman
dcbcbb827d
A few corrections to the expr constant work. Not enabled at the
...
moment.
llvm-svn: 59435
2008-11-17 03:57:28 +00:00
Anders Carlsson
4425d8e37b
More expr constant work. (Off by default).
...
llvm-svn: 59433
2008-11-17 01:58:55 +00:00
Anders Carlsson
899c7050b6
Address some comments Eli had.
...
llvm-svn: 59430
2008-11-16 22:46:56 +00:00
Nuno Lopes
527b5a6858
use HandleConversionToBool() to check if a given cond is foldable (per Eli's comment)
...
llvm-svn: 59429
2008-11-16 22:06:39 +00:00
Anders Carlsson
9ddf7bedf9
More complex float evaluator support.
...
llvm-svn: 59428
2008-11-16 21:51:21 +00:00
Chris Lattner
807e8c5d63
Describe how constant folding and i-c-e diagnosing should work.
...
Unfortunately, we're not here yet, but eventually Expr::isConstantExpr
and friends should go away.
llvm-svn: 59427
2008-11-16 21:48:07 +00:00
Chris Lattner
67d7b9204c
rename Expr::tryEvaluate to Expr::Evaluate.
...
llvm-svn: 59426
2008-11-16 21:24:15 +00:00
Anders Carlsson
537969c237
Add very limited support for evaluating complex floats.
...
llvm-svn: 59425
2008-11-16 20:27:53 +00:00
Chris Lattner
1b03f76113
Trivial tidying
...
llvm-svn: 59424
2008-11-16 20:22:05 +00:00
Chris Lattner
e0a828ee41
add PTHLexer.h to project
...
llvm-svn: 59423
2008-11-16 20:18:49 +00:00
Nuno Lopes
e236a48210
fix folding of comma if given a non-constant operand.
...
Eli please take a look, as I'm not sure if this gets the extension warning in the right place
llvm-svn: 59422
2008-11-16 20:09:07 +00:00
Nuno Lopes
420426100c
make IntExprEvaluator fold the ?: operator
...
llvm-svn: 59421
2008-11-16 19:28:31 +00:00
Anders Carlsson
9f9e4249cc
More work on the constant evaluator. Eli, it would be great if you could have a look at this.
...
llvm-svn: 59420
2008-11-16 19:01:22 +00:00
Chris Lattner
962b4eed9d
Fix PR3075, __builtin_stdarg_start being misprototyped. This affects netbsd headers.
...
llvm-svn: 59419
2008-11-16 18:43:46 +00:00
Chris Lattner
e6de6252c2
Fix PR3077: tokens that come from macro expansions whose macro was
...
defined in a system header should be treated as system header tokens
even if they are instantiated in a different place.
llvm-svn: 59418
2008-11-16 18:36:34 +00:00
Zhongxing Xu
e76577a97d
add targe triple commandline option to fix test failure on Linux.
...
llvm-svn: 59412
2008-11-16 09:17:52 +00:00
Chris Lattner
981f33b0b6
add dump and print methods, add operator<< for APValue.
...
llvm-svn: 59411
2008-11-16 07:46:48 +00:00
Chris Lattner
85d1908caf
move some APValue methods out of line.
...
llvm-svn: 59410
2008-11-16 07:35:53 +00:00
Anders Carlsson
acc7981883
Add the ability to evaluate comparison operators with floating point numbers as operands.
...
llvm-svn: 59408
2008-11-16 07:17:21 +00:00
Zhongxing Xu
99a96d6ef3
Enhance modularization: return a <state,loc> pair to let GRExprEngine modify the
...
environment.
llvm-svn: 59407
2008-11-16 07:06:26 +00:00
Anders Carlsson
430887742e
More constant expr work.
...
llvm-svn: 59405
2008-11-16 06:23:45 +00:00
Chris Lattner
9ce8a533cd
daniel prefers completed thoughts.
...
llvm-svn: 59404
2008-11-16 06:16:27 +00:00
Zhongxing Xu
a3b2ef6fa9
Re-enable array-struct test.
...
llvm-svn: 59396
2008-11-16 04:47:39 +00:00
Zhongxing Xu
ceca80619f
Enhances SCA to process untyped region to typed region conversion.
...
- RegionView and RegionViewMap is introduced to assist back-mapping from
super region to subregions.
- GDM is used to carry RegionView information.
- AnonTypedRegion is added to represent a typed region introduced by pointer
casting. Later AnonTypedRegion can be used in other similar cases, e.g.,
malloc()'ed region.
- The specific conversion is delegated to store manager.
llvm-svn: 59382
2008-11-16 04:07:26 +00:00
Chris Lattner
e132e2432a
Start implementing support for @synchonized with the darwin ObjC API.
...
Patch by Fariborz!
llvm-svn: 59377
2008-11-15 21:26:17 +00:00
Anders Carlsson
ee0d90fe30
Check in code that uses tryEvaluate for emitting constant exprs (not used yet).
...
llvm-svn: 59375
2008-11-15 20:45:50 +00:00
Anders Carlsson
c2480a5589
Handle padding in the constant CFString struct. Fixes PR3046.
...
llvm-svn: 59372
2008-11-15 18:54:24 +00:00
Anders Carlsson
c9dacf4fdd
Use IgnoreParenCasts. No functionality change.
...
llvm-svn: 59371
2008-11-15 18:52:06 +00:00
Zhongxing Xu
461b4f4276
Use the allocator of ExplodedGraph. The whole static analysis module uses it.
...
llvm-svn: 59359
2008-11-15 08:19:58 +00:00
Anders Carlsson
312045115e
Fix silly bug spotted by Daniel Dunbar
...
llvm-svn: 59358
2008-11-15 06:35:36 +00:00
Zhongxing Xu
6a276cf5b7
Improve zero value generation.
...
llvm-svn: 59356
2008-11-15 05:18:50 +00:00
Zhongxing Xu
fe354a200a
Add isUnsigned option.
...
llvm-svn: 59355
2008-11-15 05:17:04 +00:00
Ted Kremenek
1b2dace792
Reduce permissiveness of assertion.
...
llvm-svn: 59354
2008-11-15 05:00:27 +00:00
Ted Kremenek
9f748e23e3
Updated checker build.
...
llvm-svn: 59353
2008-11-15 04:57:19 +00:00
Ted Kremenek
3ebd7dea7e
Add a test case for compound assignments that lazily symbolicate the value of the LHS when the computation type is an integer of more bits.
...
llvm-svn: 59352
2008-11-15 04:44:13 +00:00
Ted Kremenek
4413714946
Reverted part of r59335: http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20081110/009243.html
...
In that patch I added a bogus type promotion for unary '!'.
The real bug was more fallout from edges cases with compound assignments and conjured symbolic values. Now the conjured value has the type of the LHS expression, and we do a promotion to the computation type. We also now correctly do a conversion from the computation type back to the LHS type.
llvm-svn: 59349
2008-11-15 04:01:56 +00:00
Ted Kremenek
ac172fc574
Re-enable an assertion that I mistakenly removed.
...
llvm-svn: 59348
2008-11-15 02:35:08 +00:00
Anders Carlsson
d0e4f2b106
Handle complex return values.
...
llvm-svn: 59345
2008-11-15 01:29:05 +00:00
Ted Kremenek
519a223056
Use the correct QualType when creating the '0' constant.
...
llvm-svn: 59343
2008-11-15 00:40:08 +00:00
Ted Kremenek
1ca3346b19
Implement FIXME in GRExprEngine::VisitUnaryOperator() to handle implicit conversions caused by the '!' operator. This required adding some logic to GRSimpleVals to reason about nonloc::LocAsInteger SVals. This code appears to work fine, but it should eventually be cleaned up.
...
llvm-svn: 59335
2008-11-15 00:20:05 +00:00
Ted Kremenek
7eee049eea
Flush llvm::errs() when printing out SVals.
...
llvm-svn: 59334
2008-11-15 00:16:53 +00:00
Zhongxing Xu
c381841e99
Add handy method.
...
llvm-svn: 59332
2008-11-14 23:49:15 +00:00
Sebastian Redl
ccdfabab35
Implement parsing and semantic checking of the 'mutable' keyword.
...
Thanks to Doug for the review. Actual effects of mutable to follow.
llvm-svn: 59331
2008-11-14 23:42:31 +00:00
Argyrios Kyrtzidis
494d410b32
Use ReadPtr, not ReadUIntPtr through a reinterpret_cast.
...
Thanks to Sebastian for the suggestion.
llvm-svn: 59330
2008-11-14 23:32:45 +00:00
Argyrios Kyrtzidis
d800fd96af
Remove Parser::isTokenUnqualifiedId, it's not getting used anywhere.
...
llvm-svn: 59323
2008-11-14 21:41:24 +00:00
Steve Naroff
a610ab3283
Fix <rdar://problem/6372970> clang ObjC rewriter: incorrect cast when passing block argument
...
SynthBlockInitExpr() was not adding by-ref arguments to the init expr.
llvm-svn: 59322
2008-11-14 21:36:12 +00:00
Ted Kremenek
fc419a035f
Minor tweaks to liveness analysis:
...
- Block-expression for 'ObjCForCollectionStmt' is not alive before it occurs
- Recursively visit 'element' expression for ObjCForCollectionStmt to get liveness for referenced block-level expressions and variables.
llvm-svn: 59316
2008-11-14 21:07:14 +00:00
Ted Kremenek
537f6387a2
Second attempt at implementation transfer function support for ObjCForCollectionStmt. We now assume that the 'element' expression can be any lvalue.
...
llvm-svn: 59313
2008-11-14 19:47:18 +00:00
Ted Kremenek
8959a1a69a
Flow-sensitive uninitialized values analysis: properly handle the 'element' expression of ObjCForCollectionStmt (can be anything).
...
llvm-svn: 59312
2008-11-14 18:21:25 +00:00
Douglas Gregor
993603d80d
Add a new expression node, CXXOperatorCallExpr, which expresses a
...
function call created in response to the use of operator syntax that
resolves to an overloaded operator in C++, e.g., "str1 +
str2" that resolves to std::operator+(str1, str2)". We now build a
CXXOperatorCallExpr in C++ when we pick an overloaded operator. (But
only for binary operators, where we actually implement overloading)
I decided *not* to refactor the current CallExpr to make it abstract
(with FunctionCallExpr and CXXOperatorCallExpr as derived
classes). Doing so would allow us to make CXXOperatorCallExpr a little
bit smaller, at the cost of making the argument and callee accessors
virtual. We won't know if this is going to be a win until we can parse
lots of C++ code to determine how much memory we'll save by making
this change vs. the performance penalty due to the extra virtual
calls.
llvm-svn: 59306
2008-11-14 16:09:21 +00:00
Steve Naroff
2a2a41fa11
Fix <rdar://problem/6370288> clang ObjC rewriter: Too many _objc_symtab, _OBJC_SYMBOLS
...
llvm-svn: 59301
2008-11-14 14:10:01 +00:00
Douglas Gregor
be35ce953e
Don't require us to manually number the statements and expressions in StmtNodes.def. We don't need stable numbers yet, renumbering is a pain, and LAST_STMT had the wrong value anyway.
...
llvm-svn: 59300
2008-11-14 12:46:07 +00:00
Zhongxing Xu
c967d03528
Improve comments.
...
llvm-svn: 59294
2008-11-14 09:23:38 +00:00
Ted Kremenek
99d4ff3c7a
Handle the case where 'element' in ObjCforCollectionstmt is not a DeclStmt or DeclRefExpr.
...
llvm-svn: 59290
2008-11-14 01:58:12 +00:00
Ted Kremenek
5cf87ff564
Fix CFG construction for ObjCForCollectionStmt: 'element' expression can be anything that evaluates to an lvalue
...
llvm-svn: 59289
2008-11-14 01:57:41 +00:00
Ted Kremenek
33d2dae0d4
Update Xcode project.
...
llvm-svn: 59285
2008-11-14 01:16:15 +00:00
Ted Kremenek
a9d3e6c087
Rename header file.
...
Update include files.
llvm-svn: 59284
2008-11-14 01:14:18 +00:00
Ted Kremenek
63f4398e0b
Rename ExprDeclBitVector to BlkExprDeclBitVector, and store mappings from Stmt* to bit indices instead using Expr*.
...
llvm-svn: 59283
2008-11-14 01:13:07 +00:00
Daniel Dunbar
62efa23518
Fix some validation errors.
...
llvm-svn: 59272
2008-11-13 23:01:34 +00:00
Daniel Dunbar
ed40bc19c9
Start a "hacking" page with some simple notes on getting started
...
developing clang.
llvm-svn: 59270
2008-11-13 22:49:41 +00:00
Steve Naroff
c9337928c1
Add file to VC++ project.
...
llvm-svn: 59261
2008-11-13 21:16:53 +00:00
Douglas Gregor
58e008d2a6
Some cleanup for the implementation of built-in operator
...
candidates. Thanks to Chris for the review!
llvm-svn: 59260
2008-11-13 20:12:29 +00:00
Steve Naroff
f8cfd1647e
Fix an obscure rewriter bug when rewriting implementations that don't have a corresponding interface (found while doing random testing on another bug).
...
llvm-svn: 59259
2008-11-13 20:07:04 +00:00
Chris Lattner
0046de17e5
Fix a couple of suboptimalities in error recovery.
...
1. In the top level of ParseStatementOrDeclaration, don't eat a } if we
just parsed a statement if it list there. Also, don't even bother
emitting an error about a missing semicolon if the statement had a
bug (an rbrace is fine).
2. In do/while parsing, don't require a 'while' to be present if the do
body didn't parse.
This allows us to generate a clean diagnostic for this code:
t.c:1:22: error: expected expression
void foo (void) { do . while (0); }
^
Thanks to Neil for pointing this out.
llvm-svn: 59256
2008-11-13 18:52:53 +00:00
Chris Lattner
f3e388d1bf
don't highlight field name, just put a caret on it.
...
llvm-svn: 59255
2008-11-13 18:49:38 +00:00
Chris Lattner
7464fc784e
disable these two tests, they crash and take a long time to run crashreporter etc.
...
llvm-svn: 59254
2008-11-13 18:45:47 +00:00
Chris Lattner
9226b92563
implement a fixme :), switch to -verify mode.
...
llvm-svn: 59253
2008-11-13 18:42:17 +00:00
Steve Naroff
832d89012f
Fix <rdar://problem/6343942> clang ObjC rewriter: crash rewriting blocks
...
and <rdar://problem/6344601> clang ObjC rewriter: crash passing Block parameter?
llvm-svn: 59251
2008-11-13 17:40:07 +00:00
Ted Kremenek
a0d2a1661a
Using llvm::OwningPtr<> for CurLexer and CurTokenLexer. This makes both the ownership semantics of these objects explicit within the Preprocessor and also tightens up the code (explicit deletes not needed).
...
llvm-svn: 59249
2008-11-13 17:11:24 +00:00
Ted Kremenek
7c1e61d78b
Use PushIncludeMacroStack/PopMacroStack instead of manually pushing/popping from IncludeMacroStack. This is both cleaner and makes the include stack transparently extensible.
...
llvm-svn: 59248
2008-11-13 16:51:03 +00:00