)]}'
{
  "commit": "6481867ae01355a2fbf296561daee9af0376f736",
  "tree": "b77dafdfcd540e7b846e48f21c29f310c5a40162",
  "parents": [
    "4af34d33c9e006eb8a142fe09910e8d25c188a48"
  ],
  "author": {
    "name": "Josef Melcr",
    "email": "josef.melcr@suse.com",
    "time": "Tue Aug 11 10:35:16 2026 +0200"
  },
  "committer": {
    "name": "Josef Melcr",
    "email": "josef.melcr@suse.com",
    "time": "Thu Aug 13 11:56:15 2026 +0200"
  },
  "message": "ipa: Implement a summary for callback edges\n\nCurrently in trunk, every edge contains a 16 bit field called\ncallback_id, which is used to link callback edges to their attributes,\nfrom which all additional information is calculated as is needed.\n\nThis patch adds a new summary struct for callback edges, called\ncallback_info.  It allows us to remove callback_id from the main class\nand aggregate all relevant information, without having to recalculate it\nevery single time.\n\ngcc/ChangeLog:\n\n\t* Makefile.in: Add callback-info.o to OBJS.\n\t* attr-callback.cc (callback_fetch_attr_by_edge): Use fn_idx\n\tfrom the summary.\n\t(callback_get_arg_mapping): Replaced by\n\tcallback_get_arg_mapping_from_attr and the summary field.\n\t(callback_get_arg_mapping_from_attr): New function, parses the\n\tattr and returns the computed argument mapping.\n\t(callback_fetch_fn_position): Delete, obsoleted by the summary.\n\t(callback_edge_useful_p): Check for the redirected flag in the\n\tsummary instead of cgraph_node fields.\n\t* attr-callback.h (enum callback_position): Add comment.\n\t(enum arg_mapping_constants): New enum, defines the identifier\n\tfor -1 in the arg_mapping vector.\n\t(callback_get_arg_mapping): Delete.\n\t(callback_fetch_fn_position): Delete.\n\t(callback_get_arg_mapping_from_attr): Add decl.\n\t* cgraph.cc (symbol_table::create_edge): Remove callback_id initializer.\n\t(cgraph_edge::make_callback): Initialize the callback_info\n\tsummary, add necessary arguments.\n\t(cgraph_edge::redirect_callee): Set the redirected flag when\n\tredirecting a callback edge.\n\t(cgraph_edge::redirect_call_stmt_to_callee): Use the summary.\n\t(cgraph_node::verify_node): Remove callback_id checks.\n\t(cgraph_cc_finalize): Free the summaries.\n\t* cgraph.h: Remove callback_id from cgraph_edge, adjust decl of\n\tcgraph_edge::make_callback.\n\t* cgraphclones.cc (cgraph_edge::clone): Remove callback_id.\n\t* ipa-cp.cc (ipcp_driver): Initialize the summary sum.\n\t* ipa-prop.cc (ipa_compute_jump_functions_for_edge): Remove\n\tcallback_id, adjust call to make_callback, use the summary.\n\t(ipa_analyze_node): Initialize the summary sum.\n\t(ipa_register_cgraph_hooks): Likewise.\n\t* lto-cgraph.cc (lto_output_edge): Remove callback_id, stream\n\tout the summary.\n\t(output_symtab): Initialize the summary sum.\n\t(input_edge): Remove callback_id, stream in the summary.\n\t(input_cgraph_1): Initialize the summary sum.\n\t* callback-info.cc: New file.\n\t* callback-info.h: New file.\n\nSigned-off-by: Josef Melcr \u003cjosef.melcr@suse.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ee2f9022eab7f88a723118a57f11485da5eb9254",
      "old_mode": 33188,
      "old_path": "gcc/Makefile.in",
      "new_id": "ce5894767fea4bac121ab6ac45b91060ee67b000",
      "new_mode": 33188,
      "new_path": "gcc/Makefile.in"
    },
    {
      "type": "modify",
      "old_id": "19a8770707b431f2164451b8a48fff3f7ef0b169",
      "old_mode": 33188,
      "old_path": "gcc/attr-callback.cc",
      "new_id": "376a17e82b40361ea38f8348475a9a70918c784e",
      "new_mode": 33188,
      "new_path": "gcc/attr-callback.cc"
    },
    {
      "type": "modify",
      "old_id": "5ed93b3afefc3e3a8cc2cf36c00bbb6d3b0b7732",
      "old_mode": 33188,
      "old_path": "gcc/attr-callback.h",
      "new_id": "baefa8701b9e84d7e55da5954ce64f63b9eb48d2",
      "new_mode": 33188,
      "new_path": "gcc/attr-callback.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b277f37154e0050c4c9c09569a06966985f3791d",
      "new_mode": 33188,
      "new_path": "gcc/callback-info.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3eecbf6f9af571f69d98a7e6ed29e7ee2120e1cf",
      "new_mode": 33188,
      "new_path": "gcc/callback-info.h"
    },
    {
      "type": "modify",
      "old_id": "da770ccc4af79cca576e65dccf913936129632fa",
      "old_mode": 33188,
      "old_path": "gcc/cgraph.cc",
      "new_id": "cdb3201f49cec5a910a0fc33f554ddfb11f0a572",
      "new_mode": 33188,
      "new_path": "gcc/cgraph.cc"
    },
    {
      "type": "modify",
      "old_id": "e4a0a6b1bc78f8fc5fb9e528a1a68afbf9e679d3",
      "old_mode": 33188,
      "old_path": "gcc/cgraph.h",
      "new_id": "d9f3d4815b0db26aec3a51dc5e42a79a4ec34925",
      "new_mode": 33188,
      "new_path": "gcc/cgraph.h"
    },
    {
      "type": "modify",
      "old_id": "180ef4e52c876dfe5c50363b4b34ae7b197599ea",
      "old_mode": 33188,
      "old_path": "gcc/cgraphclones.cc",
      "new_id": "b5f2ce5ff2f36c0483c9f966d6ba76671198d62e",
      "new_mode": 33188,
      "new_path": "gcc/cgraphclones.cc"
    },
    {
      "type": "modify",
      "old_id": "d2e3254643b68af09b6db156a850b6521e4cd726",
      "old_mode": 33188,
      "old_path": "gcc/ipa-cp.cc",
      "new_id": "d5d9709e11851a9f207163da7283157681536b87",
      "new_mode": 33188,
      "new_path": "gcc/ipa-cp.cc"
    },
    {
      "type": "modify",
      "old_id": "e66c84ebcdf4043d1e640e4b63adcdf2a320aa19",
      "old_mode": 33188,
      "old_path": "gcc/ipa-prop.cc",
      "new_id": "668932ec32911ea7e913aee656a2b7d4f112be63",
      "new_mode": 33188,
      "new_path": "gcc/ipa-prop.cc"
    },
    {
      "type": "modify",
      "old_id": "9a71110d5c25f26e9ef5f84a58c598b98c990d76",
      "old_mode": 33188,
      "old_path": "gcc/lto-cgraph.cc",
      "new_id": "adbf59ca821ff39dd5cde4a7870e647f27ea8997",
      "new_mode": 33188,
      "new_path": "gcc/lto-cgraph.cc"
    }
  ]
}
