)]}'
{
  "commit": "3ade8746ee66ad1394c9b5847a86fc326a942d06",
  "tree": "daf3cdfe300db08ec8f0a2b36a9c969143832545",
  "parents": [
    "40e85fcaaa04515e511c2a2a8899e46bd6c300ba"
  ],
  "author": {
    "name": "Andrew Savonichev",
    "email": "andrew.savonichev@gmail.com",
    "time": "Fri Sep 12 10:25:58 2025 +0900"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Sep 12 10:25:58 2025 +0900"
  },
  "message": "[clang] Look through parens around reinterpret_cast to emit a warning (#157033)\n\nClang warns about UB when a `reinterpret_cast` is dereferenced as an\nincompatible type:\n```\n  long l;\n  *reinterpret_cast\u003cdouble*\u003e(\u0026l) // UB\n```\nHowever, the code was too strict and did not handle extra parens around\na `reinterpret_cast`, so the following case was not diagnosed:\n```\n  long l;\n  *(reinterpret_cast\u003cdouble*\u003e(\u0026l)) // UB, but no warning\n```\nThe patch now skips ParenExpr when looking for a CXXReinterpretCastExpr\nto enable a diagnostic for the second case.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e1e497ccdbccd680a26c1cc0d78817d75cbe43ab",
      "old_mode": 33188,
      "old_path": "clang/docs/ReleaseNotes.rst",
      "new_id": "060f3d982b8503dc33f84f32e82abcc19aea935e",
      "new_mode": 33188,
      "new_path": "clang/docs/ReleaseNotes.rst"
    },
    {
      "type": "modify",
      "old_id": "aba00dc8ff9b6eb9059bdec0588903c8cbb46865",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaExpr.cpp",
      "new_id": "bd62ac62341803f67d73ee5b8f6f93390dc84442",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaExpr.cpp"
    },
    {
      "type": "modify",
      "old_id": "bfb808773b9004b00d69f9c5e8043d819bd1ed99",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/reinterpret-cast.cpp",
      "new_id": "10b2ed183e2a5288b7fca29f1e598061edec4ef4",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/reinterpret-cast.cpp"
    }
  ]
}
