)]}'
{
  "commit": "00a0e7d2375850a0256c392005e10c7d28aeac97",
  "tree": "5e5238137745e61d57119f5a445c38e87ac55e66",
  "parents": [
    "5900e859fbd0ca39d81a275bcc7c96814c0606e1"
  ],
  "author": {
    "name": "Kyrylo Tkachov",
    "email": "ktkachov@nvidia.com",
    "time": "Thu Aug 20 08:47:01 2026 +0200"
  },
  "committer": {
    "name": "Kyrylo Tkachov",
    "email": "ktkachov@nvidia.com",
    "time": "Fri Aug 21 12:55:40 2026 +0200"
  },
  "message": "tree: make TYPE_OVERFLOW_SANITIZED accept vector types\n\nUBSan instruments signed integral vector arithmetic.  However,\nTYPE_OVERFLOW_SANITIZED only accepts scalar integral types.  Folding can use\nthe false result to remove a vector operation before UBSan instruments it.\nFor example:\n\n  typedef int v4si __attribute__ ((vector_size (16)));\n\n  v4si f (v4si x) { return -(-x); }\n\nBoth negations can overflow.  The scalar-only predicate lets fold-const reduce\nthe function to x and remove both diagnostics.\n\naarch64 -O2 -fsanitize\u003dsigned-integer-overflow\n        -fsanitize-trap\u003dsigned-integer-overflow before:\n\n  f:\n          ret\n\nAfter:\n\n  f:\n          fmov    w0, s0\n          negs    w0, w0\n          bvs     .L27\n          ...\n          neg     v31.4s, v0.4s\n          fmov    w0, s31\n          negs    w0, w0\n          bvs     .L27\n          ...\n          ret\n  .L27:\n          brk     #1000\n\nUse ANY_INTEGRAL_TYPE_P so the predicate also accepts integral vector types.\nThe test checks that both vector negations remain for UBSan instrumentation.\n\nBootstrapped and tested on aarch64-none-linux-gnu.\nTested on x86_64-pc-linux-gnu.\n\ngcc/ChangeLog:\n\n\tPR sanitizer/88109\n\t* tree.h (TYPE_OVERFLOW_SANITIZED): Use ANY_INTEGRAL_TYPE_P.\n\ngcc/testsuite/ChangeLog:\n\n\tPR sanitizer/88109\n\t* c-c++-common/ubsan/overflow-vec-3.c: New test.\n\nSigned-off-by: Kyrylo Tkachov \u003cktkachov@nvidia.com\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "56b00e81a76179381d194422039cbe013c563953",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/c-c++-common/ubsan/overflow-vec-3.c"
    },
    {
      "type": "modify",
      "old_id": "bc6a304631dd12edb8129b6564c20f00774f7aba",
      "old_mode": 33188,
      "old_path": "gcc/tree.h",
      "new_id": "3fb643ea0fb48fa00a4c4918c30580a08d468e70",
      "new_mode": 33188,
      "new_path": "gcc/tree.h"
    }
  ]
}
