[PATCH] D72959: Relative VTables ABI on Fuchsia

Leonard Chan via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 23 09:11:27 PDT 2020


leonardchan updated this revision to Diff 259595.
leonardchan marked 2 inline comments as done.
leonardchan edited the summary of this revision.
leonardchan added a comment.
Herald added a subscriber: mgorny.

- Remove `fuchsia` pair from the argument and LangOpt.
- Make the virtual base offset and offset to top 32-bits to make the whole vtable 32-bit aligned.
- Introduce and check against the `ItaniumVTableContext::VTableComponentLayout` enum which will indicate that vtable components should be relative instead of pointers. Use this instead of making overridable virtual methods in ABI classes since this shouldn't be customized between ABIs.
- Update tests.


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/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/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/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/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.259595.patch
Type: text/x-patch
Size: 118260 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200423/f55ee04c/attachment-0001.bin>


More information about the llvm-commits mailing list