Devang Patel
1c8788bbd0
Keep track of field offsets during structure layout.
...
Take 2.
llvm-svn: 43573
2007-10-31 20:08:22 +00:00
Devang Patel
75ef2f0b45
Take 2.
...
Make target info available to clang code generator. This is far from complete but this helps clang codegen module make progress.
At the moment target triplet and target description strings are hard coded in clang::TargetInfo
llvm-svn: 43572
2007-10-31 20:01:01 +00:00
Ted Kremenek
c55cd9a38a
Adjusted QualType deserialization to reflect updated deserialization API.
...
We now serialize ivar references inside of ASTContext.
llvm-svn: 43571
2007-10-31 20:00:03 +00:00
Devang Patel
7abb7acafd
Initialize MemCpyFn
...
llvm-svn: 43569
2007-10-31 19:54:57 +00:00
Fariborz Jahanian
95b6076c77
Fixed problem with rewriting stand-alone @implementation (with no matching @interface).
...
A new test case added.
llvm-svn: 43568
2007-10-31 18:48:14 +00:00
Steve Naroff
6d40db0dde
Implement a more sensible strategy for ObjC built-in types (addressing a long standing FIXME in Sema::GetObjcIdType()).
...
This removes several gross hacks to work around the previous "lazy" behavior.
Two notes:
- MinimalActions still needs to be taught about the built-in types (This breaks one of the -noop test cases). I started this, then added a FIXME.
- I didn't convert Sema::GetObjcProtoType() yet.
llvm-svn: 43567
2007-10-31 18:42:27 +00:00
Ted Kremenek
e32c067cc4
Preliminary support for serializing statements.
...
llvm-svn: 43566
2007-10-31 18:41:19 +00:00
Ted Kremenek
d2f7cc9f2b
Updated path to clang.cpp in build documentation.
...
llvm-svn: 43564
2007-10-31 17:58:51 +00:00
Ted Kremenek
468b1cb96f
Updated build instructions to not include an absolute line number in clang.cpp to add hard-coded paths.
...
llvm-svn: 43563
2007-10-31 17:57:30 +00:00
Ted Kremenek
08bed095eb
Updated a comment to hopefully silence a Lattner warning.
...
llvm-svn: 43562
2007-10-31 17:53:38 +00:00
Ted Kremenek
9cc9335bdf
Implemented serialization of Variable Array Types (VLAs).
...
llvm-svn: 43561
2007-10-31 17:50:23 +00:00
Fariborz Jahanian
aff228dfc7
Rewriteing of ivars changed to just copy directly from the source.
...
llvm-svn: 43560
2007-10-31 17:29:28 +00:00
Ted Kremenek
fc581a9a89
Renamed ivar "ArrayTypes" in ASTContext to "ComplexArrayTypes".
...
Added skeleton code for serialization of ASTContext.
llvm-svn: 43558
2007-10-31 17:10:13 +00:00
Steve Naroff
ac0216385f
Checking in some code that is still under construction.
...
I need to (finally) change the way Class/id/SEL/IMP are built-in...the current approach of doing it in the preprocessor is "broken". The other problem is Sema::GetObjcIdType/GetObjcSelType/GetObjcClassType, the hooks that initialize ASTContext lazily. These built-in types need to be done up front...
llvm-svn: 43557
2007-10-31 16:03:04 +00:00
Fariborz Jahanian
d728e949bb
After Anders check-in, we can now encode 'Class' type.
...
llvm-svn: 43556
2007-10-31 16:00:13 +00:00
Ted Kremenek
f1d34d3fea
Added a few clarifying steps the the "building clang" section.
...
llvm-svn: 43555
2007-10-31 15:31:24 +00:00
Chris Lattner
5087e267c2
temporarily revert devang's patch to link in the llvm codegen etc.
...
llvm-svn: 43544
2007-10-31 04:53:03 +00:00
Steve Naroff
37e011ce43
Add some plumbing to help cope with rewriting "id<p>", "Class<p>*".
...
llvm-svn: 43543
2007-10-31 04:38:33 +00:00
Anders Carlsson
f56a7aee2f
Encode Class, SEL and Objective-C objects.
...
llvm-svn: 43540
2007-10-31 02:53:19 +00:00
Devang Patel
df62bc067a
Keep track of field offsets during structure layout.
...
llvm-svn: 43539
2007-10-31 01:23:10 +00:00
Devang Patel
46c7003052
Make target info available to clang code generator.
...
This is far from complete but this helps clang codegen module
make progress.
llvm-svn: 43536
2007-10-31 00:59:29 +00:00
Fariborz Jahanian
ca5338196f
Added new type and bitfield fields in some decl types in preparation for objective-c's type qualifiers.
...
Added initialization of Class/SEMA types.
llvm-svn: 43534
2007-10-31 00:12:35 +00:00
Devang Patel
82ae5f255f
Avoid unnecessary PATypeHolder copy.
...
llvm-svn: 43530
2007-10-30 23:22:14 +00:00
Steve Naroff
5cdcd9b61c
Stop pre-defining objc_msgSend/objc_getClass in the preprocessor. Instead, I generate these declaration on the fly when rewriting a message expression.
...
llvm-svn: 43529
2007-10-30 23:14:51 +00:00
Ted Kremenek
e26f3c50c5
Updated some comments.
...
Disabled assignments for ContentCache.
Copy-ctor for ContentCache now has an assertion preventing it to
be copied from an object that already has an allocated buffer.
llvm-svn: 43526
2007-10-30 22:57:35 +00:00
Chris Lattner
595db86c9d
__real__ and __imag__ can be lvalues. Add support to ast and codegen for them.
...
llvm-svn: 43525
2007-10-30 22:53:42 +00:00
Ted Kremenek
4c0ef37fbb
Refactored CFG construction code that processes DeclStmts to use StmtIterator.
...
Now CFG construction transparently supports Variable Length Array declarations
with expressions for their sizes, and typedefs that include VLAs.
llvm-svn: 43520
2007-10-30 21:48:34 +00:00
Devang Patel
73721a12ca
Refactor code into a separate method.
...
llvm-svn: 43519
2007-10-30 21:27:20 +00:00
Ted Kremenek
c08bca6ae8
Removed SrcMgr::FileInfo and SrcMgr::InfoRec and replaced them with a
...
single class: ContentCache. This simplifies the logic in
SourceManager and makes the ownership of MemoryBuffers clearer.
llvm-svn: 43518
2007-10-30 21:08:08 +00:00
Ted Kremenek
78036cdd5c
Tightened IgnoreParen.
...
llvm-svn: 43517
2007-10-30 21:03:09 +00:00
Devang Patel
ffe1e218f2
Fix 80 col violations.
...
llvm-svn: 43516
2007-10-30 20:59:40 +00:00
Chris Lattner
0b11172e8c
minor tweaks
...
llvm-svn: 43515
2007-10-30 20:57:56 +00:00
Devang Patel
f5bda316c5
Use
...
+ llvm::DenseMap<Type *, llvm::PATypeHolder> TypeHolderMap;
instead of
- llvm::DenseMap<Type *, llvm::PATypeHolder *> TypeHolderMap;
llvm-svn: 43514
2007-10-30 20:46:47 +00:00
Fariborz Jahanian
4d5b2baa1c
Fixed tests.
...
llvm-svn: 43513
2007-10-30 20:41:57 +00:00
Chris Lattner
e0218997ab
minor code cleanup
...
llvm-svn: 43512
2007-10-30 20:27:44 +00:00
Chris Lattner
de21d55e70
shrinkify storage class to a bitfield, add a fixme about merging it in the future.
...
llvm-svn: 43509
2007-10-30 18:54:50 +00:00
Devang Patel
fa0cb1ef3a
Remove commented out line.
...
llvm-svn: 43508
2007-10-30 18:31:12 +00:00
Fariborz Jahanian
18d7b30241
Revisited my last patch to be able to do encoding of ivar types with 'id'.
...
llvm-svn: 43507
2007-10-30 18:27:03 +00:00
Chris Lattner
74a0ae2c2a
update some comments.
...
llvm-svn: 43506
2007-10-30 17:46:51 +00:00
Chris Lattner
39afd571a0
Avoid using macro expansions, which causes these to come out in -E mode.
...
llvm-svn: 43505
2007-10-30 17:45:43 +00:00
Fariborz Jahanian
509d8d6fc6
Added type encoding for 'id' type.
...
llvm-svn: 43504
2007-10-30 17:06:23 +00:00
Steve Naroff
f921385f40
Rewrite protocols.
...
llvm-svn: 43503
2007-10-30 16:42:30 +00:00
Ted Kremenek
9139310c76
Added vector to ASTContext to store references to "complete" VLA types
...
(VLAs with a specified size expresssion). This vector owns the
references to these type objects.
llvm-svn: 43502
2007-10-30 16:41:53 +00:00
Steve Naroff
5448cf6d61
- Add location info to category/protocol AST's
...
- Rewrite categories.
llvm-svn: 43501
2007-10-30 13:30:57 +00:00
Steve Naroff
4cd61acc33
Remove a couple FIXME's for rewriting ObjC interfaces (which are now being rewritten properly).
...
llvm-svn: 43494
2007-10-30 03:43:13 +00:00
Steve Naroff
c54840433f
More support for rewriting ObjC intefaces. Still some edge cases to handle...
...
llvm-svn: 43493
2007-10-30 02:23:23 +00:00
Anders Carlsson
df4cc6160f
Handle function types.
...
llvm-svn: 43485
2007-10-30 00:06:20 +00:00
Fariborz Jahanian
31d05db565
Assert if isObjcIdType is called before 'id' type is built.
...
llvm-svn: 43484
2007-10-30 00:00:49 +00:00
Ted Kremenek
843ebedde4
VariableArrayTypes (VLAs) without a size expression are now uniqued
...
and inserted into a FoldingSet owned by ASTContext.
llvm-svn: 43482
2007-10-29 23:37:31 +00:00
Fariborz Jahanian
797f24cd7e
Encoding for objectiive-c methods.
...
llvm-svn: 43481
2007-10-29 22:57:28 +00:00
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