Commit Graph

641 Commits

Author SHA1 Message Date
Fariborz Jahanian 89919ccd17 Modern objective-c translation. Translating default
synthesis of property getter/setters. // rdar://11374235

llvm-svn: 156447
2012-05-08 23:54:35 +00:00
Fariborz Jahanian 9c0c0501e8 modern objc translation. objc_getClass() and objc_getMetaClass()
prototypes should both return  `struct objc_class *`.
// rdar://11375495

llvm-svn: 156418
2012-05-08 20:55:55 +00:00
Douglas Gregor 8a59a957fb Revert r156097, which appears to be causing some breakage.
llvm-svn: 156304
2012-05-07 14:17:47 +00:00
Fariborz Jahanian e9863b5c8e objc modern translator: fix up attribute for dynamic property in a category.
// rdar://11095151

llvm-svn: 156127
2012-05-03 23:19:33 +00:00
Fariborz Jahanian f687e7b2ff modern objc translator: support for default property
synthesis translation. // rdar://11374235 - wip.

llvm-svn: 156125
2012-05-03 22:52:13 +00:00
Fariborz Jahanian 2e7f638b23 modern objc translator: used size_t in couple
of places. // rdar://11375908

llvm-svn: 156106
2012-05-03 21:44:12 +00:00
Fariborz Jahanian 3dc3669858 modern objc translation. objc_getClass() and objc_getMetaClass()
prototypes should both return  `struct objc_class *`.
// rdar://11375495

llvm-svn: 156097
2012-05-03 20:23:37 +00:00
Fariborz Jahanian 70ef929561 modern objective-c translator: Fix destructor def.
for __NSContainer_literal.

llvm-svn: 156035
2012-05-02 23:53:46 +00:00
Fariborz Jahanian d7c6777d50 Modern objective-c translation: Fixing couple of bugs
related to laying out ivar structs and accessing non-fragile-ivar
in more compilated cases. // rdar://11323187

llvm-svn: 156004
2012-05-02 17:34:59 +00:00
Fariborz Jahanian 144b72288a modern objective-c translation of private ivars.
// rdar://11351299

llvm-svn: 155921
2012-05-01 17:46:45 +00:00
Fariborz Jahanian faded5bb0f modern objective-c translator. named aggregate types
defined inside the objc class belong to class's
decl. scope. This is to conform to objective-c
rules. // rdar://11351299

llvm-svn: 155855
2012-04-30 23:20:30 +00:00
Fariborz Jahanian 5979c31ea7 minor refactoring of modern objc translator.
llvm-svn: 155843
2012-04-30 19:46:53 +00:00
Fariborz Jahanian 95badad83b modern objective-c translation: de-virtualize all
local rewriting functions.

llvm-svn: 155826
2012-04-30 16:57:52 +00:00
David Blaikie 2d7c57ec1d Remove the ref/value inconsistency in filter_decl_iterator.
filter_decl_iterator had a weird mismatch where both op* and op-> returned T*
making it difficult to generalize this filtering behavior into a reusable
library of any kind.

This change errs on the side of value, making op-> return T* and op* return
T&.

(reviewed by Richard Smith)

llvm-svn: 155808
2012-04-30 02:36:29 +00:00
Fariborz Jahanian bf217c8c14 objective-c modern translator: Correctly translate
nonfragile ivar access code when ivar type is a 
locally defined struct/union type. // rdar://11323187

llvm-svn: 155740
2012-04-27 22:48:54 +00:00
Fariborz Jahanian 75f2e3c3d5 modern objective-c translator: _OBJC_PROTOCOL_REFERENCE_*
symbols should be static. // rdar://11337074

llvm-svn: 155736
2012-04-27 21:39:49 +00:00
Fariborz Jahanian 16d0d6c4ad modern objective-c transltion: Fixes a translation bug
of writing a __block variable being initialized with
a constructed object. // rdar://11326988

llvm-svn: 155673
2012-04-26 23:20:25 +00:00
Fariborz Jahanian e49a42cae9 modern objc rewriter: fixes a bug writing
a const qualified static c-function. 
// rdar://11314329

llvm-svn: 155564
2012-04-25 17:56:48 +00:00
Fariborz Jahanian 847713a998 modern objc translator: Allow writing of multiple
declaration of __block variables on same lines
with initializers. // rdsr://7547630

llvm-svn: 155473
2012-04-24 19:38:45 +00:00
Fariborz Jahanian 32af25ea05 objc modern rewriter: allow translation of
multiple declaration of block variables
(with no initializer) on the same line.

llvm-svn: 155462
2012-04-24 18:16:20 +00:00
Fariborz Jahanian 3fd9bbd41e objc modern rewriter: minor refactoring.
llvm-svn: 155449
2012-04-24 16:45:27 +00:00
Fariborz Jahanian df0577de11 objective-c modern translator: Further improving the last
patch fixing writing a spurious 'static' into
the wrong place. // rdar://11275241

llvm-svn: 155130
2012-04-19 16:30:28 +00:00
Fariborz Jahanian ca357d9831 modern objective-c translator: Fix writing a spurious 'static'
into the wrong place when rewriting a static function
which declares block literals. // rdar://11275241

llvm-svn: 155084
2012-04-19 00:50:01 +00:00
Patrick Beard 0caa39474b Implements boxed expressions for Objective-C. <rdar://problem/10194391>
llvm-svn: 155082
2012-04-19 00:25:12 +00:00
Fariborz Jahanian 88773764e9 objective-c modern translation. Correct rewriting of
block meta-data of block literals declared inside
of extern "C" functions.
// rdar://1131490

llvm-svn: 154939
2012-04-17 18:40:53 +00:00
Fariborz Jahanian 35f6e12bf0 Modern objective-c translator:'self' used inside
block literal is imported. // rdar://11259664

llvm-svn: 154876
2012-04-16 23:00:57 +00:00
Fariborz Jahanian cc1722818b modern objective-c translator: translation of implicit
cast to/from block pointer types. // rdar://11202764
Also, many more modern translator tests.

llvm-svn: 154869
2012-04-16 22:14:01 +00:00
Benjamin Kramer ccdf735e52 Actually, this tree isn't necessarily binary.
llvm-svn: 154762
2012-04-15 11:35:18 +00:00
Benjamin Kramer c2a4475caa Recursively delete rewrite rope nodes when tearing down the tree.
llvm-svn: 154760
2012-04-15 11:09:40 +00:00
Fariborz Jahanian 1b085428e8 objective-c modern translator: Make metadata
definition for protocols static. // rdar://11248048

llvm-svn: 154753
2012-04-14 17:13:08 +00:00
Fariborz Jahanian 3a5d552cd7 modern objective-c translator: Fixes translation of
__typeof which is a regression by reverting
r154360. // rdar://11233924

llvm-svn: 154679
2012-04-13 18:00:54 +00:00
Fariborz Jahanian 4af0e9efdd modern objective-c translator: When translating
call to 'super' use __rw_objc_super as type of the
'super' meta-data instead of objc_super.
// rdar://11239894

llvm-svn: 154670
2012-04-13 16:20:05 +00:00
Fariborz Jahanian 27db0b3754 objective-c modern translator: beautify rewrite of
struct __rw_objc_super; no functionality change.

