[PATCH] D66122: [CodeGen] Emit dynamic initializers for static TLS vars in outlined scopes
    Eli Friedman via Phabricator via cfe-commits 
    cfe-commits at lists.llvm.org
       
    Wed Aug 21 13:41:11 PDT 2019
    
    
  
efriedma added a comment.
Added a few more minor comments.
It looks like the consensus on std-discussion is actually that your testcase has undefined behavior?  That seems like an awful conclusion, and the standard text doesn't really seem to support it. (I mean, I guess you could argue that " variable with thread storage duration shall be initialized before its first odr-use" means if it's not initialized, the behavior is undefined, but that's really confusing.)  But given that, I think we should submit a core issue, and hold off on merging this until we hear back from the committee.
================
Comment at: clang/lib/CodeGen/CodeGenFunction.cpp:306
+  if (const auto *InitExpr = VD->getInit()) {
+    std::deque<const Stmt *> frontier;
+
----------------
If you don't care about the iteration order, using pop_back on a vector is faster.
================
Comment at: clang/lib/CodeGen/CodeGenFunction.cpp:317
+          deps.insert(V);
+          auto V_Refs = enumerateVarInitDependencies(V);
+          deps.insert(V_Refs.begin(), V_Refs.end());
----------------
Do you need to recurse here?  It looks like the caller should handle that.
================
Comment at: clang/lib/CodeGen/CodeGenFunction.cpp:469
+  for (const VarDecl *VD : UniqueVarsToInit)
+      OrderedVarInits.push_back(VD);
+
----------------
Indentation.
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D66122/new/
https://reviews.llvm.org/D66122
    
    
More information about the cfe-commits
mailing list