)]}'
{
  "commit": "c8c6c0ff7461a5a4c19c110d830945967bc97329",
  "tree": "9ffbce1cc9ff8427f7686de4a625d851212b55ad",
  "parents": [
    "b3115cd807196e465ce3fc16f0cab58be24e47fc"
  ],
  "author": {
    "name": "Matsu",
    "email": "47756807+khaki3@users.noreply.github.com",
    "time": "Wed Jul 29 06:16:55 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Jul 29 06:16:55 2026 -0700"
  },
  "message": "[flang] Drop nuw on XArrayCoor for non-positive slice steps (#212639)\n\nExample:\n```fortran\nz(:, 3:2:-1) \u003d z(:, 1:2)\n```\n\nIn this code, reverse-section indexing lowers `idx*step` / `diff+adj`\nwith `nuw`. A negative step can make the product negative, so `nuw` is\ninvalid and LLVM `-O2` can drop the stores.\n\nFix: keep `nsw|nuw` only for known positive steps; otherwise keep `nsw`\nand drop `nuw` (negative, zero, or unknown).",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0e88524126f11e2298a4bd2b1a8ed5ebf0cda15d",
      "old_mode": 33188,
      "old_path": "flang/lib/Optimizer/CodeGen/CodeGen.cpp",
      "new_id": "483f839e5b6668af6c3acc57f8baf152da6b0cb9",
      "new_mode": 33188,
      "new_path": "flang/lib/Optimizer/CodeGen/CodeGen.cpp"
    },
    {
      "type": "modify",
      "old_id": "f30c42096b17e5f2462f1068d025c5ff3fcbbabf",
      "old_mode": 33188,
      "old_path": "flang/test/Fir/array_coor_nuw_nusw.fir",
      "new_id": "ed266c623044bddbdd62412b5dfde095ac208e15",
      "new_mode": 33188,
      "new_path": "flang/test/Fir/array_coor_nuw_nusw.fir"
    },
    {
      "type": "modify",
      "old_id": "5209cb26d782cc8a1f7732b3db4c334667613efc",
      "old_mode": 33188,
      "old_path": "flang/test/Fir/convert-to-llvm.fir",
      "new_id": "8d67b43ffd3383a7522206e66fb5260eec1217f4",
      "new_mode": 33188,
      "new_path": "flang/test/Fir/convert-to-llvm.fir"
    }
  ]
}
