)]}'
{
  "commit": "5e2dcfe42cd4af14d6e6155314aa5d4167710b65",
  "tree": "4ee649940450287fd670db0092cf2fd8e23f8f9c",
  "parents": [
    "20d70196c9a4da344d0944f3c78447c3bd7079c7"
  ],
  "author": {
    "name": "Yingwei Zheng",
    "email": "dtcxzyw2333@gmail.com",
    "time": "Wed Jun 04 19:42:56 2025 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Jun 04 19:42:56 2025 +0800"
  },
  "message": "[InstCombine] Avoid infinite loop in `foldSelectValueEquivalence` (#142754)\n\nBefore this patch, InstCombine hung because it replaced a value with a\nmore complex one:\n```\n%sel \u003d select i1 %cmp, i32 %smax, i32 0 -\u003e\n%sel \u003d select i1 %cmp, i32 %masked, i32 0 -\u003e\n%sel \u003d select i1 %cmp, i32 %smax, i32 0 -\u003e\n...\n```\nThis patch makes this replacement more conservative. It only performs\nthe replacement iff the new value is one of the operands of the original\nvalue.\n\nCloses https://github.com/llvm/llvm-project/issues/142405.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d7d0431a5b8d04d88395d43be35493ac0a8352a8",
      "old_mode": 33188,
      "old_path": "llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp",
      "new_id": "257dc943bd5c1b2b565bdb1e55f9e4ae299c11c4",
      "new_mode": 33188,
      "new_path": "llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp"
    },
    {
      "type": "modify",
      "old_id": "760b1ef055ad36644c7498ae3e007b9ce153e515",
      "old_mode": 33188,
      "old_path": "llvm/test/Transforms/InstCombine/select-cmp-eq-op-fold.ll",
      "new_id": "2e6bbdf5da74de78c04b51e52b46dd535a565f2c",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/InstCombine/select-cmp-eq-op-fold.ll"
    }
  ]
}
