[PATCH] D64765: [OPENMP]Add support for analysis of firstprivate variables.

Artem Dergachev via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jul 19 15:08:22 PDT 2019

NoQ accepted this revision.
NoQ added inline comments.
This revision is now accepted and ready to land.

Comment at: include/clang/AST/OpenMPClause.h:2102-2103
   child_range used_children() {
-    return child_range(child_iterator(), child_iterator());
+    return child_range(reinterpret_cast<Stmt **>(varlist_begin()),
+                       reinterpret_cast<Stmt **>(varlist_end()));
So, basically, the first approximation is that all children are used?

Comment at: test/Analysis/cfg-openmp.cpp:188
 // CHECK-NEXT:  [[#TARGET+6]]: [B1.[[#TARGET+5]]] (ImplicitCastExpr, IntegralToBoolean, _Bool)
-// CHECK-NEXT:  [[#TARGET+7]]: #pragma omp target depend(in : argc) if(cond)
+// CHECK-NEXT:  [[#TARGET+7]]: fp
+// CHECK-NEXT:  [[#TARGET+8]]: argc
ABataev wrote:
> In `task` and `target` regions some of the variables might be implicit firstprivate just like in this case.
Aha, yup, i see, so we need to evaluate them again because we're after their lvalues so that to capture them by reference. I guess this kinda sorts out my questions.

  rC Clang



More information about the cfe-commits mailing list