)]}'
{
  "commit": "5c5973cf5f021db8fd75e9667e63881ccd169320",
  "tree": "688b81986793bf59e4830051b5358f6a82c8ce2b",
  "parents": [
    "cab391e2c64d68becf3573c4228b195bd26507d9"
  ],
  "author": {
    "name": "Jacek Caban",
    "email": "jacek@codeweavers.com",
    "time": "Sat Feb 15 11:47:33 2025 +0100"
  },
  "committer": {
    "name": "Jacek Caban",
    "email": "jacek@codeweavers.com",
    "time": "Tue Mar 11 17:42:53 2025 +0100"
  },
  "message": "fenv: Use MSVC-compatible ABI for fenv.h functions.\n\nSince the current mingw-w64 uses a different layout for fenv_t and constant\nvalues, this changes the ABI.\n\nBased on Wine code by Piotr Caban, Alexandre Julliard and Martin Storsjö, who\ngranted permission to use it under the mingw-w64 license.\n\nUnlike earlier versions, msvcr120 and UCRT implement fenv.h, but their\nrepresentation differs from what mingw-w64 has used so far. fenv_t has a\ntarget-independent layout and flags, requiring translation to and from\nmachine-specific flags. Generic helpers handle this conversion.\n\nOn Windows x86_64, these functions operate only on SSE registers, ignoring x87.\nSince mingw long doubles use x87 and some mingw-w64-crt math functions are\nimplemented in terms of x87, they would be unaffected by these calls. This\npatch does not follow that behavior; instead, it modifies x87 registers as well,\neffectively following the 32-bit x86 code path.\n\nAdditionally, in 32-bit versions older than msvcr71, functions like _control87,\n__control87_2, and _statusfp did not support SSE, even though they would\notherwise be useful as helpers. This patch provides variants that operate on\nboth SSE and x87 for x86 and x86_64 (though we could still consider a different\napproach for ARM targets).\n\nI left FE_*_ENV handling unchanged, but we could consider making them proper\npointers to structs filled with the appropriate values instead.\n\nThis patch also adds support for ARM64EC. The ARM64EC version currently ignores\nx87, as 80-bit long doubles are not supported anyway.\n\nSigned-off-by: Jacek Caban \u003cjacek@codeweavers.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "869f7063c0a472d8dfd06a61465d78b125946bea",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/Makefile.am",
      "new_id": "1e5a0d14b542dc84a7e04455c1986f0af84b74e3",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/Makefile.am"
    },
    {
      "type": "modify",
      "old_id": "b3f1186e1d83908f6a61c1f0eac90d350aabb977",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/include/internal.h",
      "new_id": "84d52c9912a9ad7538ee0885d290284e8e5e04bd",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/include/internal.h"
    },
    {
      "type": "modify",
      "old_id": "a5ab0f09596afa859e1457ebf52c69fa3b650d6c",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/misc/feclearexcept.c",
      "new_id": "5fa811fbe92d5228f7f86ebb0c227b68a6dec089",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/misc/feclearexcept.c"
    },
    {
      "type": "modify",
      "old_id": "e17fd491c7864442074c780f82f7b0197783f2b4",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/misc/fegetenv.c",
      "new_id": "c1169cda7c96889e3dec92c158c7fa2f85ccb506",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/misc/fegetenv.c"
    },
    {
      "type": "modify",
      "old_id": "b50ca6fc1fb522018e2925f80a5ba28d4281bbe6",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/misc/fegetexceptflag.c",
      "new_id": "cc9bdde4b761562e4d422c0fa114a425eadf5071",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/misc/fegetexceptflag.c"
    },
    {
      "type": "modify",
      "old_id": "d2fdb77252cf66235381e257f983d63ff4c5f2a5",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/misc/fegetround.c",
      "new_id": "22d392ef91212bb63a49d8fc9ea4de93a78e1b7b",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/misc/fegetround.c"
    },
    {
      "type": "modify",
      "old_id": "8736faadf05b9c2505f3a5e851f2ad8aeb708d1d",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/misc/feholdexcept.c",
      "new_id": "8048430b7e84d8844f26bd03cf003ffcfa4f3eef",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/misc/feholdexcept.c"
    },
    {
      "type": "modify",
      "old_id": "8ec36f732a8b8b6c0190a62ad6859a64264e32d3",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/misc/feraiseexcept.c",
      "new_id": "041b8a772c73ceaaf680efa943fef4f71995ef6c",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/misc/feraiseexcept.c"
    },
    {
      "type": "modify",
      "old_id": "76325ce377ca7dc431986230dc040dbbbb21db0e",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/misc/fesetenv.c",
      "new_id": "ac0dffe4678ddb7b0f3244f2ca1a1e967755a563",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/misc/fesetenv.c"
    },
    {
      "type": "modify",
      "old_id": "3e6012c76cdab5baedfae0a7a43aec35b7c4e59a",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/misc/fesetexceptflag.c",
      "new_id": "9faedbb535aa58166e428f421918973101fc10d3",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/misc/fesetexceptflag.c"
    },
    {
      "type": "modify",
      "old_id": "e51f46cd7d415517f10972343cee1053e36b8b55",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/misc/fesetround.c",
      "new_id": "9bf7c3599813f6622f9513f0b0a31fa6f99036b0",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/misc/fesetround.c"
    },
    {
      "type": "modify",
      "old_id": "04e75970fca8f5d7a6d8ba13b93919b957bf471b",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/misc/fetestexcept.c",
      "new_id": "4c9abfb5aaade24ad501940d9a0d876c695803ba",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/misc/fetestexcept.c"
    },
    {
      "type": "modify",
      "old_id": "aea95902bb2c94391ef03347bc76d610205cafd5",
      "old_mode": 33188,
      "old_path": "mingw-w64-crt/misc/feupdateenv.c",
      "new_id": "8774d7402b2e8343f0b910bf6656c366f0417aae",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/misc/feupdateenv.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c7f553a4dd8727f18933da038e14659a1b9d9dba",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/misc/mingw_controlfp.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "14fda6e248814b94547042e6ee4af3fc63487edc",
      "new_mode": 33188,
      "new_path": "mingw-w64-crt/misc/mingw_setfp.c"
    },
    {
      "type": "modify",
      "old_id": "871b7a831a072340e77f2d1bfd33f0503713c39a",
      "old_mode": 33188,
      "old_path": "mingw-w64-headers/crt/fenv.h",
      "new_id": "d5161757d60977349d2e62d9e3639f009b02b1d0",
      "new_mode": 33188,
      "new_path": "mingw-w64-headers/crt/fenv.h"
    }
  ]
}