llvm-svn: 154632
2012-04-12 23:52:52 +00:00
Fariborz Jahanian e1240fe743 modern objective-c translator. ifdef'out
__weak and __block when rewriting.
// rdar://11236342

llvm-svn: 154592
2012-04-12 16:33:31 +00:00
Fariborz Jahanian 5811fd6cc4 modern objective-c translator. Fixes a mis-translation when
of a __block struct object. // rdar://11230308

llvm-svn: 154566
2012-04-11 23:57:12 +00:00
Fariborz Jahanian aaf4d69ac1 modern objective-c translator. Fixes a translation bug when
first ivar in the list is a bitfield.
// rdar://11229770

llvm-svn: 154534
2012-04-11 21:12:36 +00:00
Fariborz Jahanian 31176b1485 modern objective-c translation: writing container
subscripting. // rdar://11203853

llvm-svn: 154441
2012-04-10 22:06:54 +00:00
Fariborz Jahanian 2c00acd67f objective-c modern translator: rewriting specific
implicit casts which is needed to produce good c++
code. // rdar://11202764

llvm-svn: 154360
2012-04-10 00:08:18 +00:00
Fariborz Jahanian 4460e0f805 modern objective-c translation: support for
dictionary literals. This concludes // rdar://10803676

llvm-svn: 154218
2012-04-06 22:29:36 +00:00
Fariborz Jahanian e110fe4ac7 modern objective-c translator: translate array literal
expressions. // rdar://10803676

llvm-svn: 154196
2012-04-06 19:47:36 +00:00
Fariborz Jahanian f264d5dc01 objective-c modern translation. Remove commenting out
of extern "C". // rdar://11169733

llvm-svn: 154025
2012-04-04 17:16:15 +00:00
Fariborz Jahanian 08ed8921c7 modern objective-c translator: rewriter linkage spec.
// rdar://11169733

llvm-svn: 153960
2012-04-03 17:35:38 +00:00
Fariborz Jahanian 991a08d35a modern objective-c translator: writing container
literals. wip. // rdar://10803676

llvm-svn: 153784
2012-03-30 23:35:47 +00:00
Fariborz Jahanian 9c967fe51b modern objective-c translator: writing numeric
literals. // rdar://10803676

llvm-svn: 153756
2012-03-30 16:49:36 +00:00
Fariborz Jahanian 064b5386f0 modern objc translator: avoid some duplicate declarations.
llvm-svn: 153674
2012-03-29 19:04:10 +00:00
Fariborz Jahanian f35e020ef3 modern objective-c translator: fix up assortment of
visibility directives for a variety of exported
meta-data symbols. // rdar://11144048

llvm-svn: 153663
2012-03-29 17:51:09 +00:00
Fariborz Jahanian 307b7ad50c modern objective-c translator: writing objc boolean literals.
// rdar://11124775

llvm-svn: 153535
2012-03-27 20:17:30 +00:00
Fariborz Jahanian 5ed21c3154 objective-c modern translator: move all inithooks into a single array
// rdar://11124354

llvm-svn: 153526
2012-03-27 18:41:05 +00:00
Fariborz Jahanian 835cabe92a Remove few if-then-else when both branches are the
same. pr12357.

llvm-svn: 153515
2012-03-27 16:42:20 +00:00
Fariborz Jahanian 38c59108ad Commit patch reverted in r153454 with the modified test
case that I forgot to check in.

llvm-svn: 153512
2012-03-27 16:21:30 +00:00
Daniel Dunbar 94d34ca2d9 Revert r153443 "objective-c modern translator: extern "C" exported", it fails in testing.
llvm-svn: 153454
2012-03-26 18:48:59 +00:00
Fariborz Jahanian c29ebc36b1 objective-c modern translator: extern "C" exported
symbols. // rdar://11103982

llvm-svn: 153443
2012-03-26 16:29:49 +00:00
Fariborz Jahanian 16366da437 remove declaration of _objc_empty_vtable no longer
used in modern objc translator. // rdar://11105680

llvm-svn: 153386
2012-03-24 16:57:13 +00:00
Fariborz Jahanian 341348111d moderin objc translator: remove 'const' from remaining
fields in _class_ro_t metadata. //  rdar://11079898

llvm-svn: 153384
2012-03-24 16:53:16 +00:00
Fariborz Jahanian e005070ccf modern objc translation of block literal expressions
declared at file scope.
// rdar://11006566

llvm-svn: 153293
2012-03-23 00:00:49 +00:00
Fariborz Jahanian bdf975ea3f modern objc rewriter: until we can translate block literals
at global scope properly, issue diagnostics.

llvm-svn: 153271
2012-03-22 19:54:39 +00:00
Fariborz Jahanian ee1db7a0fd modern objective-c rewriter: Fix up translation of
property attributes. // rdar://11095151

llvm-svn: 153261
2012-03-22 17:39:35 +00:00
Fariborz Jahanian 167384d0da modern objective-c translator: Change declaration of
all objc_msgSend unctions to void parameters and void return.
// rdar://11094890

llvm-svn: 153227
2012-03-21 23:41:04 +00:00
Fariborz Jahanian eb4eb5cad9 modern objective-c rewriter: remove 'const' from
pointer field declarations in several meta-data.
// rdar://11079898

llvm-svn: 153196
2012-03-21 16:23:16 +00:00
Fariborz Jahanian e9de728afc Undo previous patch as I checked more than I intended.
llvm-svn: 153193
2012-03-21 16:18:21 +00:00
Fariborz Jahanian fbe392eed6 modern objective-c rewriter: remove 'const' from
pointer field declarations in several meta-data.
// rdar://11079898

llvm-svn: 153192
2012-03-21 16:17:22 +00:00
NAKAMURA Takumi 3eb0edde78 RewriteModernObjC.cpp: Don't expose temporary std::string with StringRef. (StringRef)getName() can be used here.
llvm-svn: 153156
2012-03-21 03:21:46 +00:00
Fariborz Jahanian 69a76e98fe Close the paren.
// rdar://11076938

llvm-svn: 153151
2012-03-21 00:01:15 +00:00
Fariborz Jahanian 952c3b9512 modern objective-c translator: insert couple of pragmas for optimization.
// rdar://11079898

llvm-svn: 153145
2012-03-20 22:24:05 +00:00
Fariborz Jahanian cd79a49f37 modern objective-c translator: add static function to initialize
the class pointer in the category structure.
// rdar://11076938

llvm-svn: 153138
2012-03-20 21:41:28 +00:00
Fariborz Jahanian 3546559863 more modern objective-c meta-data stuff.
llvm-svn: 153127
2012-03-20 21:09:58 +00:00
Fariborz Jahanian 40ca00dc4c modern objective-c translator: provide meta-data initialization
via functions for certain pointer initialization
fields. // rdar://11076938

llvm-svn: 153117
2012-03-20 19:54:33 +00:00
Fariborz Jahanian 6e60c1376f modern objective-c translator: couple of minor
changes to how meta-data is declared. 
// rdar://11076938

llvm-svn: 153098
2012-03-20 17:34:50 +00:00
Fariborz Jahanian a854174a23 objective-c modern translator: Refactor intername ivar names to
one place and use it throughout. Also, change ivar name to avoid
name collisions. // rdar://11079366

