rsmith added inline comments.

================
Comment at: clang/include/clang/AST/DeclCXX.h:779
+  bool mayBeDynamicClass() const {
+    return !isCompleteDefinition() || isDynamicClass();
+  }
----------------
`isCompleteDefinition` checks whether this declaration of the class is a 
definition, not whether it has a definition anywhere; the latter is what you 
need here. You can use `hasDefinition` to check that.

Please also check `hasAnyDependentBases()` (or add a comment to this function 
to indicate that it may return `false` for a templated class whose 
instantiations might be dynamic classes) -- if a class has dependent bases, we 
might not find out that it's a dynamic class until it's instantiated.


================
Comment at: clang/lib/CodeGen/CGExprScalar.cpp:1626-1627
+
+      // Casting to pointer that does not carry dynamic information (provided 
by
+      // invariant.group) requires stripping it.
+      Src = Builder.CreateStripInvariantGroup(Src);
----------------
Are there any cases where we need a barrier when the destination type is a 
dynamic type here?


Repository:
  rL LLVM

https://reviews.llvm.org/D47299



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

Reply via email to