efriedma added inline comments.

================
Comment at: clang/lib/CodeGen/CGVTables.cpp:467
+  if (!CalleeMD->isDefined()) {
+    CGM.ErrorUnsupported(ThunkGD.getDecl(), "thunk for forward declaration");
+    return;
----------------
lebedev.ri wrote:
> efriedma wrote:
> > "IsUnprototyped" means that we have to generate a thunk, but we don't have 
> > the proper types. We emit some special IR with known incorrect types, and 
> > mark it with the "thunk" attribute to let the optimizer know what we're 
> > doing.
> > 
> > It should be fine to continue using a fake type on the IsUnprototyped 
> > codepath.
> `IsUnprototyped` is false here for that test though..
Oh, hmm, right.  My comment still holds, but doesn't apply to that test.

In that test, the derived class method is defined, but the base class method 
isn't.  You should be able to compute the LLVM function type for the base class 
method in that case.  The types have to be the same, barring pointer variance, 
so being able to compute the type of the derived class method implies you can 
compute the type of the base class method.

So I'm not sure why you'd need to error out in that case; the computation 
should work the same way whether or not we can see the definition of the base 
class method.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D100388/new/

https://reviews.llvm.org/D100388

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

Reply via email to