[PATCH] D72959: Relative VTables ABI on Fuchsia

Leonard Chan via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed May 20 14:18:43 PDT 2020


leonardchan updated this revision to Diff 265342.
leonardchan added a comment.

Calculate the address points once beforehand such that we can get an address point from a vtable index.

Also updated to emit a stub still for complete destructor components in the vtable. The reason for this is because, with optimizations enabled, it's possible for dso_local complete destructors of a child class to be replaced by destructors of a parent class in the child's vtable, even if that parent destructor is not guaranteed to be dso_local. Updated the `no-stub-when-dso-local.cpp` test to reflect this.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D72959

Files:
  clang/cmake/caches/Fuchsia-stage2.cmake
  clang/include/clang/AST/VTableBuilder.h
  clang/include/clang/Basic/LangOptions.def
  clang/include/clang/CodeGen/ConstantInitBuilder.h
  clang/include/clang/Driver/Options.td
  clang/lib/AST/ASTContext.cpp
  clang/lib/AST/VTableBuilder.cpp
  clang/lib/CodeGen/CGClass.cpp
  clang/lib/CodeGen/CGVTables.cpp
  clang/lib/CodeGen/CGVTables.h
  clang/lib/CodeGen/ConstantInitBuilder.cpp
  clang/lib/CodeGen/ItaniumCXXABI.cpp
  clang/lib/CodeGen/MicrosoftCXXABI.cpp
  clang/lib/Driver/ToolChains/Fuchsia.cpp
  clang/lib/Frontend/CompilerInvocation.cpp
  clang/test/CodeGenCXX/Fuchsia/child-inheritted-from-parent-in-comdat.cpp
  clang/test/CodeGenCXX/Fuchsia/child-vtable-in-comdat.cpp
  clang/test/CodeGenCXX/Fuchsia/cross-translation-unit-1.cpp
  clang/test/CodeGenCXX/Fuchsia/cross-translation-unit-2.cpp
  clang/test/CodeGenCXX/Fuchsia/cross-tu-header.h
  clang/test/CodeGenCXX/Fuchsia/diamond-inheritance.cpp
  clang/test/CodeGenCXX/Fuchsia/diamond-virtual-inheritance.cpp
  clang/test/CodeGenCXX/Fuchsia/dynamic-cast.cpp
  clang/test/CodeGenCXX/Fuchsia/inheritted-virtual-function.cpp
  clang/test/CodeGenCXX/Fuchsia/inline-virtual-function.cpp
  clang/test/CodeGenCXX/Fuchsia/inlined-key-function.cpp
  clang/test/CodeGenCXX/Fuchsia/member-function-pointer.cpp
  clang/test/CodeGenCXX/Fuchsia/multiple-inheritance.cpp
  clang/test/CodeGenCXX/Fuchsia/no-alias-when-dso-local.cpp
  clang/test/CodeGenCXX/Fuchsia/no-stub-when-dso-local.cpp
  clang/test/CodeGenCXX/Fuchsia/override-pure-virtual-method.cpp
  clang/test/CodeGenCXX/Fuchsia/overriden-virtual-function.cpp
  clang/test/CodeGenCXX/Fuchsia/parent-and-child-in-comdats.cpp
  clang/test/CodeGenCXX/Fuchsia/parent-vtable-in-comdat.cpp
  clang/test/CodeGenCXX/Fuchsia/pass-byval-attributes.cpp
  clang/test/CodeGenCXX/Fuchsia/relative-vtables-flag.cpp
  clang/test/CodeGenCXX/Fuchsia/simple-vtable-definition.cpp
  clang/test/CodeGenCXX/Fuchsia/stub-linkages.cpp
  clang/test/CodeGenCXX/Fuchsia/thunk-mangling.cpp
  clang/test/CodeGenCXX/Fuchsia/type-info.cpp
  clang/test/CodeGenCXX/Fuchsia/vbase-offset.cpp
  clang/test/CodeGenCXX/Fuchsia/virtual-function-call.cpp
  clang/test/CodeGenCXX/Fuchsia/vtable-hidden-when-in-comdat.cpp
  clang/test/CodeGenCXX/constructor-destructor-return-this.cpp
  libcxxabi/CMakeLists.txt
  libcxxabi/src/private_typeinfo.cpp
  llvm/lib/IR/Constants.cpp
  llvm/test/CodeGen/X86/relptr-rodata.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D72959.265342.patch
Type: text/x-patch
Size: 138789 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200520/724e9995/attachment-0001.bin>


More information about the cfe-commits mailing list