)]}'
{
  "commit": "93cdd1b5cfa3735c599949b77e24dbfbe570441a",
  "tree": "857248ba9ec00353b68ba375031402ab3bd4f864",
  "parents": [
    "13d60ce2f262ef9055389908b63824e53b3054a1"
  ],
  "author": {
    "name": "Arthur Eubanks",
    "email": "aeubanks@google.com",
    "time": "Mon Feb 12 15:52:08 2024 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Feb 12 14:52:08 2024 -0800"
  },
  "message": "[PGO] Add ability to mark cold functions as optsize/minsize/optnone (#69030)\n\nThe performance of cold functions shouldn\u0027t matter too much, so if we\r\ncare about binary sizes, add an option to mark cold functions as\r\noptsize/minsize for binary size, or optnone for compile times [1]. Clang\r\npatch will be in a future patch.\r\n\r\nThis is intended to replace `shouldOptimizeForSize(Function\u0026, ...)`.\r\nWe\u0027ve seen multiple cases where calls to this expensive function, if not\r\ncareful, can blow up compile times. I will clean up users of that\r\nfunction in a followup patch.\r\n\r\nInitial version: https://reviews.llvm.org/D149800\r\n\r\n[1]\r\nhttps://discourse.llvm.org/t/rfc-new-feature-proposal-de-optimizing-cold-functions-using-pgo-info/56388",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e2511aa1b5c996271398adf4501cef4830a142e4",
      "old_mode": 33188,
      "old_path": "clang/lib/CodeGen/BackendUtil.cpp",
      "new_id": "a310825240237ce51568e01743f72cb52b68f9dd",
      "new_mode": 33188,
      "new_path": "clang/lib/CodeGen/BackendUtil.cpp"
    },
    {
      "type": "modify",
      "old_id": "87eb29a8de48a08dd8b10cccf33326de47f3775e",
      "old_mode": 33188,
      "old_path": "llvm/include/llvm/Support/PGOOptions.h",
      "new_id": "de981abf18705861c7f8e6287456f96cf212caf4",
      "new_mode": 33188,
      "new_path": "llvm/include/llvm/Support/PGOOptions.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "785448e0dec4d9e22bd36febfaf02c147c52ef77",
      "new_mode": 33188,
      "new_path": "llvm/include/llvm/Transforms/Instrumentation/PGOForceFunctionAttrs.h"
    },
    {
      "type": "modify",
      "old_id": "ccc4276e36dacf0dbc11274361d53f224b7a77d1",
      "old_mode": 33188,
      "old_path": "llvm/lib/LTO/LTOBackend.cpp",
      "new_id": "7b3a7590dfa7437311ef388f7fbda591141dd27b",
      "new_mode": 33188,
      "new_path": "llvm/lib/LTO/LTOBackend.cpp"
    },
    {
      "type": "modify",
      "old_id": "e3f25028fdabd84027691ecddd8b45ea0253c576",
      "old_mode": 33188,
      "old_path": "llvm/lib/Passes/PassBuilder.cpp",
      "new_id": "f26d95ab1e479c408483c3ec332d7a2ecaf50b6e",
      "new_mode": 33188,
      "new_path": "llvm/lib/Passes/PassBuilder.cpp"
    },
    {
      "type": "modify",
      "old_id": "4e233d99f942e920ad0e58750858fb523bfa5361",
      "old_mode": 33188,
      "old_path": "llvm/lib/Passes/PassBuilderPipelines.cpp",
      "new_id": "142bd50b3798e0feb4260591916136f8eb9ac865",
      "new_mode": 33188,
      "new_path": "llvm/lib/Passes/PassBuilderPipelines.cpp"
    },
    {
      "type": "modify",
      "old_id": "afa5a65fcbdef369ddaa044fcec0fc63f006fcc1",
      "old_mode": 33188,
      "old_path": "llvm/lib/Passes/PassRegistry.def",
      "new_id": "093c1f8aaad438b0cd1768524e36b2b9e265bc88",
      "new_mode": 33188,
      "new_path": "llvm/lib/Passes/PassRegistry.def"
    },
    {
      "type": "modify",
      "old_id": "7e57b52e4ba2f54a210410c43409ca9b22e62731",
      "old_mode": 33188,
      "old_path": "llvm/lib/Support/PGOOptions.cpp",
      "new_id": "5981dff9e09468f947fd7866323bca9111e21d52",
      "new_mode": 33188,
      "new_path": "llvm/lib/Support/PGOOptions.cpp"
    },
    {
      "type": "modify",
      "old_id": "424f1d433606771dfc27b76dc37810392e01d5e0",
      "old_mode": 33188,
      "old_path": "llvm/lib/Transforms/Instrumentation/CMakeLists.txt",
      "new_id": "ee9aa73ff03403834650cef2a4867a85501ea910",
      "new_mode": 33188,
      "new_path": "llvm/lib/Transforms/Instrumentation/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c0ebdd7ed88635a2a3af65824e12b10f78dd96d0",
      "new_mode": 33188,
      "new_path": "llvm/lib/Transforms/Instrumentation/PGOForceFunctionAttrs.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "29ebc0366040e164ff9d4b64232ff7d754f5433c",
      "new_mode": 33188,
      "new_path": "llvm/test/Instrumentation/PGOForceFunctionAttrs/basic.ll"
    },
    {
      "type": "modify",
      "old_id": "fdfb4df53273fe991f0e93bb6086d4bd06110754",
      "old_mode": 33188,
      "old_path": "llvm/tools/opt/NewPMDriver.cpp",
      "new_id": "374698083763b0599d39bc4366c96b545866c418",
      "new_mode": 33188,
      "new_path": "llvm/tools/opt/NewPMDriver.cpp"
    },
    {
      "type": "modify",
      "old_id": "0cce6558e0093cf577a93686f75f3e81030539b3",
      "old_mode": 33188,
      "old_path": "llvm/utils/gn/secondary/llvm/lib/Transforms/Instrumentation/BUILD.gn",
      "new_id": "00e1888da64d26b3d3a92646f4c64a936c7dac02",
      "new_mode": 33188,
      "new_path": "llvm/utils/gn/secondary/llvm/lib/Transforms/Instrumentation/BUILD.gn"
    }
  ]
}
