[PATCH] Extend loop variable naming checks

Dmitri Gribenko gribozavr at gmail.com
Thu Mar 7 12:34:34 PST 2013



================
Comment at: test/cpp11-migrate/LoopConvert/naming-alias.cpp:19-20
@@ +18,4 @@
+  // element, and thus we consider the name "t" aliased to the loop.
+  // The extra blank braces are left as a placeholder for after the variable
+  // declaration is deleted.
+  for (int i = 0; i < N; ++i) {
----------------
Jack Yang wrote:
> Dmitri Gribenko wrote:
> > These braces are not needed with CHECK-NOT in place.
> When loop convert deletes the declaration, it doesn't remove the whole line.  In this case, it replaces the line "Val &t = Arr[i]; { }" with "{ }", and so if the braces aren't present, it would replace the declaration with an empty line. That is, loop convert doesn't delete the line even if it's empty.
> 
> As far as I know, there's no way for llvm's filecheck to skip the empty line. The intent of the braces serves as a placeholder so that that line is matched to move on to checking the next line.
> 
> Could replacing it with something like the following be a solution?
> 
>   for (int i = 0; i < N; ++i) {
>     Val &t = Arr[i]; int y = t.x;
>   }
>   // CHECK: for (auto & t : Arr)
>   // CHECK-NOT: Val &{{[a-z_]+}} =
>   // CHECK-NEXT: int y = t.x;
I understand now.  I mistakenly thought that empty line was deleted.  LGTM then.


http://llvm-reviews.chandlerc.com/D484



More information about the cfe-commits mailing list