)]}'
{
  "commit": "87283db54852a899a52e4e01aa01b471ffa34a1d",
  "tree": "c29113576bc90ba89cb95eba3bcea8ca8810117a",
  "parents": [
    "c5e6938c6710a1c34a32830c743f19a29ffef6e5"
  ],
  "author": {
    "name": "Simon Tatham",
    "email": "simon.tatham@arm.com",
    "time": "Tue Aug 05 08:45:54 2025 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Aug 05 08:45:54 2025 +0100"
  },
  "message": "[clang][ARM] Fix build failure in \u003carm_acle.h\u003e for __swp (#151354)\n\nIn commit d5985905ae8e5b2 I introduced a Sema check that prohibits\n`__builtin_arm_ldrex` and `__builtin_arm_strex` for data sizes not\nsupported by the target architecture version. However, `arm_acle.h`\nunconditionally uses those builtins with a 32-bit data size. So now\nincluding that header will cause a build failure on Armv6-M, or historic\narchitectures like Armv5.\n\nTo fix it, `arm_acle.h` now queries the compiler-defined\n`__ARM_FEATURE_LDREX` macro (also fixed recently in commit\n34f59d79209268e so that it matches the target architecture). If 32-bit\nLDREX isn\u0027t available it will fall back to the older SWP instruction, or\nfailing that (on Armv6-M), a libcall.\n\nWhile I was modifying the header anyway, I also renamed the local\nvariable `v` inside `__swp` so that it starts with `__`, avoiding any\nrisk of user code having #defined `v`.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5cfa3d023a7d5f898ef5b118343384a058518d1e",
      "old_mode": 33188,
      "old_path": "clang/lib/Headers/arm_acle.h",
      "new_id": "fcc2075121b4446be0f74beb93b0061c124964ed",
      "new_mode": 33188,
      "new_path": "clang/lib/Headers/arm_acle.h"
    },
    {
      "type": "modify",
      "old_id": "74de8246d7de6ec6748615b404229fd8b792f8a3",
      "old_mode": 33188,
      "old_path": "clang/test/CodeGen/arm_acle.c",
      "new_id": "0f539cba5c758818acdd3f9876cc1f0f6285d3f8",
      "new_mode": 33188,
      "new_path": "clang/test/CodeGen/arm_acle.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "15fb49d06e631a01d31eeb160a91450ec8956710",
      "new_mode": 33188,
      "new_path": "clang/test/CodeGen/arm_acle_swp.c"
    }
  ]
}
