eugenis added inline comments.

================
Comment at: lib/CodeGen/CGExpr.cpp:2494
@@ +2493,3 @@
+  llvm::Value *ValidVtable = nullptr;
+  if (CheckAndAppendValidVtable) {
+    llvm::Value *AllVtables = llvm::MetadataAsValue::get(
----------------
pcc wrote:
> eugenis wrote:
> > samsonov wrote:
> > > This is really ugly. Why are you not passing it down in DynamicArgs? Is 
> > > it performance penalty you don't want to pay if the check will not 
> > > succeed? How large will it be?
> > Yes, I want this code to be on the failing side of the check.
> > This would cost about the same as the check itself, so I suspect it could 
> > double the overhead.
> > 
> I would just emit the call unconditionally. We don't care too much about the 
> performance in non-trapping mode, and if it becomes a problem in practice we 
> can see if we can have the optimizer move the call into the conditional block 
> (which I suspect it already knows how to do).
I care about performance in non-trapping mode.
Doing this change would not make the code any less ugly. For example, EmitCheck 
may not use the argument if the check has -fsanitize-trap behaviour, in which 
case we get an unused llvm.bitset.test call that affects some of the clang 
tests.



Repository:
  rL LLVM

http://reviews.llvm.org/D16823



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

Reply via email to