lebedev.ri added a comment.

  To make this transformation safe, I have changed clang's code-generation to
  always load virtual function pointers using the llvm.type.checked.load
  intrinsic, instead of regular load instructions. I originally tried writing
  this using clang's existing code-generation, which uses the llvm.type.test
  and llvm.assume intrinsics after doing a normal load. However, it is possible
  for optimisations to obscure the relationship between the GEP, load and
  llvm.type.test, causing GlobalDCE to fail to find virtual function call
  sites.

Can you please clarify, that is saying that without switching to
`llvm.type.checked.load` the optimization would be less efficient
since it would trigger less, not that the optimization would trigger
in some cases where it shouldn't trigger, thus miscompiling the code,
correct ?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D63932



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D63932: [... Oliver Stannard (Linaro) via Phabricator via cfe-commits
    • [PATCH] D639... Roman Lebedev via Phabricator via cfe-commits
    • [PATCH] D639... Oliver Stannard (Linaro) via Phabricator via cfe-commits
    • [PATCH] D639... Oliver Stannard (Linaro) via Phabricator via cfe-commits
    • [PATCH] D639... Peter Collingbourne via Phabricator via cfe-commits

Reply via email to