diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-11-06 18:58:03 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-11-06 18:58:03 +0000 |
| commit | e43ae79038cacc883e0a1fd0aaf0b0a6034f1346 (patch) | |
| tree | c6579d47ca004e669fd3285fe533d8ff5b10911e /clang/lib/ARCMigrate/Transforms.h | |
| parent | aaa999660bd94735a369cd6edf185718015ee71d (diff) | |
| download | bcm5719-llvm-e43ae79038cacc883e0a1fd0aaf0b0a6034f1346.tar.gz bcm5719-llvm-e43ae79038cacc883e0a1fd0aaf0b0a6034f1346.zip | |
[arcmt] Collect all the places where GC attributes __strong/__weak occur.
llvm-svn: 143883
Diffstat (limited to 'clang/lib/ARCMigrate/Transforms.h')
| -rw-r--r-- | clang/lib/ARCMigrate/Transforms.h | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/clang/lib/ARCMigrate/Transforms.h b/clang/lib/ARCMigrate/Transforms.h index 4ff35a5daf0..540426b81a2 100644 --- a/clang/lib/ARCMigrate/Transforms.h +++ b/clang/lib/ARCMigrate/Transforms.h @@ -79,14 +79,26 @@ public: }; class MigrationContext { - MigrationPass &Pass; std::vector<ASTTraverser *> Traversers; public: + MigrationPass &Pass; + + struct GCAttrOccurrence { + enum AttrKind { Weak, Strong } Kind; + SourceLocation Loc; + QualType ModifiedType; + Decl *Dcl; + /// \brief true if the attribute is owned, e.g. it is in a body and not just + /// in an interface. + bool FullyMigratable; + }; + std::vector<GCAttrOccurrence> GCAttrs; + + llvm::DenseSet<unsigned> AttrSet; + explicit MigrationContext(MigrationPass &pass) : Pass(pass) {} ~MigrationContext(); - - MigrationPass &getPass() { return Pass; } typedef std::vector<ASTTraverser *>::iterator traverser_iterator; traverser_iterator traversers_begin() { return Traversers.begin(); } @@ -108,6 +120,11 @@ public: // GC transformations +class GCAttrsTraverser : public ASTTraverser { +public: + virtual void traverseTU(MigrationContext &MigrateCtx); +}; + class GCCollectableCallsTraverser : public ASTTraverser { public: virtual void traverseBody(BodyContext &BodyCtx); |

