ABataev marked 3 inline comments as done.
ABataev added inline comments.

================
Comment at: clang/lib/AST/StmtProfile.cpp:777
+    if (E)
+      Profiler->VisitStmt(E);
+  }
----------------
rjmccall wrote:
> Can `E` actually be null here?
No, remnants of the initial version.


================
Comment at: clang/lib/CodeGen/CGExpr.cpp:3952
+           CGM.getOpenMPRuntime().isNontemporalDecl(Field)) ||
+          (!E->isArrow() && BaseLV.isNontemporal()))
+        LV.setNontemporal(/*Value=*/true);
----------------
rjmccall wrote:
> Is the `!E->isArrow()` condition necessary here?  Why not just propagate the 
> non-temporality of the base?
> 
> Similarly, what's the case in which the declaration is marked non-temporal 
> and you *don't* want to trust that?
That's the main question. I try to mimic the behavior we currenty have in the 
codegen. If the lvalue for the pointer is marked as nontemporal, only 
loads/stores for the pointer itself are marked as nontemporal. Operations with 
the memory it points to are not marked as nontemporal. I'm trying to do the 
same. E.g., if have something like `a.b->c` and `a` is nontemporal, then only 
`a.b = x;` must be marked as nontemporal, but not `a.b->c = x;`


================
Comment at: clang/lib/CodeGen/CGOpenMPRuntime.cpp:11349
+  NontemporalDeclsSet &DS =
+      CGM.getOpenMPRuntime().NontemporalDeclsStack.emplace_back();
+  // No need to check for nontemporal clauses in non-simd directives.
----------------
rjmccall wrote:
> This is effectively clearing the active non-temporal decls set.  Is that okay 
> (even for the non-SIMD directives?), or should the current set be copied?
Yes, it must be copied, thanks.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D71708/new/

https://reviews.llvm.org/D71708



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to