[PATCH] D33437: Emit available_externally vtables opportunistically

John McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri May 26 07:52:41 PDT 2017

rjmccall added inline comments.

Comment at: include/clang/AST/VTableBuilder.h:160
+           "GlobalDecl can be created only from virtual function");
+    if (getKind() == CK_FunctionPointer)
+      return GlobalDecl(getFunctionDecl());
Please use an exhaustive switch.  You can put llvm_unreachable in the other cases.

Comment at: lib/CodeGen/CGVTables.cpp:905
+    else
+      OpportunisticVTables.push_back(RD);
I would add a CGM.shouldOpportunisticallyEmitVTables() that can just check the optimization level, and then you can use that to avoid even collecting v-tables like this if you don't need to.

Comment at: lib/CodeGen/CodeGenModule.cpp:1377
+void CodeGenModule::EmitVTablesOpportunistically() {
+  // Only emit speculated vtables with optimizations.
It's worth adding a header comment to this explaining that it runs after EmitDeferred() and therefore is not allowed to create new references to things that need to be emitted lazily.


More information about the cfe-commits mailing list