rjmccall added inline comments.

================
Comment at: lib/CodeGen/CGExpr.cpp:3517
+        CGM.getCodeGenOpts().StrictVTablePointers &&
+        CGM.getCodeGenOpts().OptimizationLevel > 0)
+      addr = Address(Builder.CreateInvariantGroupBarrier(addr.getPointer()),
----------------
Prazek wrote:
> rjmccall wrote:
> > Checking for v-table pointers recursively isn't really that difficult, but 
> > if you really don't want to do that, please at least check for non-POD-ness 
> > or something so that this isn't kicking in for literally every struct type.
> ok, I am also planning to fix this in the later patch, because the same 
> problem arise when comparing 2 pointers to dynamic classe. 
> I would like to have a bit in CXXRecordDecl to remember if it has any vptr 
> inside that would calculate durring the construction. 
> My biggest fear is that if I won't cache it then it will be very slow.
We could repeat this work from scratch on every single union field access done 
by IRGen and it would still be way, way faster than doing anything extra on 
every record definition in the program.  The latter is done orders of magnitude 
more frequently than the former.


https://reviews.llvm.org/D31830



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

Reply via email to