)]}'
{
  "commit": "432b58915ad7257c432a403efe194e5033a53ab0",
  "tree": "7f11d89f27effd16126f68eb29d1efd11469dab8",
  "parents": [
    "e56b479d9f096171287e23169ce23295046535c0"
  ],
  "author": {
    "name": "Vladislav Dzhidzhoev",
    "email": "vdzhidzhoev@accesssoftek.com",
    "time": "Wed Sep 17 20:06:49 2025 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Sep 17 20:06:49 2025 +0200"
  },
  "message": "[DebugInfo][DwarfDebug] Separate creation and population of abstract subprogram DIEs (#159104)\n\nWith this change, construction of abstract subprogram DIEs is split in\ntwo stages/functions:\ncreation of DIE (in DwarfCompileUnit::getOrCreateAbstractSubprogramDIE)\nand its population with children (in\nDwarfCompileUnit::constructAbstractSubprogramScopeDIE).\nWith that, abstract subprograms can be created/referenced from\nDwarfDebug::beginModule, which should solve the issue with static local\nvariables DIE creation of inlined functons with optimized-out\ndefinitions. It fixes https://github.com/llvm/llvm-project/issues/29985.\n\nLexicalScopes class now stores mapping from DISubprograms to their\ncorresponding llvm::Function\u0027s. It is supposed to be built before\nprocessing of each function (so, now LexicalScopes class has a method\nfor \"module initialization\" alongside the method for \"function\ninitialization\"). It is used by DwarfCompileUnit to determine whether a\nDISubprogram needs an abstract DIE before DwarfDebug::beginFunction is\ninvoked.\n\nDwarfCompileUnit::getOrCreateSubprogramDIE method is added, which can\ncreate an abstract or a concrete DIE for a subprogram. It accepts\nllvm::Function* argument to determine whether a concrete DIE must be\ncreated.\n\nThis is a temporary fix for\nhttps://github.com/llvm/llvm-project/issues/29985. Ideally, it will be\nfixed by moving global variables and types emission to\nDwarfDebug::endModule (https://reviews.llvm.org/D144007,\nhttps://reviews.llvm.org/D144005).\n\nSome code proposed by Ellis Hoag \u003cellis.sparky.hoag@gmail.com\u003e in\nhttps://github.com/llvm/llvm-project/pull/90523 was taken for this\ncommit.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2849497f9a43e8d1d0b212acdff55cf919d58662",
      "old_mode": 33188,
      "old_path": "llvm/include/llvm/CodeGen/DebugHandlerBase.h",
      "new_id": "fee4bb116bb87cf51511728e159d70f22b6a7d8f",
      "new_mode": 33188,
      "new_path": "llvm/include/llvm/CodeGen/DebugHandlerBase.h"
    },
    {
      "type": "modify",
      "old_id": "4172e90b4c1b9513f07abeeb9465a2a46f7fab94",
      "old_mode": 33188,
      "old_path": "llvm/include/llvm/CodeGen/LexicalScopes.h",
      "new_id": "993df54c05ad5f4710cf6c378dc73bf2e903741f",
      "new_mode": 33188,
      "new_path": "llvm/include/llvm/CodeGen/LexicalScopes.h"
    },
    {
      "type": "modify",
      "old_id": "0f3ff985974ce7c5dde0e95296dcb9ad1b38fd64",
      "old_mode": 33188,
      "old_path": "llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp",
      "new_id": "d98d18035ac6d974b1a89dc75001b88af06ad82e",
      "new_mode": 33188,
      "new_path": "llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp"
    },
    {
      "type": "modify",
      "old_id": "67f526fe914642d3c5d5fe20f75accaefa6a808c",
      "old_mode": 33188,
      "old_path": "llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp",
      "new_id": "7ce014e9fac9a7079209eb479f67b42575081789",
      "new_mode": 33188,
      "new_path": "llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp"
    },
    {
      "type": "modify",
      "old_id": "c2f6ca09138185b5ecddd1ecb62b3f10e44624b4",
      "old_mode": 33188,
      "old_path": "llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h",
      "new_id": "a3bbc8364599d5e0c0141d385f928d1faebc2851",
      "new_mode": 33188,
      "new_path": "llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h"
    },
    {
      "type": "modify",
      "old_id": "2090157a1a91c6a84f7e91e55a3dc1f3dd1c3ec9",
      "old_mode": 33188,
      "old_path": "llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp",
      "new_id": "25e291c53ea6ad431602960972ec6d82b9b0b95c",
      "new_mode": 33188,
      "new_path": "llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp"
    },
    {
      "type": "modify",
      "old_id": "0fc2b91ddfa9137ae06546a7e34dda647b819d3f",
      "old_mode": 33188,
      "old_path": "llvm/lib/CodeGen/AsmPrinter/DwarfFile.h",
      "new_id": "ef1524d875c840bfec22fa0e7198a07c970bee11",
      "new_mode": 33188,
      "new_path": "llvm/lib/CodeGen/AsmPrinter/DwarfFile.h"
    },
    {
      "type": "modify",
      "old_id": "d76fd0c010209851ab10c6fa11bc73b9407952b4",
      "old_mode": 33188,
      "old_path": "llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp",
      "new_id": "62fb5eb011cf2beebbe6150e017d17427126d862",
      "new_mode": 33188,
      "new_path": "llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp"
    },
    {
      "type": "modify",
      "old_id": "fe05766cf36e1a6d2bc3d80e2a2fd8a15fc94e9b",
      "old_mode": 33188,
      "old_path": "llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h",
      "new_id": "bb00ec3af9782cba6c0ed068fd5f41bcd6a05960",
      "new_mode": 33188,
      "new_path": "llvm/lib/CodeGen/AsmPrinter/DwarfUnit.h"
    },
    {
      "type": "modify",
      "old_id": "5916f619537a4072d3834d438856d4be7e36b2da",
      "old_mode": 33188,
      "old_path": "llvm/lib/CodeGen/LexicalScopes.cpp",
      "new_id": "9fc9ac9a66d41cc5286cb199d2799272f95baf4c",
      "new_mode": 33188,
      "new_path": "llvm/lib/CodeGen/LexicalScopes.cpp"
    },
    {
      "type": "modify",
      "old_id": "a8143bd8f4273d83bf4b2df43c8e55baae8c9729",
      "old_mode": 33188,
      "old_path": "llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp",
      "new_id": "0037bdd270ff364a25b2d8ea1d9bd02d039d3087",
      "new_mode": 33188,
      "new_path": "llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.cpp"
    },
    {
      "type": "modify",
      "old_id": "82e0c28f2f26c84da5fb58f0f57940faef4990ec",
      "old_mode": 33188,
      "old_path": "llvm/lib/CodeGen/LiveDebugValues/VarLocBasedImpl.cpp",
      "new_id": "b9ea03f949ef89a0632c1bf8e3997e548ae67c77",
      "new_mode": 33188,
      "new_path": "llvm/lib/CodeGen/LiveDebugValues/VarLocBasedImpl.cpp"
    },
    {
      "type": "modify",
      "old_id": "9d98e6c085fe30cc3cd66a84d3cf2222172793e2",
      "old_mode": 33188,
      "old_path": "llvm/lib/CodeGen/LiveDebugVariables.cpp",
      "new_id": "b049491b531febaea96978a1ce52cf61e17c3b67",
      "new_mode": 33188,
      "new_path": "llvm/lib/CodeGen/LiveDebugVariables.cpp"
    },
    {
      "type": "modify",
      "old_id": "638a65d4a8b0b42d5e377cfd4ebf714ee183e9eb",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/X86/dbg-distringtype-uint.ll",
      "new_id": "7542c1b8db3272258293cd431d3897bae2e39c74",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/X86/dbg-distringtype-uint.ll"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0d0fd33f49fdf875af4af94e1e45d2132a360915",
      "new_mode": 33188,
      "new_path": "llvm/test/DebugInfo/AArch64/debug-types.ll"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "20cc98a1bfdcd4bac6d9a55385e19ededea83ac2",
      "new_mode": 33188,
      "new_path": "llvm/test/DebugInfo/AArch64/populate-abstract-sp-once.ll"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1d24646896d801301471293b861836bd770dbc43",
      "new_mode": 33188,
      "new_path": "llvm/test/DebugInfo/Generic/inlined-static-var.ll"
    },
    {
      "type": "modify",
      "old_id": "53bc0246c126e5fa9f8bcc3630e29795f0e676c7",
      "old_mode": 33188,
      "old_path": "llvm/unittests/CodeGen/InstrRefLDVTest.cpp",
      "new_id": "3a625b299a96fca2284c94d6a85046ea1073ef84",
      "new_mode": 33188,
      "new_path": "llvm/unittests/CodeGen/InstrRefLDVTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "563d496d1e6003c3df191a374a3daf1f16121f58",
      "old_mode": 33188,
      "old_path": "llvm/unittests/CodeGen/LexicalScopesTest.cpp",
      "new_id": "34bd37a4afdc24517bc24e0a9d15f25509087f17",
      "new_mode": 33188,
      "new_path": "llvm/unittests/CodeGen/LexicalScopesTest.cpp"
    },
    {
      "type": "modify",
      "old_id": "cb4a2410df08bc5f1ab8f11ebbb45f31298b4a2c",
      "old_mode": 33188,
      "old_path": "llvm/unittests/CodeGen/MFCommon.inc",
      "new_id": "a86a68cb4adf155b54e8195a624c26faf31c15b2",
      "new_mode": 33188,
      "new_path": "llvm/unittests/CodeGen/MFCommon.inc"
    }
  ]
}
