)]}'
{
  "commit": "fda24dbc16abc414bf21b74e77d3acd2ecadfdb9",
  "tree": "28067bb5e085c365577cf2fdd365c554f3483bd5",
  "parents": [
    "7594b4b8d1bca197282d185e6c309cd71fcce380"
  ],
  "author": {
    "name": "YafetBeyene",
    "email": "127161378+yafet-a@users.noreply.github.com",
    "time": "Fri Aug 22 10:51:09 2025 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Aug 22 10:51:09 2025 +0100"
  },
  "message": "[BOLT] Add dump-dot-func option for selective function CFG dumping (#153007)\n\n## Change:\n* Added `--dump-dot-func` command-line option that allows users to dump\nCFGs only for specific functions instead of dumping all functions (the\ncurrent only available option being `--dump-dot-all`)\n\n## Usage:\n* Users can now specify function names or regex patterns (e.g.,\n`--dump-dot-func\u003dmain,helper` or `--dump-dot-func\u003d\"init.*`\") to generate\n.dot files only for functions of interest\n* Aims to save time when analysing specific functions in large binaries\n(e.g., only dumping graphs for performance-critical functions identified\nthrough profiling) and we can now avoid reduce output clutter from\ngenerating thousands of unnecessary .dot files when analysing large\nbinaries\n\n## Testing\nThe introduced test `dump-dot-func.test` confirms the new option does\nthe following:\n\n- [x] 1. `dump-dot-func` can correctly filter a specified functions\n- [x] 2. Can achieve the above with regexes\n- [x] 3. Can do 1. with a list of functions\n- [x] No option specified creates no dot files\n- [x] Passing in a non-existent function generates no dumping messages\n- [x] `dump-dot-all` continues to work as expected",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f3881c9a640a92da52d4c52720d8771c450a4e50",
      "old_mode": 33188,
      "old_path": "bolt/docs/CommandLineArgumentReference.md",
      "new_id": "d65cf39e16b295d0ae4ba740238577fbed5c84c1",
      "new_mode": 33188,
      "new_path": "bolt/docs/CommandLineArgumentReference.md"
    },
    {
      "type": "modify",
      "old_id": "a75b6bf720ec48f6988a60d9b87ef24b9808caff",
      "old_mode": 33188,
      "old_path": "bolt/include/bolt/Utils/CommandLineOpts.h",
      "new_id": "859d6f3bf6774ecda2a0c34ac0b282e3f1c35d85",
      "new_mode": 33188,
      "new_path": "bolt/include/bolt/Utils/CommandLineOpts.h"
    },
    {
      "type": "modify",
      "old_id": "996d2e972599db57acf045781ee0d05da50b40dd",
      "old_mode": 33188,
      "old_path": "bolt/lib/Rewrite/BinaryPassManager.cpp",
      "new_id": "0ddb73f828878015cff26786dc7bcfd6ddb27072",
      "new_mode": 33188,
      "new_path": "bolt/lib/Rewrite/BinaryPassManager.cpp"
    },
    {
      "type": "modify",
      "old_id": "79daa38142ae829a78f4913266bd547935877f3c",
      "old_mode": 33188,
      "old_path": "bolt/lib/Rewrite/RewriteInstance.cpp",
      "new_id": "4f5a75b770ce6fe301190f389341f0f9c3ea6a2d",
      "new_mode": 33188,
      "new_path": "bolt/lib/Rewrite/RewriteInstance.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "61c968fc27f987badfc571243b1b3ac8cd69957b",
      "new_mode": 33188,
      "new_path": "bolt/test/Inputs/multi-func.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "510713dde6167fb5cd3aa95e6f78bfe996843003",
      "new_mode": 33188,
      "new_path": "bolt/test/dump-dot-func.test"
    }
  ]
}
