This is an archive of the discontinued LLVM Phabricator instance.

Decorating vptr load & stores with !invariant.group
ClosedPublic

Authored by Prazek on Aug 13 2015, 10:14 PM.

Details

Summary

Adding !invariant.group to vptr load/stores for devirtualization purposes.

Rebased after Peter commit and on top of strict-vtable-pointers

For more goto:
http://lists.llvm.org/pipermail/cfe-dev/2015-July/044227.htm

Diff Detail

Event Timeline

Prazek updated this revision to Diff 32130.Aug 13 2015, 10:14 PM
Prazek retitled this revision from to Decorating vptr load & stores with !invariant.group.
Prazek updated this object.
Prazek added reviewers: rsmith, majnemer, pcc.
Prazek added a reviewer: nicholas.
Prazek added a subscriber: cfe-commits.
pcc added inline comments.Aug 14 2015, 11:32 AM
lib/CodeGen/CodeGenModule.cpp
1497

This doesn't seem like it needs to be a separate class. See CreateBitSetIdentifierForType/BitSetIdMap in D11857. I'll factor out that functionality into a separate patch to avoid blocking either review on each other.

pcc added inline comments.Aug 14 2015, 12:02 PM
lib/CodeGen/CodeGenModule.cpp
1497
Prazek updated this revision to Diff 34833.Sep 15 2015, 1:59 PM
Prazek updated this object.
rsmith accepted this revision.Sep 15 2015, 2:07 PM
rsmith edited edge metadata.
rsmith added inline comments.
lib/CodeGen/CodeGenModule.cpp
3727–3728

I think this may break the MSVC build, and it looks unrelated to the other changes. Revert this bit, or use llvm::None. In the latter case, commit this separately.

This revision is now accepted and ready to land.Sep 15 2015, 2:07 PM
Prazek marked an inline comment as done.Sep 15 2015, 2:13 PM
Prazek added inline comments.
lib/CodeGen/CodeGenModule.cpp
3727–3728

ok

Prazek closed this revision.Sep 15 2015, 2:49 PM
Prazek marked an inline comment as done.