pcc added inline comments.

================
Comment at: lib/CodeGen/CGExpr.cpp:2494
@@ +2493,3 @@
+  llvm::Value *ValidVtable = nullptr;
+  if (CheckAndAppendValidVtable) {
+    llvm::Value *AllVtables = llvm::MetadataAsValue::get(
----------------
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).

================
Comment at: lib/CodeGen/CodeGenModule.cpp:4053
@@ +4052,3 @@
+
+  if (!CodeGenOpts.SanitizeTrap.has(SanitizerKind::CFIVCall) ||
+      !CodeGenOpts.SanitizeTrap.has(SanitizerKind::CFINVCall) ||
----------------
This conditional doesn't look right. It should be something like 

```if (sanitize.has(this) && !sanitizetrap.has(this)) ||
   (sanitize.has(that) && !sanitizetrap.has(that)) ||
...
```
But that's sufficiently ugly that I wonder if we should just do this 
unconditionally. It shouldn't make a difference to the generated code either 
way.


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