)]}'
{
  "commit": "a4d6fe54a7c3c967d88862e51660a5cdabc080bb",
  "tree": "702fa1aeb08090f00799ab1f6db34f51704aa7b0",
  "parents": [
    "dc84337f7b5bb2447e30f3364ebc863e9e04b8be"
  ],
  "author": {
    "name": "Jack Styles",
    "email": "jack.styles@arm.com",
    "time": "Tue Oct 22 08:18:09 2024 +0100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Oct 22 08:18:09 2024 +0100"
  },
  "message": "Reland \"[llvm][ARM] Add Addend Checks for MOVT and MOVW instructions. (PR #111970)\" (#112877)\n\n**Change relanded after feedback on failures and improvements to the\r\ncheck of the addend. Original PR #111970**\r\nChanges from original patch:\r\n- The value that is being checked has changed, it is now correctly\r\nchecking any Addend for the instruction, rather than the Value. The\r\naddend is kept within the Target data structure from my investigation.\r\n- Removed changes to the following tests due to the original behaviour\r\nbeing correct, and my original patch causing unexpected errors\r\n    - llvm/test/MC/ARM/Windows/mov32t-range.s\r\n    - llvm/test/MC/MachO/ARM/thumb2-movw-fixup.s\r\n\r\nAs per the ARM ABI, the MOVT and MOVW instructions should have addends\r\nthat fall within a 16bit signed range. LLVM does not check this so it is\r\npossible to use addends that are beyond the accepted range. These\r\naddends are silently truncated.\r\n\r\nA new check is added to ensure the addend falls within the expected\r\nrange, rejecting an addend that falls outside with an error.\r\n\r\nInformation relating to the ABI requirements can be found here:\r\nhttps://github.com/ARM-software/abi-aa/blob/main/aaelf32/aaelf32.rst#addends-and-pc-bias-compensation",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e5853789c78b633621cb34b335ba389b42aa4d1c",
      "old_mode": 33188,
      "old_path": "llvm/docs/ReleaseNotes.md",
      "new_id": "0c4cd437dac0b44f15e987a0126effbca18603e3",
      "new_mode": 33188,
      "new_path": "llvm/docs/ReleaseNotes.md"
    },
    {
      "type": "modify",
      "old_id": "1223210a76f6e33d9216aa5e514a15395596bc94",
      "old_mode": 33188,
      "old_path": "llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp",
      "new_id": "1f07e646e43885a45ab830f69625fb1d83943e6f",
      "new_mode": 33188,
      "new_path": "llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2961b9bfcb64d25ff01cdeea2066651a4f46f136",
      "new_mode": 33188,
      "new_path": "llvm/test/MC/ARM/arm-movt-movw-range-fail.s"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "41f19565a46c4a945db4d2c50d08652ccd357de7",
      "new_mode": 33188,
      "new_path": "llvm/test/MC/ARM/arm-movt-movw-range-pass.s"
    },
    {
      "type": "modify",
      "old_id": "6f067cd86dc15d6b04998df11d19451a987a4a53",
      "old_mode": 33188,
      "old_path": "llvm/test/MC/ARM/macho-movwt.s",
      "new_id": "b2c0587ca7fe59c2708c0938591453d6411118e0",
      "new_mode": 33188,
      "new_path": "llvm/test/MC/ARM/macho-movwt.s"
    }
  ]
}
