)]}'
{
  "commit": "ad87761925c2790aab272138b5bbbde4a93e0383",
  "tree": "24881b28ec1be296ff17017de69d52b6afa9b0c5",
  "parents": [
    "09e8c0d5aaef9f1157460a3ae6ae77c7a2f0966f"
  ],
  "author": {
    "name": "Roman Lebedev",
    "email": "lebedev.ri@gmail.com",
    "time": "Sun Jun 20 12:18:15 2021 +0300"
  },
  "committer": {
    "name": "Roman Lebedev",
    "email": "lebedev.ri@gmail.com",
    "time": "Sun Jun 20 12:18:15 2021 +0300"
  },
  "message": "[SimplifyCFG] HoistThenElseCodeToIf(): don\u0027t hoist if either block has it\u0027s address taken\n\nThis problem is exposed by D104598, after it tail-merges `ret` in\n`@test_inline_constraint_S_label`, the verifier would start complaining\n`invalid operand for inline asm constraint \u0027S\u0027`.\n\nEssentially, taking address of a block is mismodelled in IR.\nIt should probably be an explicit instruction, a first one in block,\nthat isn\u0027t identical to any other instruction of the same type,\nso that it can\u0027t be hoisted.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "642320e3289e88dd91c17fc2c2c31c3834acf1ba",
      "old_mode": 33188,
      "old_path": "llvm/lib/Transforms/Utils/SimplifyCFG.cpp",
      "new_id": "4f3559d9779bba202d7e3d88d843e915b14bbbcd",
      "new_mode": 33188,
      "new_path": "llvm/lib/Transforms/Utils/SimplifyCFG.cpp"
    },
    {
      "type": "modify",
      "old_id": "3fb2a3f32cea3cd22ac3f63b5997b1cda38ec3d6",
      "old_mode": 33188,
      "old_path": "llvm/test/CodeGen/AArch64/inlineasm-S-constraint.ll",
      "new_id": "0e1169500e68a9c13f426a1aa5591c92ce1b1c65",
      "new_mode": 33188,
      "new_path": "llvm/test/CodeGen/AArch64/inlineasm-S-constraint.ll"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d00593e94f9f829203f4c39e7950e052f0f663ea",
      "new_mode": 33188,
      "new_path": "llvm/test/Transforms/SimplifyCFG/hoist-from-addresstaken-block.ll"
    }
  ]
}