llvm-svn: 153093
2012-03-20 17:13:39 +00:00
Fariborz Jahanian 62a5e65d54 removed unused code in the modern objc rewriter file.
llvm-svn: 153052
2012-03-19 20:38:08 +00:00
Fariborz Jahanian 3466059001 modern objective-c translator: fix type of objc_exception_throw
declaration and its siblings.

llvm-svn: 153043
2012-03-19 18:11:32 +00:00
Fariborz Jahanian e8810768a9 modern objective-c rewriter: further improvement in
writing @synchronized statement; do not call locking
expression more than once and support early exits in
@synchronized's statement block (such as return).

llvm-svn: 152993
2012-03-17 17:46:02 +00:00
Matt Beaumont-Gay 6e177d3155 sink variable into assert
llvm-svn: 152955
2012-03-16 22:20:39 +00:00
Fariborz Jahanian 1d24a02577 Minor clean up of my last patch.
llvm-svn: 152950
2012-03-16 21:43:45 +00:00
Fariborz Jahanian fe6268e34a modern objective-c translator: write @synchronized.
// rdar://11063663

llvm-svn: 152949
2012-03-16 21:33:16 +00:00
Fariborz Jahanian 52fe6a0da3 modern objective-c translator: writing @throw statement.
llvm-svn: 152931
2012-03-16 16:52:06 +00:00
Fariborz Jahanian b960db4427 modern objective-c translation: writing @try/@catch/@finally
statements.

llvm-svn: 152875
2012-03-15 23:50:33 +00:00
Fariborz Jahanian 3b71b17753 modern objective-c translator: writing @try/@finally statement.
llvm-svn: 152867
2012-03-15 22:42:15 +00:00
Fariborz Jahanian f232bb421a modern objective-c translator: rewriting of @catch-stmt.
llvm-svn: 152830
2012-03-15 20:11:10 +00:00
Fariborz Jahanian b31e3af6fb modern objective-c translator: please symbols generated
for @protocol expression into their own section.

llvm-svn: 152808
2012-03-15 17:05:33 +00:00
Fariborz Jahanian 07a423d652 modern objective-c translator: section info.
and metadata for "non-lazy" class and categories.

llvm-svn: 152751
2012-03-14 23:18:19 +00:00
Fariborz Jahanian ddddca3e6d objective-c modern tranaltor. More section info.
for misc. objc meta-data.

llvm-svn: 152743
2012-03-14 21:44:09 +00:00
Fariborz Jahanian 4548962f00 objective-c modern translator.
Add the _class_ro_t.reserved field for 64bit targets.
// rdar://11040024

llvm-svn: 152731
2012-03-14 18:09:23 +00:00
Fariborz Jahanian fff69d077f objective-c modern rewriter. Do not add _class_ro_t.reserved
field. // rdar://11040024

llvm-svn: 152685
2012-03-13 23:48:09 +00:00
Argyrios Kyrtzidis e7f3ef39bf [Sema] Prefer to use ObjCInterfaceDecl's protocol_begin()/protocol_end() iterators instead of
ObjCInterfaceDecl::getReferencedProtocols(), because the iterators are safe to use
even if the caller did not check that the interface is a definition.

llvm-svn: 152597
2012-03-13 01:09:41 +00:00
Fariborz Jahanian 2cc29afe48 modern objective-c translator. @try/@catch translation. wip.
llvm-svn: 152587
2012-03-12 23:58:28 +00:00
Fariborz Jahanian e47bf2b991 objective-c modern translator: ivar offset symbols
will reside in .objc_ivar$B sections. // rdar://11023490

llvm-svn: 152563
2012-03-12 16:46:58 +00:00
Fariborz Jahanian 008dfe2fb3 objective-c modern abi rewriter: provide section pragmas for
statically writter metadata.
// rdar://11023490

llvm-svn: 152546
2012-03-11 19:41:56 +00:00
David Blaikie bbafb8a745 Unify naming of LangOptions variable/get function across the Clang stack (Lex to AST).
The member variable is always "LangOpts" and the member function is always "getLangOpts".

Reviewed by Chris Lattner

llvm-svn: 152536
2012-03-11 07:00:24 +00:00
Fariborz Jahanian fca65102a2 objective-c modern rewriter: add __declspec(dllexport) to forward
declaration of class metadata when they are defined later.

llvm-svn: 152500
2012-03-10 18:25:06 +00:00
Fariborz Jahanian b52221e941 objc modern rewriter: Define __OBJC2__ in written file.
// rdar://11024543

llvm-svn: 152496
2012-03-10 17:45:38 +00:00
John McCall 113bee0536 Remove BlockDeclRefExpr and introduce a bit on DeclRefExpr to
track whether the referenced declaration comes from an enclosing
local context.  I'm amenable to suggestions about the exact meaning
of this bit.

llvm-svn: 152491
2012-03-10 09:33:50 +00:00
Fariborz Jahanian c9295ec7d2 objc modern rewriter: don't export @package ivar symbols.
llvm-svn: 152469
2012-03-10 01:34:42 +00:00
Fariborz Jahanian 2677dede22 Minor change to my last rewrite patch.
llvm-svn: 152461
2012-03-10 00:53:02 +00:00
Fariborz Jahanian 34327fcdae objc modern rewriter: Mark class and ivar definitions with __declspec(dllexport)
// rdar://11023563

llvm-svn: 152459
2012-03-10 00:39:34 +00:00
Fariborz Jahanian c2e2ad6486 objective-c modern rewriter. More fixes related to rewriting
ivars in the modern rewriter.

llvm-svn: 152451
2012-03-09 23:46:23 +00:00
Ted Kremenek f7639e1b4a Add new code migrator support for migrating existing Objective-C code to use
the new Objective-C NSArray/NSDictionary/NSNumber literal syntax.

This introduces a new library, libEdit, which provides a new way to support
migration of code that improves on the original ARC migrator.  We now believe
that most of its functionality can be refactored into the existing libraries,
and thus this new library may shortly disappear.

llvm-svn: 152141
2012-03-06 20:06:33 +00:00
Fariborz Jahanian d7a3261dfb objective-c modern translator. Don't ignore unnamed bitfields
when rewriting.

llvm-svn: 152123
2012-03-06 17:16:27 +00:00
Richard Smith d67aea28f6 User-defined literals: reject string and character UDLs in all places where the
grammar requires a string-literal and not a user-defined-string-literal. The
two constructs are still represented by the same TokenKind, in order to prevent
a combinatorial explosion of different kinds of token. A flag on Token tracks
whether a ud-suffix is present, in order to prevent clients from needing to look
at the token's spelling.

llvm-svn: 152098
2012-03-06 03:21:47 +00:00
Nico Weber b3ec7308b0 Fix a -Wstring-plus-int warning.
Patch from Sean Silva <silvas@purdue.edu>!

llvm-svn: 152030
2012-03-05 15:48:34 +00:00
Fariborz Jahanian 1dc712f7cc objective-c modern translator. Fixes misc. bug in writing
the ivar offset symbol.

