)]}'
{
  "commit": "c5195ae2d0c1f3925f48ecb0cf037d3f67d45a85",
  "tree": "6a2855e4849edadd77b568da2b0857cbf5bd7b75",
  "parents": [
    "5720a792a950f46a9b1ebdf0b658b76dc02a9833"
  ],
  "author": {
    "name": "Peng Liu",
    "email": "winner245@hotmail.com",
    "time": "Wed Mar 19 11:51:21 2025 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Mar 19 11:51:21 2025 -0400"
  },
  "message": "[libc++] Fix {std, ranges}::equal for vector\u003cbool\u003e with small storage types (#130394)\n\nThe current implementation of `{std, ranges}::equal` fails to correctly\ncompare `vector\u003cbool\u003e`s when the underlying storage type is smaller than\n`int` (e.g., `unsigned char`, `unsigned short`, `uint8_t` and\n`uint16_t`). See [demo](https://godbolt.org/z/j4s87s6b3)). The problem\narises due to integral promotions on the intermediate bitwise\noperations, leading to incorrect final equality comparison results. This\npatch fixes the issue by ensuring that `{std, ranges}::equal` operate\nproperly for both aligned and unaligned bits.\n \nFixes #126369.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4cac9652d55eda7d81710ce118a591b16cc45db1",
      "old_mode": 33188,
      "old_path": "libcxx/include/__algorithm/equal.h",
      "new_id": "5a8c9504ede1d4bd0774e58f959817579c98256e",
      "new_mode": 33188,
      "new_path": "libcxx/include/__algorithm/equal.h"
    },
    {
      "type": "modify",
      "old_id": "58cbd4d51c88e43e0040c48b7348da8396916e8d",
      "old_mode": 33188,
      "old_path": "libcxx/include/__bit_reference",
      "new_id": "f5c22fc0a3ade5d5e1f3902d16749b16f3763183",
      "new_mode": 33188,
      "new_path": "libcxx/include/__bit_reference"
    },
    {
      "type": "modify",
      "old_id": "e212667f3de1f0ab22acbcebe14dc08e0e3787d6",
      "old_mode": 33188,
      "old_path": "libcxx/include/__fwd/bit_reference.h",
      "new_id": "99d1fdbc419599dafea65b41d93cd8383b5857e2",
      "new_mode": 33188,
      "new_path": "libcxx/include/__fwd/bit_reference.h"
    },
    {
      "type": "modify",
      "old_id": "960663e6ab62a359432c46dd4c84920c27af25ac",
      "old_mode": 33188,
      "old_path": "libcxx/include/__vector/comparison.h",
      "new_id": "27178e41ec51348e19dc176777e130de2c75a288",
      "new_mode": 33188,
      "new_path": "libcxx/include/__vector/comparison.h"
    },
    {
      "type": "modify",
      "old_id": "b37d788c80d3a6d497977d4244679f54823328eb",
      "old_mode": 33188,
      "old_path": "libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp",
      "new_id": "02cc84c288828e3f0c009db4874fbc44541b6aa0",
      "new_mode": 33188,
      "new_path": "libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/equal.pass.cpp"
    },
    {
      "type": "modify",
      "old_id": "4c1c29c72cab04401a320043b393e9f3ba3cd986",
      "old_mode": 33188,
      "old_path": "libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/ranges.equal.pass.cpp",
      "new_id": "3f3af71de6a1ee3b5908415f197a50eb006c96f3",
      "new_mode": 33188,
      "new_path": "libcxx/test/std/algorithms/alg.nonmodifying/alg.equal/ranges.equal.pass.cpp"
    }
  ]
}
