[PATCH] For loop migration tool (round 1) - patch 3

+// Determines whether the given Decl defines an alias to the given variable.
+static bool isAliasDecl(const Decl *TheDecl, const VarDecl *TargetDecl) {

The name of this function confuses me: where's the aliasing? If I read
it correctly, it checks that TheDecl has an initializer that is an
array subscript expression for the array in question. Now that I read
it I'm also not sure I like the name isValidSubscriptExpr, as that is
way to broad to make it obvious what it actually checks for. I also
don't remember whether I already mentioned that in one of the other

I actually like the comment below where you say "refers to the loop
element". referencesLoopElement() perhaps?

+ Args->AcceptedChanges++;

Prefer pre-inc for consistency.

+ int NumArgs = argc + 1;
+ const char **Args = new const char *[NumArgs];
+ for (int I = 0; I < argc; ++I)
+ Args[I] = argv[I];
+ Args[NumArgs - 1] = "-std=c++11";

This doesn't work if one is not using the FixedCompilationDatabase, as
far as I can tell... I'm confused about what you're trying to do

+ delete Args;

I really dislike allocation and deallocation being so far apart.