llvm-svn: 151683
2012-02-29 00:26:20 +00:00
Fariborz Jahanian 265a421dd9 Modern objective-c translator. rewriting ivars of aggregate type.
llvm-svn: 151662
2012-02-28 22:45:07 +00:00
Fariborz Jahanian 0ed6cb75a7 Minor modern rewriter bug showed up during testing
against a large project.

llvm-svn: 151395
2012-02-24 21:42:38 +00:00
Fariborz Jahanian dd5a59baed objc modern translator. Fixes writing of block pointer ivar access.
llvm-svn: 151371
2012-02-24 17:35:35 +00:00
Fariborz Jahanian 5e49eb95b5 modern objc translator. more writing of modern ivar access
abi.

llvm-svn: 151176
2012-02-22 18:13:25 +00:00
Fariborz Jahanian 8e1118cbd5 modern objc translator: fixes a bug where a class declaration with not
any implementation in tu was not being translated.

llvm-svn: 151106
2012-02-21 23:58:41 +00:00
Fariborz Jahanian c481c0c0f5 objective-c modern translator. accessing ivars using modern abi - wip.
llvm-svn: 151103
2012-02-21 23:46:48 +00:00
Fariborz Jahanian a7765fea90 modern objc translator. Finish off first cut of the
modern meta-data translation by commenting out private ivar
declarations in user source. Also, added several tests.

llvm-svn: 150985
2012-02-20 20:09:20 +00:00
Fariborz Jahanian 2b383d21dc objective-c modern translator: comment out private ivars
declared in class extension and implementation.

llvm-svn: 150937
2012-02-19 19:00:05 +00:00
Fariborz Jahanian d268b0caba modern objc translator: postpone writing of class definitions
until the end when all their ivars are known then.

llvm-svn: 150844
2012-02-17 22:20:12 +00:00
Fariborz Jahanian 320c88afce modern objc writer: more work for category metadata rewrite
and some cleanup.

llvm-svn: 150839
2012-02-17 20:33:00 +00:00
Fariborz Jahanian f20550543f modern objc translator: category metadata related
patch.

llvm-svn: 150825
2012-02-17 18:40:41 +00:00
Fariborz Jahanian e7a0c93cd9 objective-c translator. More stuff for modern meta-data.
llvm-svn: 150767
2012-02-17 00:06:14 +00:00
Fariborz Jahanian c41d828053 fix the property list metadata name.
llvm-svn: 150728
2012-02-16 21:57:59 +00:00
Fariborz Jahanian 638252fb5a modern objective-c translator: write the root class meta-data.
llvm-svn: 150726
2012-02-16 21:37:05 +00:00
Fariborz Jahanian 0a25688b74 modern objc translator: meta-data generation for first
part of class meta-data.

llvm-svn: 150714
2012-02-16 18:54:09 +00:00
Fariborz Jahanian ff51338772 objective-c translator: fixes an obscure rewriting bug
which attempted to rewrite the same meta-data twice.

llvm-svn: 150618
2012-02-15 22:01:47 +00:00
Fariborz Jahanian fdc06e32cf modern objective-c translator: start writing the main class
meta-data.

llvm-svn: 150548
2012-02-15 00:50:11 +00:00
Fariborz Jahanian bce36774f0 more objective-c translator for modern abi.
metadata for protocol definitions used on
class qualifiers.

llvm-svn: 150498
2012-02-14 19:31:35 +00:00
Fariborz Jahanian b1ba885b49 more modern objc translator. Focusing on metadata for methods.
llvm-svn: 150490
2012-02-14 17:19:02 +00:00
Fariborz Jahanian 1c1da171a8 modern objc translator. More ivar rewrite work.
llvm-svn: 150415
2012-02-13 21:34:45 +00:00
Fariborz Jahanian 75e71b99ec objc modern translator. ivar offset symbols.
llvm-svn: 150413
2012-02-13 20:59:02 +00:00
Fariborz Jahanian c3cdc41ac7 objective-c translator: more rewriting of ivar types
into a c-type which closely matches the objective-c type.

llvm-svn: 150406
2012-02-13 18:57:49 +00:00
Fariborz Jahanian 245534de7a more of rewriting ivar types.
llvm-svn: 150353
2012-02-12 21:36:23 +00:00
Argyrios Kyrtzidis 75627ad8ba Fix the rewriter that broke with r149987.
r149987 changed the way parsing happens inside an @implementation;
it aggregates the declarations inside and reports them together as a DeclGroup.
This had the side effect that function declarations were reported together with
their definition, while the rewriter expected for function declarations to be
reported immediately to the consumer and thus not have a body.

Fix this by having the rewriter actually check with isThisDeclarationADefinition()
to make sure the body comes from the current decl before rewriting it.

llvm-svn: 150325
2012-02-12 04:48:45 +00:00
Fariborz Jahanian 088959a28b objective-c translator. more modern abi stuff, focusing on ivar related
meta-data.

llvm-svn: 150310
2012-02-11 20:10:52 +00:00
Fariborz Jahanian cb1d9f3706 objc translator: more modern metadata stuff.
llvm-svn: 150281
2012-02-10 23:18:24 +00:00
Fariborz Jahanian 6b83daefd3 objctive-c translator: modern metadata for ivars. wip.
llvm-svn: 150275
2012-02-10 20:47:10 +00:00
Fariborz Jahanian 591b7de030 objc translator: mode modern abi stuff.
llvm-svn: 150212
2012-02-10 00:04:22 +00:00
Fariborz Jahanian a8395a6edb last piece of metadata to complete modern metadata for
protocol definitions.

llvm-svn: 150106
2012-02-08 22:23:26 +00:00
Fariborz Jahanian e18961baaf More rewriting of objective-c moderin abi metadata.
All protocol related metadata is close to completion.

llvm-svn: 150084
2012-02-08 19:53:58 +00:00
Fariborz Jahanian 48985804cd modern objc rewriter: mode metadata stuff. wip.
llvm-svn: 150030
2012-02-08 00:50:52 +00:00
Fariborz Jahanian 67f7c55a9c modern objc abi rewriter: mode protocol metadata
for modern objc abi.

llvm-svn: 150011
2012-02-07 23:31:52 +00:00
Benjamin Kramer 7ec12c928a Revert my patches which removed Diagnostic.h includes by moving some operator overloads out of line.
This seems to negatively affect compile time onsome ObjC tests
(which use a lot of partial diagnostics I assume). I have to come
up with a way to keep them inline without including Diagnostic.h
everywhere. Now adding a new diagnostic requires a full rebuild
of e.g. the static analyzer which doesn't even use those diagnostics.

This reverts commit 6496bd10dc3a6d5e3266348f08b6e35f8184bc99.
This reverts commit 7af19b817ba964ac560b50c1ed6183235f699789.
This reverts commit fdd15602a42bbe26185978ef1e17019f6d969aa7.
This reverts commit 00bd44d5677783527d7517c1ffe45e4d75a0f56f.
This reverts commit ef9b60ffed980864a8db26ad30344be429e58ff5.

llvm-svn: 150006
2012-02-07 22:29:24 +00:00
Fariborz Jahanian 4aaf8b15c9 objc rewriter: modern metadata for protocol decls. wip.
llvm-svn: 150002
2012-02-07 20:15:08 +00:00
Fariborz Jahanian 1167190344 objc rewriter: start supporting modern objective-c abi
in objective-c rewriter. wip.

