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