IPA introduces summary for callback edges.
Callback edges in IPA now use a summary struct, reducing per-edge data and speeding up lookups.
GCC’s Interprocedural Analysis (IPA) pass now uses a new callback_info summary struct for callback edges, replacing the previous callback_id. This change aggregates necessary information directly into the summary, eliminating the need to recalculate it each time and reducing per-edge storage. This optimizes the analysis by providing faster access to edge attributes.
In Details
The cgraph infrastructure in GCC's IPA subsystem has been refactored to introduce a callback_info struct for cgraph_edge objects representing callbacks. This replaces the callback_id field, which previously required fetching attributes from a separate table. The new summary struct aggregates critical information like function index and redirection status, improving lookup performance and reducing memory overhead. This change impacts functions within attr-callback.cc, cgraph.cc, and ipa-cp.cc.
- Interprocedural Analysis (IPA)
- A compiler analysis technique that examines the entire program at once, rather than function by function, to find optimization opportunities. IPA passes operate on a program representation that includes calls between functions.
- callback edges
- In the context of GCC's call graph, edges representing indirect calls or calls through function pointers, which are crucial for interprocedural analysis.
- cgraph
- GCC's internal representation of the call graph, which models the relationships between functions in a program. It's a fundamental data structure for interprocedural optimizations.