llvm-svn: 149989
2012-02-07 17:11:38 +00:00
Dylan Noblesmith 2c1dd2716a Basic: import SmallString<> into clang namespace
(I was going to fix the TODO about DenseMap too, but
that would break self-host right now. See PR11922.)

llvm-svn: 149799
2012-02-05 02:13:05 +00:00
Dylan Noblesmith e27789991d Basic: import OwningPtr<> into clang namespace
llvm-svn: 149798
2012-02-05 02:12:40 +00:00
Benjamin Kramer 4903802fbf Move a method from IdentifierTable.h out of line and remove the SmallString include.
Fix all the transitive include users.

llvm-svn: 149783
2012-02-04 13:45:25 +00:00
Benjamin Kramer 02c746de10 Remove Diagnostic.h include from Preprocessor.h.
- Move the offending methods out of line and fix transitive includers.
- This required changing an enum in the PPCallback API into an unsigned.

llvm-svn: 149782
2012-02-04 13:02:15 +00:00
Argyrios Kyrtzidis 0b5ec2d199 In FixItRecompile::BeginInvocation() reset the diagnostics before executing
the original action.

llvm-svn: 149120
2012-01-27 06:15:37 +00:00
Argyrios Kyrtzidis af0bdfc692 In FixItRecompile::BeginInvocation(), check the return value of BeginSourceFile().
llvm-svn: 149107
2012-01-27 01:00:47 +00:00
Argyrios Kyrtzidis 789f373f34 Remove the headers now that ::close() is not used.
llvm-svn: 149044
2012-01-26 04:42:21 +00:00
Argyrios Kyrtzidis 623e8778c1 In FixItRewriteToTemp::RewriteFilename don't try to close the file descriptor
with close(); return it instead.

Fixes mingw build and eliminates possible racing issues.

llvm-svn: 149043
2012-01-26 04:19:04 +00:00
NAKAMURA Takumi 69ee7d5c52 Rewrite/FrontendActions.cpp: Tweak to unbreak msvc.
llvm-svn: 149041
2012-01-26 03:47:18 +00:00
Douglas Gregor e67bb67a9b Add missing include of <unistd.h>
llvm-svn: 149035
2012-01-26 03:20:14 +00:00
Argyrios Kyrtzidis 24e9afff43 Introduce 3 new fixit options:
-fixit-recompile
	applies fixits and recompiles the result
-fixit-to-temporary
	applies fixits to temporary files
-fix-only-warnings">,
    applies fixits for warnings only, not errors

Combining "-fixit-recompile -fixit-to-temporary" allows testing the result of fixits
without touching the original sources.

llvm-svn: 149027
2012-01-26 02:40:48 +00:00
Ted Kremenek 6b33356614 Per PR 11814, use Monospace instead of Andale Mono.
llvm-svn: 148567
2012-01-20 20:39:55 +00:00
David Blaikie 8a40f700e6 Remove unreachable code in Clang. (replace with llvm_unreachable where appropriate or when GCC requires it)
llvm-svn: 148292
2012-01-17 06:56:22 +00:00
Argyrios Kyrtzidis a80f1bf262 Add IsImplicit field in ObjCMessageExpr that is true when the message
was constructed, e.g. for a property access.

This allows the selector identifier locations machinery for ObjCMessageExpr
to function correctly, in that there are not real locations to handle/report for
such a message.

llvm-svn: 148013
2012-01-12 02:34:39 +00:00
Chad Rosier 598f3d219d Fix uninitialized variable warning.
llvm-svn: 147678
2012-01-06 20:05:14 +00:00
Douglas Gregor cf9f3ea6f9 Fix canonicalization of protocol-qualified types
llvm-svn: 147421
2012-01-02 02:00:30 +00:00
Douglas Gregor f610267581 Eliminate ObjCForwardProtocolDecl, which is redundant now that
ObjCProtocolDecl modules forward declarations properly.

llvm-svn: 147415
2012-01-01 21:23:57 +00:00
Douglas Gregor e6e48b1490 Move the data that corresponds to the definition of a protocol into a
separately-allocated DefinitionData structure. Introduce various
functions that will help with the separation of declarations from
definitions (isThisDeclarationADefinition(), hasDefinition(),
getDefinition()).

llvm-svn: 147408
2012-01-01 19:29:29 +00:00
Douglas Gregor 33b2429bf3 Use declaresSameEntity() when comparing ObjCProtocolDecls, and
getCanonicalDecl() when putting ObjCProtocolDecls into a set. This is
groundwork for making ObjCProtocolDecl redeclarable.

llvm-svn: 147406
2012-01-01 18:09:12 +00:00
Douglas Gregor deafd0b2a4 Eliminate ObjCClassDecl, which is redundant now that ObjCInterfaceDecl
covers both declarations (@class) and definitions (@interface) of an
Objective-C class.

llvm-svn: 147299
2011-12-27 22:43:10 +00:00
Fariborz Jahanian a4b2a86353 objc, objc rewriter. Fixes couple of bugs one
because of recent refactoring and one in the
rewriter.

llvm-svn: 147070
2011-12-21 19:48:07 +00:00
Douglas Gregor 16408325af Move ObjCInterfaceDecl's "EndLoc" into DefinitionData, since it only
applies to an actual definition. Plus, clarify the purpose of this
field and give the accessor a different name, since getLocEnd() is
supposed to be the same as getSourceRange().getEnd().

llvm-svn: 146694
2011-12-15 22:34:59 +00:00
Douglas Gregor dc9166c8e1 Keep track of all declarations of an Objective-C class (both forward
declarations and definitions) as ObjCInterfaceDecls within the same
redeclaration chain. This new representation matches what we do for
C/C++ variables/functions/classes/templates/etc., and makes it
possible to answer the query "where are all of the declarations of
this class?"

llvm-svn: 146679
2011-12-15 20:29:51 +00:00
Douglas Gregor 0b144e160a Replace all comparisons between ObjCInterfaceDecl pointers with calls
to declaresSameEntity(), as a baby step toward tracking forward
declarations of Objective-C classes precisely. Part of
<rdar://problem/10583531>.

llvm-svn: 146618
2011-12-15 00:29:59 +00:00
Fariborz Jahanian 8307742d18 More refactoring of objective-C rewriter.
llvm-svn: 146160
2011-12-08 18:25:15 +00:00
Fariborz Jahanian 7b1866930e More refactoring of objc rewriter.
llvm-svn: 145867
2011-12-05 22:59:54 +00:00
Fariborz Jahanian 8efef60f69 More objc rewriter refactoring.
llvm-svn: 145841
2011-12-05 19:50:04 +00:00
Fariborz Jahanian 68e628e51f Some early refactoring of objective-c rewriter.
llvm-svn: 145824
2011-12-05 18:43:13 +00:00
Argyrios Kyrtzidis 841dd8861a Change ASTConsumer::HandleTopLevelDecl to return true for the parser to continue
parsing or false to abort parsing.

