)]}'
{
  "commit": "16e8d1479f60ea22ba604ac4217d5745c7c80b98",
  "tree": "73643d7c839b853e8eb0fb2967b7841b6315e838",
  "parents": [
    "0d41077bba75597ec50dc10b7d1c46e1b018af9d"
  ],
  "author": {
    "name": "Nathaniel Shead",
    "email": "nathanieloshead@gmail.com",
    "time": "Thu Jul 31 08:56:09 2025 +1000"
  },
  "committer": {
    "name": "Nathaniel Shead",
    "email": "nathanieloshead@gmail.com",
    "time": "Fri Aug 01 12:34:00 2025 +1000"
  },
  "message": "c++/modules: Merge PARM_DECL properties from function definitions [PR121238]\n\nWhen we merge a function definition, if there already exists a forward\ndeclaration in the importing TU we use the PARM_DECLs belonging to that\ndecl.  This usually works fine, except as noted in the linked PR there\nare some flags (such as TREE_ADDRESSABLE) that only get set on a\nPARM_DECL once a definition is provided.\n\nThis patch fixes the wrong-code issues by propagating any properties on\nPARM_DECLs I could find that may affect codegen.\n\n\tPR c++/121238\n\ngcc/cp/ChangeLog:\n\n\t* module.cc (trees_in::fn_parms_fini): Merge properties for\n\tdefinitions.\n\ngcc/testsuite/ChangeLog:\n\n\t* g++.dg/modules/merge-19.h: New test.\n\t* g++.dg/modules/merge-19_a.H: New test.\n\t* g++.dg/modules/merge-19_b.C: New test.\n\nSigned-off-by: Nathaniel Shead \u003cnathanieloshead@gmail.com\u003e\nReviewed-by: Jason Merrill \u003cjason@redhat.com\u003e\nReviewed-by: Patrick Palka \u003cppalka@redhat.com\u003e\n(cherry picked from commit 70136bdc76ae1774162ccbeeedd33aa531950e68)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "46d3a3fc14e4449f5b7edbc896cc9be0dae307b2",
      "old_mode": 33188,
      "old_path": "gcc/cp/module.cc",
      "new_id": "0aa2992cf5b7c7e58bee3d09af0bbff0d775543b",
      "new_mode": 33188,
      "new_path": "gcc/cp/module.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c3faadce07ad62da015a1e9351350197d2055244",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/g++.dg/modules/merge-19.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "149a447f26605a98c8bf95525cf6a1ddf0d472fe",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/g++.dg/modules/merge-19_a.H"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "345e7fe13421497381b2981e3b833bc9f2e55529",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/g++.dg/modules/merge-19_b.C"
    }
  ]
}
