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
30 lines
789 B
YAML
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]
|
|
...
|