llvm-svn: 144943
2011-11-18 00:26:59 +00:00
Fariborz Jahanian e0e6505660 objc rewriter: use a more specific name for local variable used
in fast enumeration rewrite. // rdar://10415026

llvm-svn: 144191
2011-11-09 17:41:43 +00:00
John McCall fe96e0b6be Change the AST representation of operations on Objective-C
property references to use a new PseudoObjectExpr
expression which pairs a syntactic form of the expression
with a set of semantic expressions implementing it.
This should significantly reduce the complexity required
elsewhere in the compiler to deal with these kinds of
expressions (e.g. IR generation's special l-value kind,
the static analyzer's Message abstraction), at the lower
cost of specifically dealing with the odd AST structure
of these expressions.  It should also greatly simplify
efforts to implement similar language features in the
future, most notably Managed C++'s properties and indexed
properties.

Most of the effort here is in dealing with the various
clients of the AST.  I've gone ahead and simplified the
ObjC rewriter's use of properties;  other clients, like
IR-gen and the static analyzer, have all the old
complexity *and* all the new complexity, at least
temporarily.  Many thanks to Ted for writing and advising
on the necessary changes to the static analyzer.

I've xfailed a small diagnostics regression in the static
analyzer at Ted's request.

llvm-svn: 143867
2011-11-06 09:01:30 +00:00
John McCall 526ab47a55 Restore r142914 and r142915, now with missing file and apparent
GCC compiler workaround.

llvm-svn: 142931
2011-10-25 17:37:35 +00:00
NAKAMURA Takumi 9a8f13961c Revert r142914 and r142915, due to possibly missing file.
r142914: "Introduce a placeholder type for "pseudo object""
r142915: "Pull the pseudo-object stuff into its own file."
llvm-svn: 142921
2011-10-25 14:32:25 +00:00
John McCall c4a2d3259f Introduce a placeholder type for "pseudo object"
expressions: expressions which refer to a logical rather
than a physical l-value, where the logical object is
actually accessed via custom getter/setter code.
A subsequent patch will generalize the AST for these
so that arbitrary "implementing" sub-expressions can
be provided.

Right now the only client is ObjC properties, but
this should be generalizable to similar language
features, e.g. Managed C++'s __property methods.

llvm-svn: 142914
2011-10-25 07:27:56 +00:00
Fariborz Jahanian ff4d5e4c20 objc rewriter: Restore objc_msgSend_stret/objc_msgSendSuper_stret declaration
to their fragile-abi representation.

llvm-svn: 141735
2011-10-11 23:02:37 +00:00
Fariborz Jahanian 942bbcea25 objc rewriter. Fix declaration of objc_msgSend_stret/objc_msgSendSuper_stret.
Fix an assert crash when casting a CF type to 'id'.
// rdar://10250911

llvm-svn: 141369
2011-10-07 17:17:45 +00:00
John McCall f937c023bf Rename TagDecl::isDefinition -> isCompleteDefinition
for better self-documenting code, since the semantics
are subtly different from getDefinition().

llvm-svn: 141355
2011-10-07 06:10:15 +00:00
Argyrios Kyrtzidis 52f53fb303 Improve location fidelity of objc decls.
-Add the location of the class name to all objc container decls, not just ObjCInterfaceDecl.
-Make objc decls consistent with the rest of the NamedDecls and have getLocation() point to the
 class name, not the location of '@'.

llvm-svn: 141061
2011-10-04 04:48:02 +00:00
Argyrios Kyrtzidis 59ad1e3f57 ArrayRef'ize ObjCMessageExpr
llvm-svn: 140986
2011-10-03 06:36:45 +00:00
Douglas Gregor d0e9e3a6a5 Introduce a pure virtual clone() method to DiagnosticConsumer, so that
we have the ability to create a new, distict diagnostic consumer when
we go off and build a module. This avoids the currently horribleness
where the same diagnostic consumer sees diagnostics for multiple
translation units (and multiple SourceManagers!) causing all sorts of havok.

llvm-svn: 140743
2011-09-29 00:38:00 +00:00
Douglas Gregor c0b07286cf When 'bool' is not a built-in type but is defined as a macro, print
'bool' rather than '_Bool' within types, to make things a bit more
readable. Fixes <rdar://problem/10063263>.

llvm-svn: 140650
2011-09-27 22:38:19 +00:00
David Blaikie b5784324b3 Rename DiagnosticInfo to Diagnostic as per issue 5397
llvm-svn: 140493
2011-09-26 01:18:08 +00:00
David Blaikie 2cb2a836eb Rename IgnoringDiagClient to IgnoringDiagConsumer as per issue 5397
llvm-svn: 140480
2011-09-25 23:44:35 +00:00
David Blaikie e2eefaecc8 Rename DiagnosticClient to DiagnosticConsumer as per issue 5397
llvm-svn: 140479
2011-09-25 23:39:51 +00:00
David Blaikie 9c902b5502 Rename Diagnostic to DiagnosticsEngine as per issue 5397
llvm-svn: 140478
2011-09-25 23:23:43 +00:00
David Blaikie 83d382b1ca Switch assert(0/false) llvm_unreachable.
llvm-svn: 140367
2011-09-23 05:06:16 +00:00
Argyrios Kyrtzidis e6e67deeed Rename SourceLocation::getFileLocWithOffset -> getLocWithOffset.
It already works (and is useful with) macro locs as well.

llvm-svn: 140057
2011-09-19 20:40:19 +00:00
Francois Pichet 0706d203cf Rename LangOptions::Microsoft to LangOptions::MicrosoftExt to make it clear that this flag must be used only for Microsoft extensions and not emulation; to avoid confusion with the new LangOptions::MicrosoftMode flag.
Many of the code now under LangOptions::MicrosoftExt will eventually be moved under the LangOptions::MicrosoftMode flag.

llvm-svn: 139987
2011-09-17 17:15:52 +00:00
Fariborz Jahanian 9f0bc5757c objc rewriter - more fixes to support compiling the rewritten
test case having instancetype. Fix in rewriter is unrelated to
using of instancetype. Test case uses other feature not yet
supported in the rewriter. There is more work to do, but this
is an ongoing task and not urgent at this time.

llvm-svn: 139473
2011-09-10 17:01:56 +00:00
Fariborz Jahanian e1378a4313 objc rewriter - Add rewriter test for new instancetype
along with minor rewriter fix to handle that. This
test is still incomplete due to rewriter issues
unrelated to instancetype.

llvm-svn: 139403
2011-09-09 20:35:22 +00:00
John McCall 9320b87cff Give conversions of block pointers to ObjC pointers a different cast kind
than conversions of C pointers to ObjC pointers.  In order to ensure that
we've caught every case, add asserts to CastExpr that strictly determine
which cast kind is used for which kind of bit cast.

llvm-svn: 139352
2011-09-09 05:25:32 +00:00
Fariborz Jahanian abc11aa3bc Fix a rewriter bug caused by recent changes in objc's
group decls.

llvm-svn: 138772
2011-08-29 22:21:46 +00:00
Fariborz Jahanian 3a039e339f objective-c: Treat top-level objective-c declarations
, such as list of forward @class decls, in a DeclGroup
node. Deal with its consequence throught clang. This
is in preparation for more Sema work ahead. // rdar://8843851.
Feel free to reverse if it breaks something important
and I am unavailable.

llvm-svn: 138709
2011-08-27 20:50:59 +00:00
Fariborz Jahanian 9e7dbd1cc6 objc rewriter: Fixes a rewriting of implicit casting of an integral
argument to bool. // rdar://9899834

llvm-svn: 136946
2011-08-04 23:58:03 +00:00
Fariborz Jahanian c7c346fd13 objective-c rewrite: Fixes rewriting of objective-c collection
statement inside a block. // rdar://9878420

llvm-svn: 136717
2011-08-02 20:28:46 +00:00
Fariborz Jahanian d560ed7f1b objc rewriter - my last patch was not quite right.
Fixed again. // rdar://9846759

llvm-svn: 136550
2011-07-30 01:21:41 +00:00
Fariborz Jahanian bce9ee2ae6 objc rewriter - set the flag passed to _Block_object_assign/_Block_object_dispose correctly
for copying a captured block object. // rdar://9846759

llvm-svn: 136549
2011-07-30 01:07:55 +00:00
Douglas Gregor fb65e592e0 Add support for C++0x unicode string and character literals, from Craig Topper!
llvm-svn: 136210
2011-07-27 05:40:30 +00:00
Chandler Carruth d48db2115a Rename getInstantiationLineNumber to getExpansionLineNumber in both
SourceManager and FullSourceLoc.

llvm-svn: 135969
2011-07-25 21:09:52 +00:00
Chandler Carruth 6d28d7f2a3 Rename SourceManager::getInstantiationRange to getExpansionRange.
llvm-svn: 135915
2011-07-25 16:56:02 +00:00
Chandler Carruth 35f5320d8e Mechanically rename SourceManager::getInstantiationLoc and
FullSourceLoc::getInstantiationLoc to ...::getExpansionLoc. This is part
of the API and documentation update from 'instantiation' as the term for
macros to 'expansion'.

llvm-svn: 135914
2011-07-25 16:49:02 +00:00
Chris Lattner 0e62c1cc0b remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports
them into the clang namespace.

llvm-svn: 135852
2011-07-23 10:55:15 +00:00
Chandler Carruth 5d4aff0c4d Switch a comment in Rewrite from 'instantiation' to 'expansion'.
llvm-svn: 135226
2011-07-15 00:04:40 +00:00
Jay Foad 9a6b09874d Make more use of llvm::StringRef in various APIs. In particular, don't
use the deprecated forms of llvm::StringMap::GetOrCreateValue().

llvm-svn: 133515
2011-06-21 15:13:30 +00:00
John McCall 31168b077c Automatic Reference Counting.
Language-design credit goes to a lot of people, but I particularly want
to single out Blaine Garst and Patrick Beard for their contributions.

Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself,
in no particular order.

llvm-svn: 133103
2011-06-15 23:02:42 +00:00
Richard Smith 938f40b5aa Implement support for C++11 in-class initialization of non-static data members.
llvm-svn: 132878
2011-06-11 17:19:42 +00:00
Ken Dyck d9c83e6cdf Replace a literal 8 with Context->getCharWidth() in
SynthesizeByrefCopyDestroyHelper(). No change in functionality intended.

llvm-svn: 130608
2011-04-30 16:08:27 +00:00
Fariborz Jahanian 5b72ed9798 Use S.str() to force a flush.
llvm-svn: 129856
2011-04-20 16:38:37 +00:00
Douglas Gregor 3719d3455a Be sure to flush raw_string_ostream objects in the Objective-C
rewriter, from Eric Niebler!

llvm-svn: 129849
2011-04-20 13:35:54 +00:00
Argyrios Kyrtzidis 0e993c3249 Introduce Rewriter::IncreaseIndentation() which increase indentations for the lines between the given source range.
To determine what the indentation should be, a SourceLocation 'parentIndent' parameter is used that should be at
a source location with an indentation one degree lower than the given range.

llvm-svn: 129628
2011-04-16 01:03:33 +00:00
Richard Smith dda56e4b4a Support for C++11 (non-template) alias declarations.
llvm-svn: 129567
2011-04-15 14:24:37 +00:00
Chris Lattner 57540c5be0 fix a bunch of comment typos found by codespell. Patch by
Luis Felipe Strano Moraes!

llvm-svn: 129559
2011-04-15 05:22:18 +00:00
Anders Carlsson 752454092c Add a flag to StringLiteral to keep track of whether the string is a pascal string or not.
llvm-svn: 129488
2011-04-14 00:40:03 +00:00
Argyrios Kyrtzidis 71c58f3d59 Collect the options applicable to the Rewriter methods into a RewriterOptions struct.
llvm-svn: 129430
2011-04-13 07:15:11 +00:00
Fariborz Jahanian fae2e8df37 Fixup more objc rwriter bug having to do with
rewriting of blocks which have objective-c
stuff which need be rewritten as well. // rdar://9254348

llvm-svn: 129300
2011-04-11 21:17:02 +00:00
Fariborz Jahanian eae9c0e3df Fixes a rewrting bug of a property-dot syntax expression inside
a block. First part of // rdar://9254348

llvm-svn: 129171
2011-04-08 23:48:29 +00:00
Argyrios Kyrtzidis 2f8165b685 Enhance the Rewriter.
-Allow removing a line completely if it ends up empty
-Provide more control on what should be removed.

llvm-svn: 129085
2011-04-07 18:10:12 +00:00
Fariborz Jahanian c6078c87d1 Fixes a rewriter bug rewriting call to a byref
block pointer nested inside a block. // rdar:// 9204669

llvm-svn: 128747
2011-04-01 23:08:13 +00:00
Fariborz Jahanian 5bba75f1a7 ANother rewrite bug, rewriting a call of
__byref block. // rdar://9204669

llvm-svn: 128726
2011-04-01 19:19:28 +00:00
Fariborz Jahanian ff51d4e559 Fix couple of rewriter bugs related to rewriting a
__block block declaration. //rdar://9204669

llvm-svn: 128682
2011-03-31 22:49:32 +00:00
Peter Collingbourne e190dee7a5 Add support for the OpenCL vec_step operator, by generalising and
extending the existing support for sizeof and alignof.  Original
patch by Guy Benyei.

llvm-svn: 127475
2011-03-11 19:24:49 +00:00
Abramo Bagnara 29c2d46786 Fixed InnerLocStart.
llvm-svn: 127330
2011-03-09 14:09:51 +00:00
Abramo Bagnara dff1930bf7 Fixed source range for all DeclaratorDecl's.
llvm-svn: 127225
2011-03-08 08:55:46 +00:00
Abramo Bagnara b3185b00c5 Fixed TypedefDecl and TemplateTypeParameter source range.
llvm-svn: 127119
2011-03-06 15:48:19 +00:00
Fariborz Jahanian 8f4903397d Fix objc rewriting bug casting to qualified objective-c pointetr.
// rdar://9056351

llvm-svn: 126536
2011-02-26 01:31:36 +00:00
Fariborz Jahanian f2890fc93f Fix a rewriter bug involving call to property's
block. // rdar://9055596

llvm-svn: 126535
2011-02-26 00:33:41 +00:00
Fariborz Jahanian 74405b02f9 Fix a rewrite bug. // rdar://9039342
llvm-svn: 126435
2011-02-24 21:29:21 +00:00
John McCall c07a0c7e48 Change the representation of GNU ?: expressions to use a different expression
class and to bind the shared value using OpaqueValueExpr.  This fixes an
unnoticed problem with deserialization of these expressions where the
deserialized form would lose the vital pointer-equality trait;  or rather,
it fixes it because this patch also does the right thing for deserializing
OVEs.

Change OVEs to not be a "temporary object" in the sense that copy elision is
permitted.

This new representation is not totally unawkward to work with, but I think
that's really part and parcel with the semantics we're modelling here.  In
particular, it's much easier to fix things like the copy elision bug and to
make the CFG look right.

I've tried to update the analyzer to deal with this in at least some          
obvious cases, and I think we get a much better CFG out, but the printing
of OpaqueValueExprs probably needs some work.

llvm-svn: 125744
2011-02-17 10:25:35 +00:00
Fariborz Jahanian 9cd649d376 Block rewriting bug. Don't take address of captured
byref variables again when passing them to inner blocks. 
// rdar://9006279

llvm-svn: 125690
2011-02-16 22:37:10 +00:00
John McCall 8322c3a197 Give some convenient idiomatic accessors to Stmt::child_range and
Stmt::const_child_range, then make a bunch of places use them instead
of the individual iterator accessors.

llvm-svn: 125450
2011-02-13 04:07:26 +00:00
NAKAMURA Takumi 98dd73d66c CMake: LLVM_NO_RTTI must be obsolete now!
llvm-svn: 125275
2011-02-10 09:15:32 +00:00
John McCall 351762cda2 A few more tweaks to the blocks AST representation:
- BlockDeclRefExprs always store VarDecls
  - BDREs no longer store copy expressions
  - BlockDecls now store a list of captured variables, information about
    how they're captured, and a copy expression if necessary
    
With that in hand, change IR generation to use the captures data in       
blocks instead of walking the block independently.        

Additionally, optimize block layout by emitting fields in descending
alignment order, with a heuristic for filling in words when alignment
of the end of the block header is insufficient for the most aligned
field.

llvm-svn: 125005
2011-02-07 10:33:21 +00:00
Fariborz Jahanian ee504a0881 Fix an objective-c rewriter bug rewriting a __block
variable declaration of a struct declared type.
// rdar://8918702

llvm-svn: 124451
2011-01-27 23:18:15 +00:00
John McCall 424cec97bd Change QualType::getTypePtr() to return a const pointer, then change a
thousand other things which were (generally inadvertantly) relying on that.

llvm-svn: 123814
2011-01-19 06:33:43 +00:00
Jeffrey Yasskin 8dfa5f1776 Fix warnings found by gcc-4.6, from -Wunused-but-set-variable and
-Wint-to-pointer-cast.

llvm-svn: 123719
2011-01-18 02:00:16 +00:00
Jakob Stoklund Olesen 4072e59189 Clang should not warn on code in clang that is only there to remove warnings.
llvm-svn: 122941
2011-01-06 01:37:28 +00:00
Abramo Bagnara ea4f7c7761 Introduced raw_identifier token kind.
llvm-svn: 122394
2010-12-22 08:23:18 +00:00
Michael J. Spencer e47230f9b5 Replace all uses of PathV1::get{Basename,Dirname,Suffix} with their PathV2 equivalents.
llvm-svn: 122140
2010-12-18 04:13:32 +00:00
Abramo Bagnara 6d8106386c Added missing IgnoreParens().
llvm-svn: 121795
2010-12-14 22:11:44 +00:00
John McCall db40c7f573 Restore r121752 without modification.
llvm-svn: 121763
2010-12-14 08:05:40 +00:00
John McCall 5546da68bb Pull out r121752 in case it's causing the selfhost breakage.
llvm-svn: 121759
2010-12-14 07:30:51 +00:00
John McCall aa6d98c160 Factor out most of the extra state in a FunctionProtoType into a separate
class to be passed around.  The line between argument and return types and
everything else is kindof vague, but I think it's justifiable.

llvm-svn: 121752
2010-12-14 06:51:39 +00:00
Argyrios Kyrtzidis d0039e56f2 Keep the source location of the selector in ObjCMessageExpr.
llvm-svn: 121516
2010-12-10 20:08:27 +00:00
Fariborz Jahanian 83e7d5a90a Fix rewriter to match recent changes in property ref
AST.

llvm-svn: 120919
2010-12-04 21:22:13 +00:00
John McCall b7bd14fa08 Simplify the ASTs by consolidating ObjCImplicitGetterSetterExpr and ObjCPropertyRefExpr
into the latter.

llvm-svn: 120643
2010-12-02 01:19:52 +00:00
Michael J. Spencer 8aaf49959c Merge System into Support.
llvm-svn: 120297
2010-11-29 18:12:39 +00:00
Nico Weber 1879bca4c9 Minor whitespace fix, no functionality change
llvm-svn: 119965
2010-11-22 10:26:41 +00:00
Argyrios Kyrtzidis 6d35b5a210 Keep track of errors/warnings in FixItRewriter.
llvm-svn: 119735
2010-11-18 21:13:54 +00:00
Argyrios Kyrtzidis d004064864 Refactoring of Diagnostic class.
-Move the stuff of Diagnostic related to creating/querying diagnostic IDs into a new DiagnosticIDs class.
-DiagnosticIDs can be shared among multiple Diagnostics for multiple translation units.
-The rest of the state in Diagnostic object is considered related and tied to one translation unit.
-Have Diagnostic point to the SourceManager that is related with. Diagnostic can now accept just a
   SourceLocation instead of a FullSourceLoc.
-Reflect the changes to various interfaces.

llvm-svn: 119730
2010-11-18 20:06:41 +00:00
John McCall 4bc41aee2b Add an assertion, fix a whole bunch of bugs, comment the assertion
out because there are still bugs left.

llvm-svn: 119722
2010-11-18 19:01:18 +00:00
John McCall 7decc9e4ea Calculate the value kind of an expression when it's created and
store it on the expression node.  Also store an "object kind",
which distinguishes ordinary "addressed" l-values (like
variable references and pointer dereferences) and bitfield,
@property, and vector-component l-values.

Currently we're not using these for much, but I aim to switch
pretty much everything calculating l-valueness over to them.
For now they shouldn't necessarily be trusted.

llvm-svn: 119685
2010-11-18 06:31:45 +00:00
John McCall f608debd9b Kill CK_Unknown references in the ObjC rewriter. The actual
choice of cast doesn't matter here, but I've tried to choose
the right one anyway.

llvm-svn: 119140
2010-11-15 09:46:46 +00:00
Fariborz Jahanian 086a24a2be Fixes a rewrite bug, rewriting nested property usage
inside blocks. Fixes //rdar: //8608293.

llvm-svn: 118425
2010-11-08 18:37:50 +00:00
Fariborz Jahanian 90d2e57ff7 Proper rewriting of block envokation with
qualified ObjC pointer types in its argument list.
// rdar: //8608902

llvm-svn: 118286
2010-11-05 18:34:46 +00:00