)]}'
{
  "commit": "09a3da82125e07da504136841d577f103aa4ea13",
  "tree": "d384009ac1cf8d61e5388d8c627e98560a49d9d3",
  "parents": [
    "3e4ced9de1f1c6444eae44c1fed493742c345bc6"
  ],
  "author": {
    "name": "Martin Uecker",
    "email": "uecker@tugraz.at",
    "time": "Sun Jul 27 17:58:14 2025 +0200"
  },
  "committer": {
    "name": "Martin Uecker",
    "email": "uecker@gcc.gnu.org",
    "time": "Sat Aug 02 09:06:49 2025 +0200"
  },
  "message": "c: rewrite implementation of `arg spec\u0027 attribute\n\nRewrite the implementation of the `arg spec\u0027 attribute to pass the the\noriginal type of an array parameter instead of passing a string description\nand a list of bounds.  The string and list are then created\nfrom this type during the integration of the information of `arg spec\u0027\ninto the access attribute because it still needed later for various\nwarnings.  This change makes the implementation simpler and more robust\nas the declarator is not processed and information that is already encoded\nin the type is not duplicated.  A similar change to the access attribute\ncould then completely remove the string processing.  With this change, the\noriginal type is now available and can be used for other warnings or for\n_Countof.  The new implementation tries to be faithful to the original,\nbut this is not entirely true as it fixes a bug in the old implementation.\n\ngcc/c-family/ChangeLog:\n\t* c-attribs.cc (handle_argspec_attribute): Update.\n\t(build_arg_spec): New function.\n\t(build_attr_access_from_parms): Rewrite `arg spec\u0027 handling.\n\ngcc/c/ChangeLog:\n\t* c-decl.cc (get_parm_array_spec): Remove.\n\t(push_parm_decl): Do not add `arg spec` attribute.\n\t(build_arg_spec_attribute): New function.\n\t(grokdeklarator): Add `arg spec` attribute.\n\ngcc/testsuite/ChangeLog:\n\t* gcc.dg/Warray-parameter-11.c: Change Warray-parameter to\n\t-Wvla-parameter as these are VLAs.\n\t* gcc.dg/Warray-parameter.c: Remove xfail.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1f4a0df12051edeb4a4c939dba532d67d624c8fd",
      "old_mode": 33188,
      "old_path": "gcc/c-family/c-attribs.cc",
      "new_id": "a0d832b5e056759c91c9cb3991aab04efdf80947",
      "new_mode": 33188,
      "new_path": "gcc/c-family/c-attribs.cc"
    },
    {
      "type": "modify",
      "old_id": "4bef43864a1f52ddaab3297d94079ed27c7d8f8d",
      "old_mode": 33188,
      "old_path": "gcc/c/c-decl.cc",
      "new_id": "7850365f35c600ee48a3fd844986e2b530e7ded0",
      "new_mode": 33188,
      "new_path": "gcc/c/c-decl.cc"
    },
    {
      "type": "modify",
      "old_id": "8ca1b55bd28c8cf8ab7ab480c6479556cb4226ed",
      "old_mode": 33188,
      "old_path": "gcc/testsuite/gcc.dg/Warray-parameter-11.c",
      "new_id": "e05835c902e71fde8b863a0df53746ca26203b6d",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gcc.dg/Warray-parameter-11.c"
    },
    {
      "type": "modify",
      "old_id": "6c5195a31be96323870cd6e004ace9f2c0e677f4",
      "old_mode": 33188,
      "old_path": "gcc/testsuite/gcc.dg/Warray-parameter.c",
      "new_id": "31879a869fcf8d0aff87a76465b18a928fd1a40a",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gcc.dg/Warray-parameter.c"
    }
  ]
}
