Page MenuHomePhabricator

[Attributor] Use abstract call sites for call site callback
ClosedPublic

Authored by jdoerfert on Sep 20 2019, 6:56 PM.

Details

Summary

When we iterate over uses of functions and expect them to be call sites,
we now use abstract call sites to allow callback calls.

Event Timeline

jdoerfert created this revision.Sep 20 2019, 6:56 PM
Herald added a project: Restricted Project. · View Herald TranscriptSep 20 2019, 6:56 PM
uenoku added inline comments.Sep 25 2019, 9:32 AM
llvm/lib/Transforms/IPO/Attributor.cpp
597–598

I couldn't understand this. Could you show me an example?

jdoerfert marked an inline comment as done.Sep 26 2019, 7:11 PM
jdoerfert added inline comments.
llvm/lib/Transforms/IPO/Attributor.cpp
597–598

In the test case, the first two arguments of t0_callback_callee are not mapped to the call site in t0_caller but the values are provided by t0_callback_broker. That means we cannot deduce anything for them. The test is constructed in a way to make sure we do not propagate information into these arguments, e.g., we do not replace the first with null and we do not add the 128 alignment to the second. These deductions would happen if we just looked at the call site with the same argument number but since we use the abstract call site it returns "no corresponding position found" instead.

Does that make some sense?

uenoku accepted this revision.Sep 28 2019, 3:27 PM

LGTM

llvm/lib/Transforms/IPO/Attributor.cpp
597–598

I understand. Thanks.

This revision is now accepted and ready to land.Sep 28 2019, 3:27 PM
This revision was automatically updated to reflect the committed changes.