See the attached (pre-committed) test case. Looks like when we scan vtables for a particular vload in ScanVTableLoad and an entry in one possible vtable is invalid (null or non-fptr), we bail in a wrong way -- we completely stop the scanning of vtables with a return and this results in dropped dependencies because we don't perform GVDependencies[Caller].insert(Callee); on following valid vtable entries. Let's fix that.
Details
Details
Diff Detail
Diff Detail
Event Timeline
Comment Actions
LGTM, thanks! It looks like the test only occurs the 'not function pointer' case. Could you also add a case covering the not a pointer case?