Leonard Chan db28818476 [llvm] Teach whole program devirtualization about relative vtables
Prior to this patch, WPD was not acting on relative-vtables in C++. This
involves teaching WPD about these things:

- llvm.load.relative which is how relative-vtables are indexed (instead of GEP)
- dso_local_equivalent which is used in the vtable itself when taking the
  offset between a virtual function and vtable
- Update llvm/test/ThinLTO/X86/devirt.ll to use opaque pointers and add
  equivalent tests for RV

Differential Revision: https://reviews.llvm.org/D134320
2023-02-23 22:18:43 +00:00

30 lines
789 B
YAML

---
GlobalValueMap:
42:
- Live: true
TypeTestAssumeVCalls:
- GUID: 14276520915468743435 # typeid1
Offset: 0
- GUID: 271751036925422857 # typeid1_rv
Offset: 0
TypeCheckedLoadVCalls:
- GUID: 15427464259790519041 # typeid2
Offset: 0
- GUID: 1146149264729288256 # typeid2_rv
Offset: 0
TypeTestAssumeConstVCalls:
- VFunc:
GUID: 3515965990081467659 # typeid3
Offset: 0
Args: [12, 24]
- VFunc:
GUID: 2777626534618191571 # typeid3_rv
Offset: 0
Args: [12, 24]
TypeCheckedLoadConstVCalls:
- VFunc:
GUID: 17525413373118030901 # typeid4
Offset: 0
Args: [24, 12]
...