)]}'
{
  "commit": "0748d2c83fc0440f101fe01cc3dfc97c8e11c3b2",
  "tree": "bb702c0a9d8f48d5c44885a8c36d277ff5c4f565",
  "parents": [
    "8a1346f379a15dc8b79e50656dc5d8728336231c"
  ],
  "author": {
    "name": "Luke Zhuang",
    "email": "luke.zhuang@linux.alibaba.com",
    "time": "Thu Jun 25 13:45:16 2026 +0800"
  },
  "committer": {
    "name": "Kito Cheng",
    "email": "kito.cheng@sifive.com",
    "time": "Wed Jul 15 17:29:14 2026 +0800"
  },
  "message": "RISC-V: Declare TLSDESC clobbers for vector registers and CSRs per psABI\n\nPer the RISC-V psABI, the TLSDESC resolver clobbers a0 and t0 in the\nbase case.  With the new psABI update\n(https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/496),\nwhen the V extension is enabled, it additionally clobbers all vector\nregisters and vector CSRs.\n\nThis patch updates the clobbering of tlsdesc define_insn: clobbering\nnot only a0 and t0, but also all V-regs (using 4 x LMUL8 reg\ngroups covering all 32 physical V-regs), and 4 vector CSRs\n(vl/vtype/vxrm/vxstat).\n\nThree new tests are added covering GPR, vector register, and vector\nCSR clobber behavior.\n\ngcc/ChangeLog:\n\n\t* config/riscv/riscv.md (VXSAT_REGNUM): New constant.\n\t(@tlsdesc\u003cmode\u003e): update clobbering.\n\ngcc/testsuite/ChangeLog:\n\n\t* gcc.target/riscv/tlsdesc_clobber.c: New test.\n\t* gcc.target/riscv/tlsdesc_clobber_v.c: New test.\n\t* gcc.target/riscv/tlsdesc_clobber_v_csr.c: New test.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f10a08460acfb3dc976c96348e0ac70c981324c3",
      "old_mode": 33188,
      "old_path": "gcc/config/riscv/riscv.md",
      "new_id": "c64e4ff3c77b9fdd80032a3a5cc28a9ca7471329",
      "new_mode": 33188,
      "new_path": "gcc/config/riscv/riscv.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6a004d6820fd2095db5501bd06b309e7f9f35bd8",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gcc.target/riscv/tlsdesc_clobber.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a5fb350f76e72ff1d72e836943fdd83a5d899394",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gcc.target/riscv/tlsdesc_clobber_v.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ffb9c9a61a47c1d582f8661e3260caa406cb00a9",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gcc.target/riscv/tlsdesc_clobber_v_csr.c"
    }
  ]
}
