)]}'
{
  "commit": "9d5d2eec215b98da04f30a9bdb62e663fefb38d5",
  "tree": "7a524f0882cfce702f0b7fe8b06e30503d3fbfd4",
  "parents": [
    "d733771113339608aff6002d1fa89aaf4a51c502"
  ],
  "author": {
    "name": "Jameson Nash",
    "email": "vtjnash@gmail.com",
    "time": "Tue Jan 27 21:10:48 2026 -0500"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jan 27 21:10:48 2026 -0500"
  },
  "message": "[Mem2Reg] Remove extraneous getAllocatedType() check (#177438)\n\nReplace uses of getAllocatedType() in PromoteMemoryToRegister.cpp with\ntype tracking from actual loads and stores. This makes the promotion\nlogic more semantic - it now checks that all loads/stores use a\nconsistent type rather than requiring them to match the alloca\u0027s\ndeclared type.\n\nChanges:\n- isAllocaPromotable() now tracks the first load/store type seen and\nensures all subsequent accesses use the same type\n- AllocaInfo gains a ValueType field populated during AnalyzeAlloca()\n- PromoteMem2Reg tracks AllocaValueTypes alongside other per-alloca info\n- PHI nodes and UndefValues are created using the tracked type\n\nThis is semantically more permissive - an alloca declared as i64 but\nonly accessed as i32 is now promotable. This is correct because the\nalloca is just a blob of memory; what matters for Mem2Reg is consistent\naccess patterns.\n\nTest changes:\n- asan-stack-safety.ll: Changed loads/stores to volatile to prevent\npromotion while preserving ASAN stack safety analysis behavior\n- SPIRV pointer tests (array-skips-gep.ll, load-struct.ll,\nstore-struct.ll, store-to-array-first-element.ll): Added escape calls to\nprevent alloca promotion, as these tests verify SPIRV backend handling\nof Function-storage-class pointers\n\nCo-authored-by: Claude Opus 4.5 \u003cnoreply@anthropic.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d93a4d87f30f4aca01337a5bc6b692ae10b7d0cf",
      "old_mode": 33188,
      "old_path": "llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp",
      "new_id": "ef668e575f3ea1f4542f6b2208da186f6219f20b",
      "new_mode": 33188,
      "new_path": "llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp"
    },
    {
      "type": "modify",
      "old_id": "3bc07bc137ac60e0d7c92b6576dfba537b87f418",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/SPIRV/pointers/array-skips-gep.ll",
      "new_id": "57534bdf01c93235ed334328adddcd0e13248230",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/SPIRV/pointers/array-skips-gep.ll"
    },
    {
      "type": "modify",
      "old_id": "280a7e4f9053b84b787daadc6510243bdba45a13",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/SPIRV/pointers/load-struct.ll",
      "new_id": "64e9ecdf966323507e5aed12c624be1a838ef59a",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/SPIRV/pointers/load-struct.ll"
    },
    {
      "type": "modify",
      "old_id": "1ff53614990d5ea9f8db9e34fc8a01bc4dac24ba",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/SPIRV/pointers/store-struct.ll",
      "new_id": "a352bf24ec3ddb88c6d430ae280cd1a6c5de9768",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/SPIRV/pointers/store-struct.ll"
    },
    {
      "type": "modify",
      "old_id": "2369c51799993a385f028a603739e7dddfee2166",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/SPIRV/pointers/store-to-array-first-element.ll",
      "new_id": "c41724cfaf72fefca6fd9add1bf49961aa63f701",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/SPIRV/pointers/store-to-array-first-element.ll"
    },
    {
      "type": "modify",
      "old_id": "8210970aaaeb4b175bb2c099fa4b2a1ff149c6eb",
      "old_mode": 33188,
      "old_path": "llvm/test/Instrumentation/AddressSanitizer/asan-stack-safety.ll",
      "new_id": "f94f3d4e6fb4ecab6c4e92f44e882b2d1489da24",
      "new_mode": 33188,
      "new_path": "llvm/test/Instrumentation/AddressSanitizer/asan-stack-safety.ll"
    }
  ]
}
