Hartmut Kaiser
b20beb88cd
Updated VC++ build system
...
llvm-svn: 43478
2007-10-29 21:54:46 +00:00
Hartmut Kaiser
ae240716ec
Added a missing #include.
...
llvm-svn: 43477
2007-10-29 21:54:12 +00:00
Steve Naroff
e093339601
Remove a bunch of TODO's that have been done for quite some time...
...
llvm-svn: 43476
2007-10-29 21:39:29 +00:00
Steve Naroff
33a1e80dd1
This commit contains lot's of small tweaks to how we pass around and store SourceLocation's for interfaces/protocols/categories/implementations.
...
llvm-svn: 43475
2007-10-29 21:38:07 +00:00
Ted Kremenek
31974dfcdf
Added support for StmtIterators to iterate over the size expressions
...
of VariableArrayTypes that appear in TypedefDecls.
for example:
typedef int T[x][x];
the StmtIterator will iterate over "x" and "x" as subexpressions of
the DeclStmt for T.
llvm-svn: 43474
2007-10-29 21:38:03 +00:00
Ted Kremenek
899ef13376
Fixed deadcode bug where check for NULL decl occured within a block
...
where the decl would always be non-NULL. Moved the check to after the
block to properly tidy up the iterator's state.
llvm-svn: 43473
2007-10-29 21:23:58 +00:00
Devang Patel
134b3f4b55
Add RecordOrganizer::layoutUnionFields()
...
llvm-svn: 43472
2007-10-29 20:50:19 +00:00
Ted Kremenek
2f70e71dcc
Modified StmtIterator to support iteration over the size expressions
...
of VariableTypeArray types that appear in DeclStmts.
Removed operator-- from StmtIterator. operator-- added undesired
complexity, and we have no consumers of it.
llvm-svn: 43471
2007-10-29 20:50:16 +00:00
Ted Kremenek
6d845f0414
Modified CFG pretty-printing to directly use the (reverse) body
...
iterator of a CompountStmt instead of relying on StmtIterators.
llvm-svn: 43469
2007-10-29 20:41:04 +00:00
Ted Kremenek
a80b257a21
Renamed internal variables of StmtIteratorBase to make the code
...
slightly more succinct.
Introduced VariableArrayType* within StmtIteratorBase to (soon)
support iteration over the size expressions of variable length arrays.
llvm-svn: 43455
2007-10-29 18:04:38 +00:00
Fariborz Jahanian
bc2759372b
Do the encoding of ivar types in the ivar metadata.
...
llvm-svn: 43454
2007-10-29 17:16:25 +00:00
Ted Kremenek
e2763b0948
Added some comments.
...
Moved a dependent predicate in an if statement to be an assertion
within the if statement body.
llvm-svn: 43453
2007-10-29 17:13:39 +00:00
Ted Kremenek
5d18ce750a
Added to test case for "self-comparison check" uses of relation operators: x < x and x > x
...
should emit warnings.
llvm-svn: 43451
2007-10-29 17:02:56 +00:00
Ted Kremenek
e451eae8d7
For non-floating point types, added check for expressions of the form
...
"x == x" and "x != x". We emit a warning for these since they always evaluate
to a constant value and often indicate a logical error.
Added test case for this check.
llvm-svn: 43450
2007-10-29 16:58:49 +00:00
Devang Patel
d45e055f2c
Insetead of assert() just emit an error message for
...
an unimplemented work and continue.
llvm-svn: 43449
2007-10-29 16:56:27 +00:00
Ted Kremenek
fa907b8168
For floating point equality check, we now ignore parentheses. e.g.:
...
(x) == x is the treated the same as x == x.
llvm-svn: 43448
2007-10-29 16:45:23 +00:00
Ted Kremenek
d4ecc6da67
For checking for floating point comparison using == or !=, we now suppress
...
errors for cases such as "x == x".
Added test case to test this feature.
llvm-svn: 43447
2007-10-29 16:40:01 +00:00
Anders Carlsson
18acd44514
Address Chris's comments.
...
llvm-svn: 43445
2007-10-29 06:33:42 +00:00
Anders Carlsson
0f1cacd049
Fix logic error.
...
llvm-svn: 43443
2007-10-29 05:58:43 +00:00
Chris Lattner
b104d31bd9
when checking for type equality, ignore typedefs.
...
llvm-svn: 43441
2007-10-29 05:15:40 +00:00
Chris Lattner
5c5808a9a3
improve error recovery handling broken 'then' or 'else' stmts in
...
if statements. This implements Sema/if-empty-body.c:f3, silencing
a bogus secondary warning. It also improve the location info for
the nullstmts created for recovery purposes.
llvm-svn: 43440
2007-10-29 05:08:52 +00:00
Anders Carlsson
d849982e84
Add (partial) support for @encode.
...
llvm-svn: 43439
2007-10-29 05:01:08 +00:00
Chris Lattner
70ae491e42
The callers of ParseStructDeclaration are not expecting it to
...
eat the terminating ;. Fix one place where it did, allowing this
to compile without error:
struct x {
int a;
union {
int b;
float c;
};
int d;
};
This reduces diagnostics on PR1750 from 33 to 27.
llvm-svn: 43437
2007-10-29 04:42:53 +00:00
Chris Lattner
3bc4d20862
casting to void is ok for structs (C99 6.5.4p2), this fixes
...
one bogus error on PR1750.
llvm-svn: 43436
2007-10-29 04:26:44 +00:00
Chris Lattner
cc779571b8
Add prototype info for __builtin_memcpy, reducing #diagnostics from 37 to 34 on
...
PR1750
llvm-svn: 43435
2007-10-29 04:18:06 +00:00
Chris Lattner
645ff3ff61
Fix a parser bug on labeled inline asm stmts, allowing us
...
to parse stuff like:
asm volatile("1: rex64/fxrstor (%[fx])\n\t"
"2:\n"
".section .fixup,\"ax\"\n"
"3: movl $-1,%[err]\n"
" jmp 2b\n"
".previous\n"
".section __ex_table,\"a\"\n"
" .align 8\n"
" .quad 1b,3b\n"
".previous"
: [err] "=r" (err)
: [fx] "cdaSDb" (fx), "m" (*fx), "0" (0));
This reduces # diagnostics on PR1750 from 49 to 37.
llvm-svn: 43434
2007-10-29 04:06:22 +00:00
Chris Lattner
73c56c0735
Implement *skeletal* support for representing GNU inline asm stmts in the AST,
...
resolving a crash on a .i file in PR1750. We now generate 49 errors on the
.i file in that bug.
llvm-svn: 43433
2007-10-29 04:04:16 +00:00
Chris Lattner
1159f065be
Fix a major bug in the Type::getAs*Type methods: they didn't strip off
...
typeof(type) and typeof(expr) correctly. Now provide a single point of
contact (Type::getDesugaredType) for doing the shallow stripping we need.
llvm-svn: 43432
2007-10-29 03:41:11 +00:00
Anders Carlsson
ceced4ca73
Generate code for __builtin_classify_type.
...
llvm-svn: 43429
2007-10-29 02:59:40 +00:00
Anders Carlsson
7080597adf
Add BuiltinType::Char_S to Type::isCharType
...
llvm-svn: 43428
2007-10-29 02:52:18 +00:00
Ted Kremenek
b6fafb6bf0
Implemented serialization for TypedefType.
...
llvm-svn: 43423
2007-10-28 21:21:04 +00:00
Ted Kremenek
3fd831fd14
Implemented serialization of FunctionTypeProto.
...
llvm-svn: 43419
2007-10-28 00:59:26 +00:00
Ted Kremenek
d33b4adaed
Implemented serialization of FunctionTypeNoProto.
...
llvm-svn: 43418
2007-10-27 19:58:08 +00:00
Ted Kremenek
3e6c227f97
Implemented serialization for VectorType.
...
llvm-svn: 43417
2007-10-27 19:05:09 +00:00
Ted Kremenek
8e8bf5d0bf
More work on type serialization: added support for serializing BuiltinTypes.
...
llvm-svn: 43414
2007-10-26 23:52:52 +00:00
Fariborz Jahanian
801b63525d
Path to synthesize 'instance' size field of _objc_class metadata.
...
llvm-svn: 43409
2007-10-26 23:09:28 +00:00
Ted Kremenek
6698b43389
Completed serialization of ConstantArrayTypes (now that APInt serialization is in place).
...
llvm-svn: 43407
2007-10-26 22:00:08 +00:00
Steve Naroff
161a92b976
Start rewriting ObjC interfaces. As a start, we comment out all the methods. This involved refining how the parser/AST passes/manages SourceLocations for ObjcMethodDecl's.
...
llvm-svn: 43404
2007-10-26 20:53:56 +00:00
Fariborz Jahanian
3339d0d14e
This patch allows synthesis generation of ivar offset for legacy objective-c @implementation
...
decl without an @interface decl.
llvm-svn: 43403
2007-10-26 20:50:24 +00:00
Ted Kremenek
16c7d8ce5b
Added skeleton implementation of serialization for types (not complete).
...
llvm-svn: 43397
2007-10-26 20:24:35 +00:00
Fariborz Jahanian
99e96b0f11
Patch to synthesize computation of Ivar offset in rewritten c file.
...
Thanks to Steve N. to point out using of offsetof for this.
llvm-svn: 43391
2007-10-26 19:46:17 +00:00
Devang Patel
ed93c3c3b3
Codegen union member references.
...
llvm-svn: 43390
2007-10-26 19:42:18 +00:00
Devang Patel
7718d7a2eb
Handle non LValue base expressions.
...
llvm-svn: 43387
2007-10-26 18:15:21 +00:00
Devang Patel
ffdb07c939
Code gen static initializer.
...
llvm-svn: 43386
2007-10-26 17:50:58 +00:00
Devang Patel
8717417b3b
Codegen array initializers.
...
llvm-svn: 43385
2007-10-26 17:44:44 +00:00
Devang Patel
19c2b9a66f
Codegen global array initializers.
...
llvm-svn: 43383
2007-10-26 16:31:40 +00:00
Fariborz Jahanian
22c6a22d76
Pretty printing for ivar list of an interface block.
...
llvm-svn: 43382
2007-10-26 16:29:12 +00:00
Hartmut Kaiser
d57aca25fc
Disambiguated variable name to comply with VC++'s archaic variable scoping rules.
...
llvm-svn: 43371
2007-10-25 22:59:17 +00:00
Hartmut Kaiser
414d7e373e
Updated VC++ build system
...
llvm-svn: 43370
2007-10-25 22:58:31 +00:00
Ted Kremenek
066f60321d
Modified StmtIterator to now include visiting the initialization expression for EnumConstantDecls.
...
llvm-svn: 43366
2007-10-25 22:24:19 +00:00
Devang Patel
b989c9e65c
Fix "strbuf += stufflen;" crash.
...
llvm-svn: 43365
2007-10-25 22:19:13 +00:00
Devang Patel
5ea6d7f1be
Document ConvertNewType() method and make it a private method.
...
llvm-svn: 43363
2007-10-25 21:40:12 +00:00
Ted Kremenek
5749aaedd9
Added DeclSerialization.cpp to XCode project.
...
llvm-svn: 43362
2007-10-25 21:39:10 +00:00
Ted Kremenek
1f1e756483
Added skeleton for Decl serialization.
...
llvm-svn: 43361
2007-10-25 21:37:16 +00:00
Fariborz Jahanian
51f2182338
Refactored several meta data for reusability.
...
Changed the entire rewrite of metadata to write to std::string
object instead of stdout.
llvm-svn: 43360
2007-10-25 20:55:25 +00:00
Devang Patel
29e3824453
Cache llvm::Type through PATypeHolder.
...
llvm-svn: 43355
2007-10-25 18:32:36 +00:00
Ted Kremenek
222211a425
changed #include of Serialization.h to SerializationFwd.h to reduce
...
compilation time.
llvm-svn: 43354
2007-10-25 18:27:10 +00:00
Chris Lattner
36f81fb065
Fix a recovery bug Fariborz and I noticed yesterday. We were producing:
...
method.c:4:3: error: use of undeclared identifier 'BADIDENT'
&BADIDENT, 0
^
method.c:5:2: error: expected '}'
};
^
method.c:3:14: error: to match this '{'
struct S A = {
^
now we only produce:
method.c:4:3: error: use of undeclared identifier 'BADIDENT'
&BADIDENT, 0
^
llvm-svn: 43349
2007-10-25 17:27:01 +00:00
Chris Lattner
88710ff5b8
simplify change.
...
llvm-svn: 43348
2007-10-25 17:18:59 +00:00
Chris Lattner
94a41ff6c1
Fix a bug steve noticed when handling nested rewrites. We now turn this:
...
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
into:
NSAutoreleasePool * pool = objc_msgSend(objc_msgSend(objc_getClass("NSAutoreleasePool"), sel_getUid("alloc")), sel_getUid("init"));
instead of:
NSAutoreleasePool * pool = objc_msgSend(objc_msgSend(objc_getClass("NSAutoreleasePool"), sel_getUid("alloc")), sel_getUid("init"))utoreleasePool"), sel_getUid("alloc")) init];
llvm-svn: 43347
2007-10-25 17:17:34 +00:00
Chris Lattner
211f8b8352
Convert one type of metadata to use std::string instead of
...
printf as an example.
llvm-svn: 43346
2007-10-25 17:07:24 +00:00
Ted Kremenek
bd8497b011
Added SourceLocation.cpp to XCode project.
...
llvm-svn: 43344
2007-10-25 16:03:53 +00:00
Ted Kremenek
4edcb4d676
Implemented serialization of SourceLocation and SourceRange objects.
...
llvm-svn: 43343
2007-10-25 16:02:43 +00:00
Ted Kremenek
6e64c3f8ec
Added constness to accessors in CompoundStmt.
...
llvm-svn: 43342
2007-10-25 15:39:09 +00:00
Chris Lattner
35e564ed09
Add a new ChooseExpr::isConditionTrue method to unify
...
some code.
llvm-svn: 43322
2007-10-25 00:29:32 +00:00
Fariborz Jahanian
3df412a6ea
Refactored RewriteObjcMethodsMetaData to better rewrite
...
instance/class methods metadata.
llvm-svn: 43320
2007-10-25 00:14:44 +00:00
Ted Kremenek
ed763de6cb
Added accessors to CompoundStmt to retrieve the source locations for the
...
left and right bracket. This is useful for serialization.
llvm-svn: 43318
2007-10-25 00:08:50 +00:00
Devang Patel
e85285b9f3
Remove unused #includes
...
llvm-svn: 43317
2007-10-24 23:42:18 +00:00
Steve Naroff
574440fa58
More work on translating message expressions.
...
Still to do:
- Chris will fix a bug in the rewriting engine for nested stmts. For example, the following:
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
tranlates to:
NSAutoreleasePool * pool = objc_msgSend(objc_msgSend(objc_getClass("NSAutoreleasePool"), sel_getUid("alloc")), sel_getUid("init"))utoreleasePool"), sel_getUid("alloc")) init];
...which is correct, except there is garbage after sel_getUid("init"). This is because the rewriter isn't updating the extent of the containing message expression.
- Do the crazy cast thang.
llvm-svn: 43316
2007-10-24 22:48:43 +00:00
Devang Patel
d68df20620
Handle
...
foo()->a = 42;
llvm-svn: 43315
2007-10-24 22:26:28 +00:00
Fariborz Jahanian
aa29fb4be8
Remove explicit use of size of known structs in metadata generation.
...
llvm-svn: 43313
2007-10-24 21:25:12 +00:00
Fariborz Jahanian
486f718f14
Couple of minor changes. 1) Metaclass metadata also has a reference to
...
protocol meta-data (unlike what documentation says). 2) Include objc.h so,
we can compile the generated metadata with both gcc and clang.
llvm-svn: 43311
2007-10-24 20:54:23 +00:00
Devang Patel
bc50aab635
Move RecordOrganizer into CodeGenTypes.cpp
...
llvm-svn: 43310
2007-10-24 20:38:06 +00:00
Fariborz Jahanian
b2f525dabc
Refactord instance and class metadata emission. Refactored protocols metadata emission.
...
Implemented emission of category metadata,
llvm-svn: 43308
2007-10-24 19:23:36 +00:00
Ted Kremenek
37a3275919
Modified current clients of Bitcode-Object serialization to use the
...
new split-header file configuration (Serialize.h and Deserialize.h)
now in place in the core LLVM repository.
Removed unneeded SerializeTrait specializations for enums in
TokenKinds.h
llvm-svn: 43306
2007-10-24 19:06:02 +00:00
Devang Patel
b67e596d86
Handle non-constant initializers.
...
llvm-svn: 43301
2007-10-24 18:05:48 +00:00
Devang Patel
43fc86d0f2
Visit CompoundLiteralExpr and InitListExpr
...
llvm-svn: 43300
2007-10-24 17:18:43 +00:00
Chris Lattner
3c799d7e9a
Fix some long lines, move code around into logical groups.
...
llvm-svn: 43299
2007-10-24 17:06:59 +00:00
Chris Lattner
6953469880
Use Ted's new mutable child iterators to update the tree as we rewrite it.
...
This will make nested subexprs work.
llvm-svn: 43296
2007-10-24 16:57:36 +00:00
Ted Kremenek
38f87dd9d0
Modified operator* for StmtIterator to return Stmt*& instead of Stmt*.
...
This permits in-place replacement of the original AST statements.
llvm-svn: 43295
2007-10-24 16:52:34 +00:00
Steve Naroff
c77380b46f
Incorporate some feedback from Chris...
...
llvm-svn: 43285
2007-10-24 01:09:48 +00:00
Devang Patel
ea37aa7d64
Constify methods and reuse RecordOrganizer object.
...
llvm-svn: 43284
2007-10-24 00:56:23 +00:00
Devang Patel
790afb0444
check base type.
...
llvm-svn: 43283
2007-10-24 00:54:17 +00:00
Devang Patel
f2423473b1
Add notes.
...
llvm-svn: 43282
2007-10-24 00:32:16 +00:00
Devang Patel
e531ae687a
Use isUnionType() predicate.
...
llvm-svn: 43281
2007-10-24 00:28:49 +00:00
Devang Patel
c4e224e59c
untabify
...
llvm-svn: 43280
2007-10-24 00:26:24 +00:00
Hartmut Kaiser
5277af121a
Fixed a strange construct, please review.
...
llvm-svn: 43278
2007-10-24 00:07:36 +00:00
Hartmut Kaiser
d37ea4f6ed
Silenced a VC++ warning.
...
llvm-svn: 43277
2007-10-24 00:06:59 +00:00
Steve Naroff
db1ab1c2b0
Add some plumbing to rewrite message expressions (still under construction).
...
llvm-svn: 43274
2007-10-23 23:50:29 +00:00
Devang Patel
61eaea88f8
Fix typo.
...
llvm-svn: 43269
2007-10-23 23:29:51 +00:00
Devang Patel
65c4afb940
Handle nested structs.
...
typdef struct A { int i; struct A *next; } A
llvm-svn: 43268
2007-10-23 23:26:46 +00:00
Ted Kremenek
f25f4a3de0
Implemented serialization for IdentifierInfo and IdentifierTable.
...
Updated serialization test code in the driver to test serialization of
these types.
llvm-svn: 43266
2007-10-23 22:18:37 +00:00
Devang Patel
30efa2eec9
Handle simple struct member expr.
...
llvm-svn: 43258
2007-10-23 20:28:39 +00:00
Steve Naroff
e670dbb9e6
- Add rewrite rule for @class .
...
- Add setter/getter to ObjcClassDecl.
- Predefined key runtime functions.
llvm-svn: 43257
2007-10-23 20:20:08 +00:00
Fariborz Jahanian
f3d5a54722
Patch to complete metadata generation for each implemented class.
...
llvm-svn: 43255
2007-10-23 18:53:48 +00:00
Devang Patel
3e11ccea96
Begin struct layout work.
...
llvm-svn: 43236
2007-10-23 02:10:49 +00:00
Fariborz Jahanian
d752eae488
Patch for initialization of class's Meta-class metadata.
...
llvm-svn: 43235
2007-10-23 00:02:02 +00:00
Fariborz Jahanian
6eafb030f0
This patch generates protocol metadata and all its sub-metadata.
...
llvm-svn: 43233
2007-10-22 21:41:37 +00:00
Chris Lattner
8beb9dee0e
Fix a crash on test/Sema/invalid-decl.c
...
llvm-svn: 43188
2007-10-19 20:10:30 +00:00
Hartmut Kaiser
b5371d22eb
Silenced a VC++ warning.
...
llvm-svn: 43179
2007-10-19 15:50:35 +00:00
Gabor Greif
24032f1ac2
add NL at end of file
...
llvm-svn: 43178
2007-10-19 15:38:32 +00:00
Fariborz Jahanian
74a1cfaf21
rewrite of metadata for implemented instance methods.
...
llvm-svn: 43159
2007-10-19 00:36:46 +00:00
Steve Naroff
648e029a3d
Include a simple test case for the previous commit...
...
llvm-svn: 43158
2007-10-19 00:05:15 +00:00
Steve Naroff
684dc4107f
Fix the previous (short lived:-) FIXME.
...
I didn't realize that GCC considers this a hard error (I thought it was built-in).
Since it's not, we should simply emit an error.
[dylan:~/llvm/tools/clang] admin% cc -c trivial.m
trivial.m:6: error: cannot find interface declaration for 'NSConstantString'
[administrators-powerbook59:~/llvm/tools/clang] admin% ../../Debug/bin/clang trivial.m
trivial.m:6:16: error: cannot find interface declaration for 'NSConstantString'
NSString *s = @"123";
^
1 diagnostic generated.
llvm-svn: 43157
2007-10-18 23:53:51 +00:00
Ted Kremenek
04746ce6f9
Fixed DeclStmt::child_begin() to actually create an iterator that
...
visits its decls, rather than just creating an "end()" iterator.
Fixed child_end() for statements and expressions to use
child_iterator() to create the end() iterator, rather than just
returning NULL.
Fixed bug in StmtIterator where we did not correctly detect if we had
marched off the end of the ScopedDecls.
llvm-svn: 43156
2007-10-18 23:28:49 +00:00
Fariborz Jahanian
e183a8259d
Check for Nullness of value built in GetObjcProtoType.
...
llvm-svn: 43155
2007-10-18 22:59:23 +00:00
Ted Kremenek
efc244722f
Minor grammar fix.
...
llvm-svn: 43154
2007-10-18 22:50:52 +00:00
Steve Naroff
eee59ebb15
Add a FIXME to an assert.
...
Change a dyn_cast_or_null back to cast (which is more efficient).
llvm-svn: 43152
2007-10-18 22:17:45 +00:00
Fariborz Jahanian
c34409c281
Patch to rewrite ivar tables metadata for classes defined.
...
llvm-svn: 43151
2007-10-18 22:09:03 +00:00
Chris Lattner
0d466153b9
remove dead #include
...
llvm-svn: 43149
2007-10-18 21:23:00 +00:00
Fariborz Jahanian
93191afdef
First patch toward rewriting of objective-c's meta data.
...
llvm-svn: 43143
2007-10-18 19:23:00 +00:00
Steve Naroff
1bb21df47f
Tweak a recent fix to UsualArithmeticConversions (made by Chris - r43113). The benefit of this tweak is it guarantees the entire routine operates on unqualified types (which I believe is a bit clearer).
...
llvm-svn: 43142
2007-10-18 18:55:53 +00:00
Ted Kremenek
0f39de13a0
Added StmtIterator.cpp and StmtIterator.h to the XCode project.
...
llvm-svn: 43139
2007-10-18 18:22:01 +00:00
Ted Kremenek
2ba761c7b8
Refactored StmtIterator into classes StmtIteratorBase (non-templated)
...
and StmtIteratorImpl (templated), which StmtIterator and
ConstStmtIterator now succintly subclass.
Implemented iteration over the initializers in DeclStmts. This is not
thoroughly tested, so there may be bugs.
llvm-svn: 43138
2007-10-18 18:19:31 +00:00
Ted Kremenek
614d84aab3
Replaced virtual method call to child_begin() in child_end() by
...
directly inlining its logic.
llvm-svn: 43137
2007-10-18 18:17:43 +00:00
Ted Kremenek
7aef89101d
Fixed broken build.
...
llvm-svn: 43132
2007-10-18 16:25:40 +00:00
Hartmut Kaiser
c8107e54d5
Silenced a couple of VC++ warnings.
...
llvm-svn: 43125
2007-10-18 12:47:01 +00:00
Hartmut Kaiser
597e172d0a
Updated VC++ build system
...
llvm-svn: 43124
2007-10-18 12:32:10 +00:00
Steve Naroff
a78c464c9e
Fix a bug in Sema::CheckConditionalOperands(). When mixing pointers and null pointer constants, we need to promote the null pointer constant (which is an integer) to the pointer type. Test case is self explanatory.
...
This surfaced yesterday, when compiling test/Sema/cocoa.m on Leopard. Since this has nothing to do with ObjC, it's kind of bizarre this hasn't shown up before. I imagine Cocoa.h on Leopard may have changed recently?
Thanks to Ted for localizing the bug and giving me a useful AST dump...
llvm-svn: 43114
2007-10-18 05:13:08 +00:00
Chris Lattner
fac7ac4130
UsualArithmeticConversions is crashing with an assert
...
when comparing "float" and "const float". This "fixes" the
issue, but may not be the right fix. Steve, please review.
Testcase here: test/Sema/usual-float.c
llvm-svn: 43113
2007-10-18 03:50:33 +00:00
Steve Naroff
8569d77349
Fix the following bug...
...
unsigned char asso_values[] = { 34 };
int legal2() {
return asso_values[0];
}
The code that creates the new constant array type was operating on the original type.
As a result, the constant type being generated was "unsigned char [1][]" (which is wrong).
The fix is to operate on the element type - in this case, the correct type is "unsigned char [1]"
I added this case to array-init.c, which clearly didn't catch this bogosity...
llvm-svn: 43112
2007-10-18 03:27:23 +00:00
Chris Lattner
c7f3981b27
remove extraneous space in @selector()
...
llvm-svn: 43110
2007-10-18 00:39:29 +00:00
Chris Lattner
810c1db3f5
remove typedef.
...
llvm-svn: 43109
2007-10-18 00:38:23 +00:00
Ted Kremenek
336886a344
Implemented 90% functionality of new child_iterator for Stmt objects
...
that will (soon) allow iteration over the initializers in
declarations. This new iterator mechanism is implemented by the
classes StmtIterator and ConstStmtIterator.
Patched a few files to use "operator++" instead of "operator+" on
child_iterators.
Friendship added in VarDecl to StmtIterator to allow returning a
reference to the initializer within the VarDecl. We may not wish this
as a permanent solution.
llvm-svn: 43105
2007-10-18 00:24:38 +00:00
Chris Lattner
9c0f9fe151
Make control flow in Expr::isConstantExpr more simple and
...
local, making the code easier to read.
llvm-svn: 43104
2007-10-18 00:20:32 +00:00
Chris Lattner
c6d91c0f6d
Add new API to rewrite one stmt/expr with another.
...
llvm-svn: 43101
2007-10-17 22:35:30 +00:00
Chris Lattner
9515625d0c
Add rewriter support for @encode expressions. For example,
...
we currently turn:
c = @encode(char *)[2] + 4;
into:
c = "foo"[2] + 4;
Right now the foo string is hard coded, but you can imagine a world
where it wouldn't be :)
llvm-svn: 43093
2007-10-17 21:28:00 +00:00
Chris Lattner
42ebe5c1e6
The size returned by Rewriter::getRangeSize should include
...
the size of the last token.
llvm-svn: 43092
2007-10-17 21:23:07 +00:00
Chris Lattner
fd64ebd3e4
Fix assertion for raw lexer.
...
llvm-svn: 43091
2007-10-17 21:22:38 +00:00
Chris Lattner
8e129c23c8
Move token length calculation out of the diagnostics machinery into
...
the lexer, where it can be shared.
llvm-svn: 43090
2007-10-17 21:18:47 +00:00
Chris Lattner
4050f071e1
wean the diagnostics machinery off the preprocessor.
...
llvm-svn: 43085
2007-10-17 20:53:57 +00:00
Chris Lattner
02b436a05a
Add a new type of lexer: a raw lexer, which does not require a preprocessor
...
object in order to do its thing.
llvm-svn: 43084
2007-10-17 20:41:00 +00:00
Steve Naroff
a3f1336e39
rename test file for builtin "id"...
...
llvm-svn: 43082
2007-10-17 18:39:04 +00:00
Ted Kremenek
5c84c01c8b
Fixed includes of "clang/AST/DeclObjC.h" to work on case-sensitive
...
filesystems (was "#include "clang/AST/DeclObjc.h", which worked fine
on a case-insensitive HFS+ volume on the Mac).
llvm-svn: 43080
2007-10-17 18:36:42 +00:00
Chris Lattner
caecf03215
add some comments.
...
llvm-svn: 43079
2007-10-17 18:28:59 +00:00
Steve Naroff
0f7a2d2dd1
Predefine all the ObjC goodies from <objc/objc.h>. Removed all the ObjC goodies from the respective test files. Moving forward, it will be very nice to assume these builtin!
...
llvm-svn: 43077
2007-10-17 17:53:50 +00:00
Fariborz Jahanian
a32aaefadc
Implementation of AST for @protocol expression.
...
llvm-svn: 43075
2007-10-17 16:58:11 +00:00
Hartmut Kaiser
7078da8e58
Updated VC++ build system.
...
Silenced some VC++ warnings.
Had to rephrase a partial specialization of the IntrospectionTrait struct in SerializationTest.cpp, please review.
Added a compiler specific workaround in IdentifierTable.h. Is that the way to fix this kind of issues?
llvm-svn: 43074
2007-10-17 15:00:17 +00:00
Chris Lattner
253023b25f
fix problems with test/sema/Cocoa.m etc on non-apple machines.
...
llvm-svn: 43067
2007-10-17 06:04:46 +00:00
Anders Carlsson
f94cd1ffe6
Generate code for static variables that don't have initializers. Also, report an error if a static initializer is not constant.
...
llvm-svn: 43058
2007-10-17 00:52:43 +00:00
Anders Carlsson
86edafc6d6
Fix the build.
...
llvm-svn: 43057
2007-10-17 00:50:25 +00:00
Ted Kremenek
970217fae9
Added Driver/SerializationTest.cpp to the XCode project.
...
llvm-svn: 43054
2007-10-16 23:40:12 +00:00
Ted Kremenek
4e816133c8
Started work on clang object serialization. Experimental
...
serialization logic as well as driver code is now in
Driver/SerializationTest.cpp. The status of this code is that it
should be used by no clients.
Added --test-pickling option to driver to run the serialization code.
Modified IdentifierInfo and IdentifierTable to have friend classes
that permit object serialization. Such friendship may not be needed
in the final design.
llvm-svn: 43052
2007-10-16 23:37:27 +00:00
Fariborz Jahanian
6bd1d612ac
Fix location processing of @selector: the range should include the @ sign.
...
llvm-svn: 43051
2007-10-16 23:21:02 +00:00
Steve Naroff
077c83bddb
Add Sema::CheckMessageArgumentTypes()...
...
llvm-svn: 43050
2007-10-16 23:12:48 +00:00
Chris Lattner
37390bed4d
Fix location processing of @encode: the range should include the @ sign.
...
@selector probably gets this wrong also.
llvm-svn: 43048
2007-10-16 22:51:17 +00:00
Chris Lattner
a7c19feca2
Add a new Rewriter::getRangeSize method.
...
Rename SourceRange::Begin()/End() to getBegin()/getEnd() for
consistency with other code.
Start building the rewriter towards handling @encode.
llvm-svn: 43047
2007-10-16 22:36:42 +00:00
Fariborz Jahanian
ebac2cb235
Patch to diagnose duplicate method implementations.
...
llvm-svn: 43046
2007-10-16 21:52:23 +00:00
Steve Naroff
d275426449
Remove ObjcMethodDecl::getNumMethodParams/getMethodParamDecl, they aren't used/needed.
...
Change ObjcMethodDecl::getMethodType to getResultType, to match FunctionDecl.
llvm-svn: 43045
2007-10-16 21:36:54 +00:00
Chris Lattner
5a2fe28aca
publish location info
...
llvm-svn: 43044
2007-10-16 21:21:26 +00:00
Fariborz Jahanian
923aebe09c
Steve, pointer out that getName() is available for selectors. Made code much smaller, thanks.
...
llvm-svn: 43042
2007-10-16 21:07:53 +00:00
Chris Lattner
0bd1c97293
Push the rewriter forward a bit more. Now it rewrites
...
#import to #include's as a test.
llvm-svn: 43041
2007-10-16 21:07:07 +00:00
Chris Lattner
9a36bb84ea
these aren't const.
...
llvm-svn: 43040
2007-10-16 21:04:49 +00:00
Fariborz Jahanian
81ccd88f0e
Fix problem dumping/printing method names with null selector.
...
llvm-svn: 43039
2007-10-16 20:52:13 +00:00
Fariborz Jahanian
4bef462a3e
Patch to implement AST generation for objective-c's @selector expression.
...
llvm-svn: 43038
2007-10-16 20:40:23 +00:00
Steve Naroff
55f52da24c
Emit diagnostics for methods not found.
...
llvm-svn: 43037
2007-10-16 20:39:36 +00:00
Anton Korobeynikov
002c52ce6e
Unbreak mingw32. Maybe there should be something like libClandSystem? :)
...
llvm-svn: 43029
2007-10-16 09:09:44 +00:00
Chris Lattner
e6dcd505d0
initialization of references should not do default fn/array promotions.
...
This fixes a bug Anders noticed.
llvm-svn: 43024
2007-10-16 02:55:40 +00:00
Steve Naroff
698495522d
Bad cast...need to use dyn_cast_or_null. Also changed Sema::InitBuiltinVaListType (which had the same bug).
...
llvm-svn: 43023
2007-10-16 00:00:18 +00:00
Fariborz Jahanian
76a9427783
Patch to parse @selector expressions.
...
llvm-svn: 43022
2007-10-15 23:39:13 +00:00
Steve Naroff
f73b784a5e
Change the type of ObjCStringLiteral from "struct __builtin_CFString *" to "NSConstantString *".
...
This makes the typecheck much happier. Without this change, the type checker would have to special case "struct __builtin_CFString *". This change does assume the interface for NSConstantString is declared in the translation unit.
I left ASTContext::getCFConstantStringType() around for now (with a comment that says it is currently unused).
llvm-svn: 43021
2007-10-15 23:35:17 +00:00
Steve Naroff
126b4d835f
Fix a parser bug with message expressions - need to call ParsePostfixExpressionSuffix().
...
Now were correctly allow the following...
i = [str rangeOfString:@"]"].length;
llvm-svn: 43012
2007-10-15 20:55:58 +00:00
Steve Naroff
32e44c0032
Move type compatibility predicates from Type to ASTContext. In addition, the predicates are now instance methods (they were previously static class methods on Type).
...
This allowed me to fix the following hack from this weekend...
// FIXME: Devise a way to do this without using strcmp.
// Would like to say..."return getAsStructureType() == IdStructType;", but
// we don't have a pointer to ASTContext.
bool Type::isObjcIdType() const {
if (const RecordType *RT = getAsStructureType())
return !strcmp(RT->getDecl()->getName(), "objc_object");
return false;
}
...which is now...
bool isObjcIdType(QualType T) const {
return T->getAsStructureType() == IdStructType;
}
Side notes:
- I had to remove a convenience function from the TypesCompatibleExpr class.
int typesAreCompatible() const {return Type::typesAreCompatible(Type1,Type2);}
Which required a couple clients get a little more verbose...
- Result = TCE->typesAreCompatible();
+ Result = Ctx.typesAreCompatible(TCE->getArgType1(), TCE->getArgType2());
Overall, I think this change also makes sense for a couple reasons...
1) Since ASTContext vends types, it makes sense for the type compatibility API to be there.
2) This allows the type compatibility predeciates to refer to data not strictly present in the AST (which I have found problematic on several occasions).
llvm-svn: 43009
2007-10-15 20:41:53 +00:00
Anders Carlsson
7e13ab88a2
Add code generation and sema checking for __builtin_va_arg.
...
llvm-svn: 43006
2007-10-15 20:28:48 +00:00
Fariborz Jahanian
d4b3015dd7
Several name lookup conflict detection fixes involving objective-c names.
...
llvm-svn: 43000
2007-10-15 19:16:57 +00:00
Steve Naroff
66e9f331ba
Added ASTContext::setObjcIdType/getObjcIdType(), set by Sema.
...
Also noticed ASTContext::BuiltinVaListType wasn't being initialized to the null type (so I set it).
llvm-svn: 42983
2007-10-15 14:41:52 +00:00
Steve Naroff
271643620b
Teach the type checker about "id". This removes the following bogus warning...
...
[dylan:~/llvm/tools/clang] admin% ../../Debug/bin/clang t.m
t.m:29:18: warning: incompatible pointer types assigning 'id' to 'NSString *'
resultString = [[NSString alloc] initWithFormat:0 arguments:0];
~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
llvm-svn: 42975
2007-10-15 03:14:16 +00:00
Anders Carlsson
cbfc4b8824
Add support for Pascal strings.
...
llvm-svn: 42974
2007-10-15 02:50:23 +00:00
Anders Carlsson
b30f47a869
Fix a warning
...
llvm-svn: 42973
2007-10-15 02:50:04 +00:00
Steve Naroff
5d15254496
- Teach ObjcInterfaceDecl::lookupInstance/ClassMethod to look through protocols.
...
- Start looking up methods in the global method pools (for "id").
- Start integrating interface types into the type system.
llvm-svn: 42971
2007-10-14 23:13:51 +00:00
Steve Naroff
ca0ecfe048
Add category lookup (removing a couple FIXME's).
...
Changed ObjcInterfaceDecl::ListCategories->CategoryList.
llvm-svn: 42968
2007-10-14 18:27:41 +00:00
Steve Naroff
e7ed06e6fc
Fix -ast-dump for ObjC.
...
llvm-svn: 42967
2007-10-14 17:03:01 +00:00
Steve Naroff
5811baf1a0
- Added Sema::AddFactoryMethodToGlobalPool and Sema::AddInstanceMethodToGlobalPool and DenseMaps. This will allow us to efficiently lookup a method from a selector given no type information (for the "id" data type).
...
- Fixed some funky "}
else {" indentation in Sema::ActOnAddMethodsToObjcDecl(). I'd prefer we stay away from this style...it wastes space and isn't any easier to read (from my perspective, at least:-)
- Changed Parser::ParseObjCInterfaceDeclList() to only call Action::ActOnAddMethodsToObjcDecl() when it actually has methods to add (since most interface have methods, this is a very minor cleanup).
llvm-svn: 42957
2007-10-14 00:58:41 +00:00
Anders Carlsson
d5f857f2e5
Fix an incorrect assertion.
...
llvm-svn: 42951
2007-10-13 05:52:34 +00:00
Chris Lattner
6a91cc03ad
haha, my devious plot is complete:
...
$ clang rewrite.c -rewrite-test
prints:
int foo() {
b: foo();
f: foo();
foo();
}
for:
int foo() {
b: foo();
f: foo();
foo();
}
amazing.
llvm-svn: 42944
2007-10-13 00:46:29 +00:00
Anders Carlsson
a7408e742a
Add __builtin_va_list definitions for x86_64 and ppc64.
...
llvm-svn: 42943
2007-10-13 00:45:48 +00:00
Chris Lattner
2a8ab05f5f
With this I can now insert stuff before tabs, woo.
...
llvm-svn: 42942
2007-10-13 00:21:23 +00:00
Chris Lattner
58bad341bc
Woo, tab deletion now works. Next lets see if we can
...
insert stuff.
llvm-svn: 42941
2007-10-13 00:17:04 +00:00
Chris Lattner
2fcf1b83c1
another step forward in rewriter stuff. This still has
...
some incredibly subtle details that I'm working on getting
right.
llvm-svn: 42940
2007-10-13 00:11:23 +00:00
Anders Carlsson
24ebce6fca
Generate code for va_start and va_end.
...
llvm-svn: 42939
2007-10-12 23:56:29 +00:00
Fariborz Jahanian
fd0312ed79
Patch to check for duplicate method decls in protocols.
...
llvm-svn: 42938
2007-10-12 23:43:31 +00:00
Chris Lattner
bee82b0675
remove dead method with bogus comment.
...
llvm-svn: 42937
2007-10-12 23:18:19 +00:00
Fariborz Jahanian
ecfe4f1453
Check and diagnose that objective-c objects may not be statically allocated.
...
llvm-svn: 42936
2007-10-12 22:10:42 +00:00
Ted Kremenek
41362cea7b
Added notion of '*' specified format width/specifiers when checking
...
printf format strings. Added type checking to see if the matching
width/precision argument was of type 'int'.
Thanks to Anders Carlsson for reporting this missing feature.
llvm-svn: 42933
2007-10-12 20:51:52 +00:00
Chris Lattner
2c06f7ea45
add a new SM::getDecomposedFileLoc method.
...
llvm-svn: 42931
2007-10-12 20:24:19 +00:00
Fariborz Jahanian
02fbb68e85
Fixed typo in comment.
...
llvm-svn: 42928
2007-10-12 19:53:08 +00:00
Fariborz Jahanian
c7afeebb12
Fixed a @compatible_alias bug. In the process, discovered unnecessary 2ndry lookup
...
ok class names and streamlined this logic to do the lookup once.
llvm-svn: 42926
2007-10-12 19:38:20 +00:00
Steve Naroff
b915146a5d
Replace one FIXME with another. We handle protocols just fine now. The ObjC decl will only be 0 when we have an error on the ObjC decl. I would prefer we pass in a decl that is marked as invalid. I don't think this is critical to fix now, however I'd like us to be consistent. There are currently many places that don't mark the decl as invalid (which need to be fixed)...
...
llvm-svn: 42923
2007-10-12 18:49:25 +00:00
Anders Carlsson
431ef632cb
Add some more diagnostics for va_start, fix tests so they pass with these new diags.
...
llvm-svn: 42917
2007-10-12 17:48:41 +00:00
Fariborz Jahanian
d52cd41630
Fixed a bug whereby, struct tag name matches a typedef/objc-class name
...
and hid them.
llvm-svn: 42915
2007-10-12 16:34:10 +00:00
Steve Naroff
b213da2a70
Temporary fix to test case. This area is currently under construction...test case will be changing again soon.
...
llvm-svn: 42914
2007-10-12 16:15:17 +00:00
Chris Lattner
3ec1bad331
add comments.
...
llvm-svn: 42887
2007-10-12 00:37:26 +00:00
Ted Kremenek
6a6c08c319
Printf argument checking now supports dynamically-passed precision
...
specifiers.
llvm-svn: 42886
2007-10-12 00:11:27 +00:00
Fariborz Jahanian
49c6425ee6
This patch implementa objective-c's @compatibilty-alias declaration.
...
llvm-svn: 42883
2007-10-11 23:42:27 +00:00
Chris Lattner
16a0de468f
Push the rewriting APIs along. Build a trivial client that replaces tabs
...
with x's for now. The APIs are all unimplemented, so it doesn't do
anything yet! :)
llvm-svn: 42868
2007-10-11 18:38:32 +00:00
Fariborz Jahanian
d797113659
Implemented parsing of objctive-c protocol conforming type used in
...
an identifier statement. Fixed up pretty priting to print this type
correctly.
llvm-svn: 42866
2007-10-11 18:08:47 +00:00
Chris Lattner
168d63b289
add RewriterTest.cpp to xcode project.
...
llvm-svn: 42863
2007-10-11 16:34:20 +00:00
Chris Lattner
e9ab4ca686
clarify
...
llvm-svn: 42862
2007-10-11 16:06:02 +00:00
Chris Lattner
f709a1495d
slightly simplify interface
...
llvm-svn: 42858
2007-10-11 03:36:41 +00:00
Anders Carlsson
87c149bf51
Add __builtin_va_start to the list of builtins, make __builtin_va_list available to builtin functions.
...
llvm-svn: 42857
2007-10-11 01:00:40 +00:00
Fariborz Jahanian
70e8f1024a
Patch to create protocol conforming class types.
...
llvm-svn: 42856
2007-10-11 00:55:41 +00:00
Chris Lattner
e99c8329af
add scafolding to play around with and bring up the code rewriter.
...
llvm-svn: 42855
2007-10-11 00:43:27 +00:00
Chris Lattner
5039ac74c7
update argument.
...
llvm-svn: 42854
2007-10-11 00:38:03 +00:00
Chris Lattner
3472aeedfd
rename -parse-ast-view to -ast-view
...
llvm-svn: 42853
2007-10-11 00:37:43 +00:00
Chris Lattner
5e4c75f4ef
rename -parse-ast-print to -ast-print
...
rename -parse-ast-dump to -ast-dump
remove -parse-ast, which is redundant with -fsyntax-only
llvm-svn: 42852
2007-10-11 00:18:28 +00:00
Chris Lattner
9c7a0361c0
Fix 80 col violations.
...
llvm-svn: 42849
2007-10-10 23:42:28 +00:00
Chris Lattner
7b4ab65c7d
fix a bunch of regressions I introduced :(
...
llvm-svn: 42846
2007-10-10 23:31:03 +00:00
Steve Naroff
783a7a0698
Refinements to Sema::GetObjcIdType()...
...
- Cache the typedef, not the type (avoids importing AST/Type.h).
- Emit an error if "id" cannot be found.
- Comment the routine and add a FIXME to reconsider how we emulate GCC's new fangled behavior. This isn't a priority for now, since almost no code depends on having "id" built-in.
- Add a test.
llvm-svn: 42845
2007-10-10 23:24:43 +00:00
Ted Kremenek
a1cf09f51d
Commented out header with no section body. Will write this eventually.
...
llvm-svn: 42844
2007-10-10 23:22:00 +00:00
Ted Kremenek
035b0cd34a
Added some documentation on clang CFGs. It is very rough.
...
llvm-svn: 42843
2007-10-10 23:01:43 +00:00
Steve Naroff
7f549f1897
- Make sure default return/argument types (for methods) default to "id".
...
- Cache the "id" type in Sema...initialize ObjcIdType and TUScope (oops).
- Fix ActOnInstanceMessage to allow for "id" type receivers...still work to do (next).
llvm-svn: 42842
2007-10-10 21:53:07 +00:00
Chris Lattner
d2b8ce4259
avoid accessing off the end of identifiers.
...
llvm-svn: 42841
2007-10-10 20:59:57 +00:00
Anders Carlsson
db83d77c78
Emit a warning when the body of an if block is a NullStmt.
...
llvm-svn: 42840
2007-10-10 20:50:11 +00:00
Chris Lattner
3ff2e69713
clang -E should not print tokens from the predefines buffer.
...
llvm-svn: 42838
2007-10-10 20:45:16 +00:00
Hartmut Kaiser
3fa191b6b2
Updated VC++ build system.
...
llvm-svn: 42836
2007-10-10 19:50:45 +00:00
Ted Kremenek
9e9dae0b57
Added idea for a simple C++ checker.
...
llvm-svn: 42834
2007-10-10 18:52:22 +00:00
Chris Lattner
a9839f73fb
add an idea
...
llvm-svn: 42831
2007-10-10 18:08:07 +00:00
Chris Lattner
ed2a9eb820
resolve a fixme, by moving __builtin_va_list to a more logical
...
place and making it correctly parameterized on the target.
llvm-svn: 42830
2007-10-10 17:48:53 +00:00
Steve Naroff
8308f60d51
Fix a latent bug in MinimalActions (created by a recent name change).
...
llvm-svn: 42829
2007-10-10 17:45:44 +00:00
Steve Naroff
93eb5f1438
Remove Scope argument from ObjC actions that either don't need it or can now use TUScope.
...
Also improve a recently added comment.
llvm-svn: 42826
2007-10-10 17:32:04 +00:00
Chris Lattner
5d45178179
Add a dummy for the id typedef. Steve, plz fill this in. :)
...
llvm-svn: 42819
2007-10-09 22:58:09 +00:00
Chris Lattner
1f1b0dbc28
Make a significant change to invert the control flow handling
...
predefined macros. Previously, these were handled by the driver,
now they are handled by the preprocessor.
Some fallout of this:
1. Instead of preprocessing two buffers (the predefines, then the
main source file) we now start preprocessing the main source
file and inject the predefines as a "psuedo #include" from the
main source file.
2. #1 allows us to nuke the Lexer::IsMainFile flag and simplify
Preprocessor::isInPrimaryFile.
3. The driver doesn't have to know about standard #defines, the
preprocessor knows, which is nice for people wanting to define
their own drivers.
4. This allows us to put normal tokens in the predefine buffer,
for example a definition for __builtin_va_list that is
target-specific, and a typedef for id in objc.
llvm-svn: 42818
2007-10-09 22:10:18 +00:00
Steve Naroff
c62adb6d1a
Make sure methods with no return type default to "id".
...
This fixes a crasher in Sema::MatchTwoMethodDeclarations(), identified by selector-overload.m (just added).
Added Action::ActOnTranslationUnitScope() and renamed Action::PopScope to ActOnPopScope.
Added a Translation Unit Scope instance variable to Sema (will be very useful to ObjC-related actions, since ObjC declarations are always file-scoped).
llvm-svn: 42817
2007-10-09 22:01:59 +00:00
Devang Patel
152f18f671
Recognize while(1) and avoid extra blocks.
...
llvm-svn: 42811
2007-10-09 20:51:27 +00:00
Devang Patel
f8a76755df
new test
...
llvm-svn: 42810
2007-10-09 20:37:41 +00:00
Chris Lattner
87547e6c15
avoid a noop virtual method call on the hot scope poping path.
...
llvm-svn: 42809
2007-10-09 20:37:18 +00:00
Devang Patel
c1380400d5
Recognize "do {} while (0)" idiom and avoid extra basic blocks.
...
llvm-svn: 42808
2007-10-09 20:33:39 +00:00
Devang Patel
7ad0c2f1f9
Use LLVMFoldingBuilder
...
llvm-svn: 42807
2007-10-09 19:49:58 +00:00
Fariborz Jahanian
eb2b34a9a5
Remove comment about protocols and namespace no longer relevant.
...
llvm-svn: 42804
2007-10-09 18:28:41 +00:00
Fariborz Jahanian
c8e7a93b02
Minor code clean up to make it more readable.
...
llvm-svn: 42803
2007-10-09 18:22:59 +00:00
Chris Lattner
516ca70f5d
Update DeclKind enums to reflect ObjcProtocolDecl's inheritance change.
...
llvm-svn: 42802
2007-10-09 18:18:24 +00:00
Fariborz Jahanian
06f84f5f84
Remove addition of protocol names to declaration scopes, use a separate
...
DenseMap to keep track of such declarations and derive ObjcProtocolDecl
directyly from NamedScope.
llvm-svn: 42801
2007-10-09 18:03:53 +00:00
Chris Lattner
3c69f12cbc
convert driver over to use Token::is/isNot APIs. fwew, all done.
...
llvm-svn: 42800
2007-10-09 18:03:42 +00:00
Chris Lattner
98c1f7cfde
Switch lexer/pp over to new Token::is/isNot api
...
llvm-svn: 42799
2007-10-09 18:02:16 +00:00
Chris Lattner
0ef1352a94
swtich to Token::is/isNot
...
llvm-svn: 42798
2007-10-09 17:51:17 +00:00
Chris Lattner
feb00b6e12
switch more code to use Token::is/isNot where possible.
...
llvm-svn: 42797
2007-10-09 17:41:39 +00:00
Chris Lattner
76c7228ef9
switch some more of the parser over to using Token::is and isNot
...
llvm-svn: 42796
2007-10-09 17:33:22 +00:00
Chris Lattner
0ab032aa8f
Add two new Token helper functions, "is" and "isNot". This allows us to write
...
stuff like this:
// If we don't have a comma, it is either the end of the list (a ';') or
// an error, bail out.
if (Tok.isNot(tok::comma))
break;
instead of:
// If we don't have a comma, it is either the end of the list (a ';') or
// an error, bail out.
if (Tok.getKind() != tok::comma)
break;
There is obviously no functionality change, but the code reads a bit better and is
more terse.
llvm-svn: 42795
2007-10-09 17:23:58 +00:00
Fariborz Jahanian
f483847233
Added better comment about protocol list for class ObjcQualifiedInterfaceType.
...
llvm-svn: 42794
2007-10-09 17:14:13 +00:00
Chris Lattner
a55a2cc25c
rename some "Parse" actions to "ActOn". Move code around in
...
ParseFunctionDefinition so that ActOnFunctionDefBody is always
called if ActOnStartOfFunctionDef is called. This fixes a crash
reported by Nuno Lopes.
llvm-svn: 42793
2007-10-09 17:14:05 +00:00
Devang Patel
eac5948348
Use const& for RHS.
...
Use copy for LHS, because it is incremented using ++ operator.
llvm-svn: 42792
2007-10-09 17:10:59 +00:00
Devang Patel
49a44f3b52
Fix comment. Describe what it is, instead of how it is used.
...
llvm-svn: 42791
2007-10-09 17:08:50 +00:00
Fariborz Jahanian
cb995d8981
Prevent memory leak by not creating a category object when there is a
...
fatal error of category's undefined interface.
llvm-svn: 42790
2007-10-09 17:05:22 +00:00
Steve Naroff
8e748cb4e9
Remove 2 protocol related actions from MinimalActions (protocols shouldn't be recognized as types).
...
llvm-svn: 42777
2007-10-08 23:10:47 +00:00
Fariborz Jahanian
da6c012ee7
Added a new class for Interfaces qualified by protocol list.
...
Protocols are now sorted and made unique in the list.
Enhanced pretty printer for @interface (So, I can see the protocol list).
llvm-svn: 42776
2007-10-08 23:06:41 +00:00
Steve Naroff
b163154c2d
Removed unused instance variable from FieldDecl.
...
llvm-svn: 42773
2007-10-08 21:56:47 +00:00
Chris Lattner
ba9dddb01e
Rename FileVariable -> FileVar for consistency with its class name,
...
likewise block and param. Reorder the layout of the Decl kind enum
so that the inheritance tree is reflected in the ordering. This allows
trivial range comparisons to determine whether something is an instance
of some abstract class, making classof faster.
llvm-svn: 42772
2007-10-08 21:37:32 +00:00
Chris Lattner
15b7278931
add a comment.
...
llvm-svn: 42771
2007-10-08 21:36:22 +00:00
Chris Lattner
6776a8d359
Move identifierTable.h to the right folder.
...
llvm-svn: 42770
2007-10-08 21:35:59 +00:00
Steve Naroff
71c3c1c715
Convert Selector Maps/Sets to use stronger typing (now that we have DenseMapInfo in IdentifierTable.h).
...
llvm-svn: 42767
2007-10-08 21:05:34 +00:00