[CodeGenCXX] Emit strip.invariant.group with -fstrict-vtable-pointers
authorPiotr Padlewski <piotr.padlewski@gmail.com>
Mon, 2 Jul 2018 19:21:36 +0000 (19:21 +0000)
committerPiotr Padlewski <piotr.padlewski@gmail.com>
Mon, 2 Jul 2018 19:21:36 +0000 (19:21 +0000)
commit0705829e405ebfd480cb365667c834445e19dc14
tree8befdf49abe3c262f09ce5082e3a4b921b0ec813
parent841ae5ab1efcef1daf3209edb1b8c403defae74c
[CodeGenCXX] Emit strip.invariant.group with -fstrict-vtable-pointers

Summary:
Emmiting new intrinsic that strips invariant.groups to make
devirtulization sound, as described in RFC: Devirtualization v2.

Reviewers: rjmccall, rsmith, amharc, kuhar

Subscribers: llvm-commits, cfe-commits

Differential Revision: https://reviews.llvm.org/D47299

Co-authored-by: Krzysztof Pszeniczny <krzysztof.pszeniczny@gmail.com>
llvm-svn: 336137
clang/include/clang/AST/DeclCXX.h
clang/include/clang/AST/Type.h
clang/lib/AST/Type.cpp
clang/lib/CodeGen/CGExpr.cpp
clang/lib/CodeGen/CGExprScalar.cpp
clang/test/CodeGenCXX/strict-vtable-pointers.cpp