mbox series

[v12,0/4] c: Add __nelementsof__ operator

Message ID cover.1725115143.git.alx@kernel.org
Headers show
Series c: Add __nelementsof__ operator | expand

Message

Alejandro Colomar Aug. 31, 2024, 2:56 p.m. UTC
Hi!

v12 changes:

-  Fix typo in changelog entry.

For ISO C2y, I'm proposing either nelementsof() or a contracted version
of that name.  However, since in GCC we want an uglified name that
already takes four characters for the __*__, I think this long name
makes sense.  See also:
<https://inbox.sourceware.org/gcc/ewksn7n5blrzhvy565ztxnt2pagxy4rdhuq2i4k6beqsimoqgw@74wy7erikpwt/1.2-elementsof.pdf>

The WG14 discussion seems to have settled, and while the exact name
isn't yet clear, there seems to be rough consensus on something derived
from "number of elements of" (with some votes for "lenght", but not so
many), and the rest of the properties of the operator don't seem to be
questioned.

Martin, Joseph, can you please review and merge?  Thanks!

Have a lovely day!
Alex

Alejandro Colomar (4):
  contrib/: Add support for Cc: and Link: tags
  gcc/: Rename array_type_nelts() => array_type_nelts_minus_one()
  Merge definitions of array_type_nelts_top()
  c: Add __nelementsof__ operator

 contrib/gcc-changelog/git_commit.py        |   5 +-
 gcc/c-family/c-common.cc                   |  26 ++++
 gcc/c-family/c-common.def                  |   3 +
 gcc/c-family/c-common.h                    |   2 +
 gcc/c/c-decl.cc                            |  32 +++--
 gcc/c/c-fold.cc                            |   7 +-
 gcc/c/c-parser.cc                          |  62 +++++++--
 gcc/c/c-tree.h                             |   4 +
 gcc/c/c-typeck.cc                          | 118 +++++++++++++++-
 gcc/config/aarch64/aarch64.cc              |   2 +-
 gcc/config/i386/i386.cc                    |   2 +-
 gcc/cp/cp-tree.h                           |   1 -
 gcc/cp/decl.cc                             |   2 +-
 gcc/cp/init.cc                             |   8 +-
 gcc/cp/lambda.cc                           |   3 +-
 gcc/cp/operators.def                       |   1 +
 gcc/cp/tree.cc                             |  13 --
 gcc/doc/extend.texi                        |  30 +++++
 gcc/expr.cc                                |   8 +-
 gcc/fortran/trans-array.cc                 |   2 +-
 gcc/fortran/trans-openmp.cc                |   4 +-
 gcc/rust/backend/rust-tree.cc              |  13 --
 gcc/rust/backend/rust-tree.h               |   2 -
 gcc/target.h                               |   3 +
 gcc/testsuite/gcc.dg/nelementsof-compile.c | 115 ++++++++++++++++
 gcc/testsuite/gcc.dg/nelementsof-vla.c     |  46 +++++++
 gcc/testsuite/gcc.dg/nelementsof.c         | 150 +++++++++++++++++++++
 gcc/tree.cc                                |  17 ++-
 gcc/tree.h                                 |   3 +-
 29 files changed, 604 insertions(+), 80 deletions(-)
 create mode 100644 gcc/testsuite/gcc.dg/nelementsof-compile.c
 create mode 100644 gcc/testsuite/gcc.dg/nelementsof-vla.c
 create mode 100644 gcc/testsuite/gcc.dg/nelementsof.c

Range-diff against v11:
1:  2e851b8f8d2 ! 1:  d7fca49888a contrib/: Add support for Cc: and Link: tags
    @@ Commit message
     
         contrib/ChangeLog:
     
    -            * gcc-changelog/git_commit.py: (GitCommit):
    +            * gcc-changelog/git_commit.py (GitCommit):
                 Add support for 'Cc: ' and 'Link: ' tags.
     
         Cc: Jason Merrill <jason@redhat.com>
2:  d582d12adb8 = 2:  e65245ac294 gcc/: Rename array_type_nelts() => array_type_nelts_minus_one()
3:  34d14beb7da = 3:  03de2d67bb1 Merge definitions of array_type_nelts_top()
4:  49b8d51db4a = 4:  4373c48205d c: Add __nelementsof__ operator

base-commit: 9cbcf8d1de159e6113fafb5dc2feb4a7e467a302
prerequisite-patch-id: 3bb58e302e54b35e987452de2e3cb6da7f6917ce
prerequisite-patch-id: 090612df745c5ed878a75175606ce1deabf61cb0
prerequisite-patch-id: c3a80d94c326f7402bdf46049c434e809a9f376e
prerequisite-patch-id: 883007acf6a47f51128798dc952895854b40e1ff
prerequisite-patch-id: 93e211483ce2b939ce5e549de78e9ac4606bb114
prerequisite-patch-id: 008f55a1dc4b0a2551e4682b3319a3b0df86c72e
prerequisite-patch-id: be6ecc95f5fcf2fe9ac44263e6eae8a69068ee53
prerequisite-patch-id: e64a9e239738ff1af9753893372bb0fff907d8e6
prerequisite-patch-id: 22cc97d05ab08735db2341f5062c737f9cff9209
prerequisite-patch-id: 9e9756ca0458d4f6f162229e5ffe5923ffceb9d7
prerequisite-patch-id: 9d64d075010c059eaceb2fb2326d48f6a8798950
prerequisite-patch-id: be2e5a5deb6836b4715e4715cddd03018d2f3346
prerequisite-patch-id: a627d18e62fc98b7ccf11b31b0dc885a52994795
prerequisite-patch-id: 39aea8b15f043ab5e2804a6e127d2fe5108d814b
prerequisite-patch-id: 8cb26809cc4de24fe408e71a468fbc278241faab
prerequisite-patch-id: 1b0dd932c7637d953a7b7086aa5625287df6c79a
prerequisite-patch-id: 0bb1888a37e3537ba48e69ac378b7b3e41453949
prerequisite-patch-id: 79657c31c616c9bf477ec015a4ccb94f298193c0
prerequisite-patch-id: 2506a44e9d695cffa4c710176092c30392037103
prerequisite-patch-id: da4a114bc9bef4aafb816328f1674b5f85818753
prerequisite-patch-id: f4a32714d46e022356759a3fb305a8827ef565e9
prerequisite-patch-id: 08a6388b590804ab3f8da8c03d953e88428228e9
prerequisite-patch-id: 37fb8203174274fa9e3054ba0d83ff41dd9ba206
prerequisite-patch-id: 5a6559b661dd999abf5d5b0a40309636faa3504e
prerequisite-patch-id: a66c0ace262f24e19546e0669fecd0bbb6c4b4bf
prerequisite-patch-id: de6b8f05d41b61f29fc517883fafdf89aada7de9
prerequisite-patch-id: 4412c0ef6909608fc761b86cfb22722d862d61d0
prerequisite-patch-id: ad452759de17adaaf82c9f30e556fb477e3b1941
prerequisite-patch-id: 7b8615c4ad8e6c825ee192c8225e7b8f673aaeb4
prerequisite-patch-id: 7f806ab2c8bac5b2a79fad8eef55c4190ec33d44
prerequisite-patch-id: 84d3e86a4b573228dab7d37c3d89845ec1989723
prerequisite-patch-id: 293a69cf606ea42badcc678f43b53f2e47aded19
prerequisite-patch-id: 1a871a86b6c1b147ed731970f999b5d102444d1d
prerequisite-patch-id: 7798a8ca79c1f13268e3762d47861ff94d8eba02
prerequisite-patch-id: ea12050f12ad6e1278b695f5fe345ca9bc842b1f
prerequisite-patch-id: 775ec83e6019784675e3412125ae6215b4bf045d
prerequisite-patch-id: 8cc5a6f94523c8120086dcb2217ba8168b045a3e
prerequisite-patch-id: ee9fa7eb9352555ff989551e0af040359671f3d7
prerequisite-patch-id: 02737f65218d4b0c2766cfcf8c0fcde24ca93ac2
prerequisite-patch-id: 4649eac88f8eb70f79e7777b7cebff4460d8cfc7
prerequisite-patch-id: 6cba96eb4bee2e8b3b47e0bf6b21ec9fa8639480
prerequisite-patch-id: 67691213e43b5776c999e8c0927df69be8689e14
prerequisite-patch-id: c92d8f4dab324c8f42605d626035999cd990a18e
prerequisite-patch-id: f0a10e37287f97e915eb245d6394ad8e1115905a
prerequisite-patch-id: f67343a2b854a5f51d75200d56715b2cd10ddc9c
prerequisite-patch-id: 0d42c83260a2a02de43ad5066f76b4483703f155
prerequisite-patch-id: 71fc9c326b88271512ee65320dcb3b3454326472
prerequisite-patch-id: 5770267c01d4e5b5d0187445d31ee87b662fa61d
prerequisite-patch-id: 999d706f78ac4f85adbfad63adc3df03615ce716
prerequisite-patch-id: a3a7f88920dcaec397cdce89680dd341da6b7d50
prerequisite-patch-id: 74495be2707634e339b90ed5ad3a4c375f6b9ec2
prerequisite-patch-id: 7be19bb7867585445b6119f6357b69f5f8baa5b8
prerequisite-patch-id: 03efabd23ba77ba8141aa0a8f19b04f0fa6c97f1
prerequisite-patch-id: 04a4ddcad10e249f4e8cd96ade03c16997e8f83f
prerequisite-patch-id: b0b8243418ae865a61a5f92d1da80fdbed6d23d4
prerequisite-patch-id: 349842ef44ddca54066bdbb26d634ac24e076710
prerequisite-patch-id: d15d4d8c4c0b6843118774fee0c8231e948779cf
prerequisite-patch-id: eff8d7df797afdd2ba6b14c1d8ec9dbdc58b5c3d
prerequisite-patch-id: 18ae20d67e1f01478d4b01981488e0a3d6864ad2
prerequisite-patch-id: b6c162640de66eeaf8f2b470801dc3cec9d1141e
prerequisite-patch-id: fccd6815aa703114b7ea3e61b3971621316a8706
prerequisite-patch-id: ec894a0480c8c523b9f895eea7b809b68998bbfe
prerequisite-patch-id: a408ede8ac2c69f821dd06cdad368652784e975f
prerequisite-patch-id: 31f81b5fce5e577e66c09784d24727fadce0b71b
prerequisite-patch-id: 0fa06efe4a2349a00a6e1d7ed3fcb7ededef127e
prerequisite-patch-id: e7dba9a68bc0d4481b2cebf029595bdb9f47271f
prerequisite-patch-id: 4ac7ef554fdd4c2fcceb9f5bd83e9203adaddaf3
prerequisite-patch-id: ec0a3bc81af005d80235b38f44c227b0a1c248d2
prerequisite-patch-id: 7083aa4a6a21ae34a8d6457791068ba419c1187d
prerequisite-patch-id: 7b3ceb60e52271be1655ab07595e1000d8734ae8
prerequisite-patch-id: 069dd47701f5607db952e7410b66bfc4a77b907c
prerequisite-patch-id: 6de803a1b4d8dba8b403205327bff91f239a39a8
prerequisite-patch-id: 8dfcdb9d5cdf69c54766a59a8f194af09c0840b8
prerequisite-patch-id: f7834a2848f562a130f3d6f28a6b849723dbe18f
prerequisite-patch-id: 2f283e2b6ff758a2b1f0f4f491c962499be68f91
prerequisite-patch-id: 7ca906fcc364ab07d6ab9b48fe8162e8006499b9
prerequisite-patch-id: 0ef05db7ab79653ae096f50497946214bc5084b9
prerequisite-patch-id: 1d60704d316f4b0f66d5c7e4bf17b025cf99c617
prerequisite-patch-id: ed3314a4690d9c15bbcfee441599a58e37215877
prerequisite-patch-id: 34ec93f88bed41db1608e214800f87fdc5a7f9f9
prerequisite-patch-id: aca1f8cc97d88784936517c7e8050c457c77c9af
prerequisite-patch-id: b499a1bfa95368ee03daa8c7d45b3ae9c1206871
prerequisite-patch-id: 5f1cb1245044b3ad4169500916c8b9459711416e
prerequisite-patch-id: 88e3e2e5947fbfa907213daa9ceef1651976d72f
prerequisite-patch-id: b4d4f67cd84b9ccb4c4eb48d8e7e20fc70b702ec
prerequisite-patch-id: b807936c32d4a4539a29ba56b637a3f4733713e3
prerequisite-patch-id: 72b95ab107eb6ae60f6517410ecce24a3308fa6e
prerequisite-patch-id: 007b9853bbb41eb2d2b85fd67c1b39d58c2dcc4d
prerequisite-patch-id: e6e05315ec9827b069836b4f394099272c4b3998
prerequisite-patch-id: cd63bd21f25dfb458c751306f1ba8fba6db43a35
prerequisite-patch-id: 790fe51546bed957d4094668086a87009ea6bc3e
prerequisite-patch-id: c55ca764e1bde1857cab3d1c7a569172e3a60dd0
prerequisite-patch-id: 4574efb15f6e60ba84b21718381c19faa2d06e6a
prerequisite-patch-id: 4026283a30594ccf4c5c297a45b817d7c95dcc81
prerequisite-patch-id: 2f6425ce98f57c1833fcfc1cb963a4b00550daaa
prerequisite-patch-id: 671d4f6b289715eecf11df3b8e94e566b4e3f358
prerequisite-patch-id: 59d20ef094471e06900a58216a35fb466e6350a6
prerequisite-patch-id: 8f6ac7d59fcdd44f015dce5b41ca7e20ed551b17
prerequisite-patch-id: b3f0435a6a54a62ae2b895ede265f657b2826929
prerequisite-patch-id: 06784b4d67904e2a8eab05f652d985750aeae26a
prerequisite-patch-id: 48e9916f08c8502323eadf9595d11a3ad7cf1b0c
prerequisite-patch-id: 9c5b9353f575b545d6ba706aa33a4200dc163e1e
prerequisite-patch-id: efadc065d2991129a9fa4380ed782b9dfac9807f
prerequisite-patch-id: 5a3e46fd6d5f1324a307bd01656993131644e59d
prerequisite-patch-id: 40be26b80ff47971946da8ccca6574333b4ac511
prerequisite-patch-id: 249d8bc2c8226ea94c27e2d2db8dfda056b8221d
prerequisite-patch-id: 64c7dc66a01b47fdc1d178e4264dbfb17f65cb48
prerequisite-patch-id: 7651dda34bd7be0a7c0c58b813abbfe4e75057a5
prerequisite-patch-id: 5b677afd301ba2d8385e73d6f55ef259e69cdd06
prerequisite-patch-id: f41124cb1f7db66cf578ee87b768438dcf66227d
prerequisite-patch-id: 6a173ab5f27750a6f4a2f8adebff537f95225d38
prerequisite-patch-id: c42d87f4f18b34c20121d7a7ee22564b8f2a9c3b
prerequisite-patch-id: e4c4b6c5c635e67f641c1bb4902bb5ec1a0eb1be
prerequisite-patch-id: 197202a25498a915f35f4417efb38e8844cac309
prerequisite-patch-id: 1e23186a890510f123ecd202f8a50d2094201277
prerequisite-patch-id: ba3e7e54dfbd8370ff50d1a5e85ac06d803fe68d
prerequisite-patch-id: edcca1af6061de5006b58ff7cd52a039aec88192
prerequisite-patch-id: 50ee0f2c714091aeab155cd40a94214fd1844463
prerequisite-patch-id: 31adcc5191ebc8b2ea26ee1e4b7de78a3d8e0f48
prerequisite-patch-id: dafdb698d23a185ee4adfbf9cbaf43ea31661bc1
prerequisite-patch-id: 683d340258d86d0774c772cc5d4bc4dfc6c214ac
prerequisite-patch-id: 0052a313ada5ebbd0e24905f2b75974736dae59e
prerequisite-patch-id: 1cbdbf0cf8727d07cfb7251551bbb8f47ca4f9d8
prerequisite-patch-id: c059fdfb33923cc5d728f53136021e01cab5f316
prerequisite-patch-id: d8cd3ac99c209600a4686d85627fae2956864272
prerequisite-patch-id: 7bfa53abc0cd50a22a81782353e30f0503bf87b3
prerequisite-patch-id: a2837d8005f85e1764d2baf4c5269ac4c26d0e03
prerequisite-patch-id: c7c2ba071a328f24d36a7bc73d096f701ff049c4
prerequisite-patch-id: 49edd721efd5860bce7a6da39a3983c1729dfb09
prerequisite-patch-id: b41ba2264cf8d51fad69c0d60b23282fdcaa02ed
prerequisite-patch-id: ce1094369b939e5df1c9ff586ba6e77eadd6755b
prerequisite-patch-id: cc76aa21e68006e190b6c095a7eab1f71a350035
prerequisite-patch-id: 016dbed32a9d26e0daa7fe068846dc5bf0bab4b2
prerequisite-patch-id: ea3270295ff22f15ae5a5213ae7ef0fb24f3d90e
prerequisite-patch-id: 0d7ec035c0ac8ea612791940c47c720fd0fc0983
prerequisite-patch-id: 073689ebff4dc3ed400b7a6a09b2aa3222eb5eaf
prerequisite-patch-id: 3de9c5dcd90a94356e41cd6c3a6b3a3ebd6da40f
prerequisite-patch-id: 02173a8508f62560dfc0c873ed4f8ffd3b2da127
prerequisite-patch-id: 325c71a3064a69ed233417bb0dd06ac5afe22ecd
prerequisite-patch-id: fb5f0634575b9cd445be39af1b442f641f33669e
prerequisite-patch-id: 375ec357c82582464519ccd102ba9c9969b27ccd
prerequisite-patch-id: 96724bd515fee1e70896e427ca5443cf6c3bd1c6
prerequisite-patch-id: d11653d1691c233ceac344313e1facf239c075e6
prerequisite-patch-id: a0c4b6d4fa27a1f1738ccd7d2c1c5203f4acc10c
prerequisite-patch-id: bcf62e2802a1d35bbeb601750792f3043e18e02e
prerequisite-patch-id: b6027c3dd6b0d7a576397c3f7cead1cb2e32ab3d
prerequisite-patch-id: 2993826cfc8ecb4743d1104ce9062ce064dee436
prerequisite-patch-id: 2de773c80c1d53b349768f3a9c1dedd9473141e2
prerequisite-patch-id: dcd065f3bede4933cf1071ca0ff8f631af30537e
prerequisite-patch-id: e8f9cef7f9a80d21786bdbc63de84dad5bb0f11b
prerequisite-patch-id: adefc62a9de4bcbb15ddba73edcdb96740b8527f
prerequisite-patch-id: b8028f15bc6bcfc0053852516acd70129434ef64
prerequisite-patch-id: a9378612984ceace5d8fc99c192de3d07fad4b4c
prerequisite-patch-id: 3e64fd39d97c528b5901f648d7ab92c9b3dfebd1
prerequisite-patch-id: 6900b6fcf58f765fa3266432dc9e2eebcacfbb4f
prerequisite-patch-id: 0d796b1a9c84ad77fecacee5450ae4fe067e7748
prerequisite-patch-id: c8cd1e1f3efda1056dd2f393a43b97a675f8fc00
prerequisite-patch-id: a1e5e6ee3a85aa293485f42163c5e6fb8ed7ac6c
prerequisite-patch-id: 29865d865b97531dd5be3019e22adb1066bcd0a3
prerequisite-patch-id: f5e05f1932b2fd24d00c3a7e64a2589f9c62a4e7
prerequisite-patch-id: 9f875036c21954004d3533697f89c7b8f3f35673
prerequisite-patch-id: f0f917f79ebed24ee4cd3427393d6cc24b9f2617
prerequisite-patch-id: 949be1cb8e66006949d4654aa60cf11b990bea13
prerequisite-patch-id: a035355f8731aa2619cd876157cfd2a9321c4814
prerequisite-patch-id: d23b3af12de5f250b5aded06076390d855065d34
prerequisite-patch-id: b649f233ca196c43de136937fbcaf0a5b792a7c7
prerequisite-patch-id: 0b474fc99e8b05aee2f470e8166d715261b9eb11
prerequisite-patch-id: a8f595e6c8b9714bfc4d89a7e39d5be3a9665d87
prerequisite-patch-id: 362ec11aff3d8ddc90f8b1aeb31d0fde8785384b
prerequisite-patch-id: 3695552670237d21bbd21fef03105083754ed6d1
prerequisite-patch-id: 89f2689e530147ac5530197ff972bc44135a1fe5
prerequisite-patch-id: e4a07cbaee52cbe451bfb9938b6b2a8636cac2f0
prerequisite-patch-id: f8f8edb0e66d2612359021654361be7fd0a55b70
prerequisite-patch-id: 743f4e4444f9cac24e67abce2bda52d6a421d870
prerequisite-patch-id: 8f0d19793716d0c18759e4261ef18c6db21c7f66
prerequisite-patch-id: 016a97f4bb36008d268ed1142d4fe67263d18c5f
prerequisite-patch-id: c9b1ea941f12ec7c34d17a7a81b999cdc90a46bb
prerequisite-patch-id: 2e4f5844a1680c659f4fe9af3723f8c9e6171c98
prerequisite-patch-id: 9b218d7632794493bcc98298de79e9d881bc4de2
prerequisite-patch-id: bd18dcb6c060ae56cadb55ad248138918b4542fa
prerequisite-patch-id: 5f4f31b906f1a415721c42bb4f06e9a97e6d9826
prerequisite-patch-id: fd625a00389f10724c4df0c309f46588ff4db63e
prerequisite-patch-id: 6aa7f6e164a2fc200361fd96399ad1c10f0825e2
prerequisite-patch-id: de267e462ebf8b5fda3d3df92d84914f3d49b093
prerequisite-patch-id: 10e0c0ed7bb11a5e9d50b4210a67d56d0baa7ae7
prerequisite-patch-id: 881a354db3dcf42e71ff51e86a712fe24a82378f
prerequisite-patch-id: 471c157425528ec5fa2fe0371dfc9babeff74c57
prerequisite-patch-id: a7d752c724506c047c0c69fb568f9e3e421773b5
prerequisite-patch-id: e207260eff0bee9b47719902663721ac36371856
prerequisite-patch-id: c978ecf00ccf17014919ba6d22a634f1fa5378b8
prerequisite-patch-id: c30ea3d0e9179a8f91523e4775aa1d7697777031
prerequisite-patch-id: 9caf8f6dc88c899b90242124e9efccecf61e6580
prerequisite-patch-id: 8104c6e0f28b79353bb1fe3d6d5bd49b8a1d4656
prerequisite-patch-id: ad97388f77ab9d4cc88a369418deec6f796d9ac3
prerequisite-patch-id: 1f6acfacff835f1d7f922614262505c4acbcb067
prerequisite-patch-id: 95d5625e0f04636a4c3ec335c77f34a5fecaa952
prerequisite-patch-id: 82e613feb908a11046bdafc6e874bcd8c4f52200
prerequisite-patch-id: 5f7a850dcf2102e4ac82791ba95ed0c0bc695613
prerequisite-patch-id: 50d03e282b31737919a2b979d59c5c4c17107627
prerequisite-patch-id: 8b51bae8e714a0e5277f67ff9d1455fd2f4e36b7
prerequisite-patch-id: eee196eb6f44f53040e52305d9c48909eb3bf2c5
prerequisite-patch-id: 35494985bedf6015cb3a8c2c70f58099e9c44316
prerequisite-patch-id: c3c5c822735b385dd0e55260f514623bf3f9ff1a
prerequisite-patch-id: b21222f6f96276b46ff605bdd1d2a75c9af839ca
prerequisite-patch-id: b63e092548d498d642b6363eae9c98247f5300f9
prerequisite-patch-id: 99cf93d15a50ad94c049c736b375bbdb77cf0ef6
prerequisite-patch-id: e2d86b651e3ff2f70848f827b29cc804cead48b2
prerequisite-patch-id: 1ec76b0303530aaa120186fb249252cd3a1bd7ec
prerequisite-patch-id: 9a35b1041fb252654255045df37478c8eb15a501
prerequisite-patch-id: e7227e60ea90415b54c6fcd553ddece24dd402fc
prerequisite-patch-id: 2f45861307fafa6a5696098406e164e166f4d207
prerequisite-patch-id: ab037b78ccf8a9db312333f5e01e6fd2e54832ca
prerequisite-patch-id: 9c886d5ccd279d6f283fcd60a794e66c94fe782d
prerequisite-patch-id: fa5a4fc2f2d77e9ad000d7477f56b822efce457f
prerequisite-patch-id: a0699fc9eb0ee36f53bc937770887d6086d2a7b8
prerequisite-patch-id: b383634edd50afef4180be293861d1014491d86d
prerequisite-patch-id: 2f404a754f2e1048165df254e963e26f6789de7f
prerequisite-patch-id: 07d59a1d0796816d8421b5a236175b1568d1f63f
prerequisite-patch-id: 9f904d43a86cb4e55a2a00440dd042ec717c8eb8
prerequisite-patch-id: b30b252bdf0646403dbd132c7dc629188e4f6a4b
prerequisite-patch-id: 73e2691afad05a42cb6cb5a28894eb958516f39c
prerequisite-patch-id: ef0f8b6061c55ada19107f026164c8598ebc66bd
prerequisite-patch-id: da21009a2dbc3384309cfdc4c49e10b86de6e747
prerequisite-patch-id: 2ef5022df54288b85ef1c8fe4e7a02a03d4577ff
prerequisite-patch-id: 5193b8507248975783d1eb6bc911265e6b55988e
prerequisite-patch-id: 1aef895eb9c159d33d617d7b2475928f75a73303
prerequisite-patch-id: bf87652bd502aeaf671da92e243553fb9a94f5d5
prerequisite-patch-id: cf9856dfd70d154fab043ffd2ee89288d9d41827
prerequisite-patch-id: f9daf7a441685aa6d25225b6616e51be5fcfe772
prerequisite-patch-id: 0101aa9af501543384863fa8c090febd6939f80f
prerequisite-patch-id: ccf1ac224734562e2f4207847b8128cd3c8b9d31
prerequisite-patch-id: 589ae86ee30b01355ce220ab9fc89c5403d95076
prerequisite-patch-id: 6e809a44a0ef69883eb812f8a4b57eb52ad32f41
prerequisite-patch-id: 116d110f795045527d54f2897e1ac12bb2f59238
prerequisite-patch-id: f4e0f48a8ce61bc6c229a18bf41f4b3cdec3a9d0
prerequisite-patch-id: e78df0253e48cdf5f9e44c17a169fc9cccb82c7e
prerequisite-patch-id: 1e6951da0eba531f4b445996167fea1e7320e3ae
prerequisite-patch-id: b1903fb1a742dd33ebb635299c725e9fc2a4e9ae
prerequisite-patch-id: eb07c15789948b34c0b219ff05f61c530882845d
prerequisite-patch-id: 92c0ba647ef4b4b7e83297554f6fa7e31f3a8fb5
prerequisite-patch-id: f968b1250e573119cb65aab0b98c225d8a7c4d8a
prerequisite-patch-id: 5e6dee90fe5f7a891794b5ea6bed41b1157c2930
prerequisite-patch-id: 3b10245cae08595a6bcbdc82ff836becaf6d04d2
prerequisite-patch-id: d7f15f333560e8ccfe2ad073e99ca4ef502e15d1
prerequisite-patch-id: 4c95c2badbd5911a7405a64e0d84e3091526444d
prerequisite-patch-id: f839c9824865564c12cbb7064ff455f34dc039f7
prerequisite-patch-id: 071e2570569f005c75ed7d8bf112db80cca310e5
prerequisite-patch-id: 7ee42594ecf51591428ae7f13bfb8403affed8cb
prerequisite-patch-id: 4b2105c900cf8ed047a9c0d1866fb2bdb4f9a59e
prerequisite-patch-id: dd4697ba0013408e637223fadd027c9b34945060
prerequisite-patch-id: e0881345b919ec25525c626303ba5d5e160f97f2
prerequisite-patch-id: fc6865c7e1fb19530ac8e77090eaa0b179f70496
prerequisite-patch-id: e3b8081ed28b7f0d370548044237287f52179967
prerequisite-patch-id: b672da115531fc52a591c9e50ac4da9e8b09e144
prerequisite-patch-id: f2764b91aa819feb1879d007993bda7aeb7f5df6
prerequisite-patch-id: dfb13890022578746ce611a965c62c34905b1f18
prerequisite-patch-id: bef3730ba816c84cb056d12e30b91a8c1f4b6aac
prerequisite-patch-id: 265211a01667357c86ce905ee33e4adbb81887d9
prerequisite-patch-id: c02d2492949e079494b9552c397e689774fad639
prerequisite-patch-id: 0f4180d693806ae210396ec1512be8e1d45c9530
prerequisite-patch-id: 22b486e7286a8b1a8ef90d3f1f4a4d48e43fb25c
prerequisite-patch-id: 0020828bf1b65907c906fb9ebf24104a5e72c790
prerequisite-patch-id: 4afad41c227028a4c6c35d1c43b0ee7883852a1e
prerequisite-patch-id: 890e19d588eca2dacfb83475c19ac461c0d83058
prerequisite-patch-id: f35d03d5ed63be69d2dfec77d07b28d21c40dc9a
prerequisite-patch-id: 2bebc000037d37260152802423445d39bc463f8e
prerequisite-patch-id: ccbec53de5ad88beb7657680ae6aa167f3505fd6
prerequisite-patch-id: 3c588bad04050087679a1d4f5479efb0da2537bb
prerequisite-patch-id: 87d915c6c5495d2accc7864dc592f2f651012fca
prerequisite-patch-id: a327cf20636f57b5feb31928c49d6517f102a709
prerequisite-patch-id: 8106cf8afd07cf37f3ecd63b831f1a22fa99998a
prerequisite-patch-id: a4ff39b72413dc2d894d269629919ce5199eb0fd
prerequisite-patch-id: c0db74dd58a097e7130420bd294b0f3d200730be
prerequisite-patch-id: df5bd199584a63d1ca2af8ca5e9bc659baffb8ab
prerequisite-patch-id: 9f8d32c0a8df05688a4e6779d45538056d891a72
prerequisite-patch-id: 167566e1096e56d7189393aed3528b8047421a2b
prerequisite-patch-id: 5ade75da262706c05c72bc2e1095cdc137334928
prerequisite-patch-id: 725cd8d55b55117b8732240a36ef6dd57560b7aa
prerequisite-patch-id: 2283e8ab28c671cd97fdba344bad9fad3b740955
prerequisite-patch-id: d86fed5ed934d2622a0e640677483dbd5e493b50
prerequisite-patch-id: 5a523603c0cc2344952de69d65a1dd6c9c28b1b0
prerequisite-patch-id: 8276956515aab9f3e81a9b4d51f5d270fea82c8b
prerequisite-patch-id: 1c0b8c20b01944262081a7fac4905a24a1f51afd
prerequisite-patch-id: 90b6ed9e4633014209d3291157104fe2db6cc268
prerequisite-patch-id: b78d480e28a5684e5a04f9e2d1dc6c8d6b6115d8
prerequisite-patch-id: 85129a45f66a9afd1d6aeb78a266f2b33131effc
prerequisite-patch-id: 46c2c0f251c385f740ec0f021ddf71b214dcf188
prerequisite-patch-id: de94541c97cd5dfb8f02b4210557a29264c60f28
prerequisite-patch-id: cb4a135f378247e43ecb9c5c1ca421e778356cd3
prerequisite-patch-id: 6941030e002fe4dac24a7e431297837bcebd6637
prerequisite-patch-id: 16ed31acf9114e5bcdeab9ac6f8b3c1d460d40ab
prerequisite-patch-id: 5a24fb875f0c703d031c3dcfd40faf2072a691b1
prerequisite-patch-id: 278384975e9224209b9df58781cb0d57d33cce91
prerequisite-patch-id: 8b4be8616dd4f2e1b6189657017e81999e3379bf
prerequisite-patch-id: 99853a3b8283b9aae581ec9c7a4b30dd27a9075f
prerequisite-patch-id: a48c177e8a82248dfd6642c35da34019d765a4a8
prerequisite-patch-id: 6b4419d64c7d1e887578e30a73fc476aad5408a6
prerequisite-patch-id: 93b79b926b74052e9bbba631e0f30da89c1dd0ec
prerequisite-patch-id: 9fe442b02446f58ea358d748da5f5f82805bc7ef
prerequisite-patch-id: 26828312870404b6611ccd685b162aa082dfce57
prerequisite-patch-id: 6ce31c6bb1a2b79ca465dca7a1157d1bb379d51b
prerequisite-patch-id: e6b4e8bd8a45796125d4fdcc169f97f5a3fb8bf8
prerequisite-patch-id: 94637d65272a73ec3e2b19dc3595d864fdea4836
prerequisite-patch-id: dd5dfa3e4d58a7db1f158bcc0daec057c028ce00
prerequisite-patch-id: 2295114d438c62a2128620775fc0300b0b418ff9
prerequisite-patch-id: 080adcee4042fd9511680fb10beebcae24a4dc06
prerequisite-patch-id: 022f540464bfd6c2202cdeb5530502903d207417
prerequisite-patch-id: 5ffcb1ea5dafbfe47753ce4165afa1f99d46cc82
prerequisite-patch-id: c4dcb2f3f063115727c204d3e0b0ef7c7a66cda9
prerequisite-patch-id: 984a29d2480696456528847eb7365e5785613ab6
prerequisite-patch-id: fa4b35b9b0874bdf8057f88303e204ff3b6e0538
prerequisite-patch-id: 12dac397d93e001201a2b8fcbadbca24a91a1f5a
prerequisite-patch-id: 51112edb6d85135a1930262e7a63f8f2fad3b22d

Comments

Alejandro Colomar Oct. 2, 2024, 8:34 a.m. UTC | #1
Hi!

On Sat, Aug 31, 2024 at 04:56:28PM GMT, Alejandro Colomar wrote:
> Hi!
> 
> v12 changes:
> 
> -  Fix typo in changelog entry.
> 
> For ISO C2y, I'm proposing either nelementsof() or a contracted version
> of that name.  However, since in GCC we want an uglified name that
> already takes four characters for the __*__, I think this long name
> makes sense.  See also:
> <https://inbox.sourceware.org/gcc/ewksn7n5blrzhvy565ztxnt2pagxy4rdhuq2i4k6beqsimoqgw@74wy7erikpwt/1.2-elementsof.pdf>
> 
> The WG14 discussion seems to have settled, and while the exact name
> isn't yet clear, there seems to be rough consensus on something derived
> from "number of elements of" (with some votes for "lenght", but not so
> many), and the rest of the properties of the operator don't seem to be
> questioned.
> 
> Martin, Joseph, can you please review and merge?  Thanks!

WG14 (the C standard committee) has voted this feature yesterday.  A few
things to note:

-  The semantics are accepted exactly as implemented here.

-  There was divided consensus on the question "Should the name derive
   from 'number of elements' or 'count' (5 votes) or from something else
   including mainly length (8 votes) with some abstentions.

   After that poll, there was another to choose between 'length' or
   something else, and there was an overwhelming majority to prefer
   'length' over anything else.  However, that still leaves 'length' vs
   'number of elements'/'count' with only a small difference in votes,
   which I'm not entirely happy with.

I will resend this patch with only renaming the operator to lengthof.

Have a lovely day!
Alex

> 
> Have a lovely day!
> Alex
> 
> Alejandro Colomar (4):
>   contrib/: Add support for Cc: and Link: tags
>   gcc/: Rename array_type_nelts() => array_type_nelts_minus_one()
>   Merge definitions of array_type_nelts_top()
>   c: Add __nelementsof__ operator
> 
>  contrib/gcc-changelog/git_commit.py        |   5 +-
>  gcc/c-family/c-common.cc                   |  26 ++++
>  gcc/c-family/c-common.def                  |   3 +
>  gcc/c-family/c-common.h                    |   2 +
>  gcc/c/c-decl.cc                            |  32 +++--
>  gcc/c/c-fold.cc                            |   7 +-
>  gcc/c/c-parser.cc                          |  62 +++++++--
>  gcc/c/c-tree.h                             |   4 +
>  gcc/c/c-typeck.cc                          | 118 +++++++++++++++-
>  gcc/config/aarch64/aarch64.cc              |   2 +-
>  gcc/config/i386/i386.cc                    |   2 +-
>  gcc/cp/cp-tree.h                           |   1 -
>  gcc/cp/decl.cc                             |   2 +-
>  gcc/cp/init.cc                             |   8 +-
>  gcc/cp/lambda.cc                           |   3 +-
>  gcc/cp/operators.def                       |   1 +
>  gcc/cp/tree.cc                             |  13 --
>  gcc/doc/extend.texi                        |  30 +++++
>  gcc/expr.cc                                |   8 +-
>  gcc/fortran/trans-array.cc                 |   2 +-
>  gcc/fortran/trans-openmp.cc                |   4 +-
>  gcc/rust/backend/rust-tree.cc              |  13 --
>  gcc/rust/backend/rust-tree.h               |   2 -
>  gcc/target.h                               |   3 +
>  gcc/testsuite/gcc.dg/nelementsof-compile.c | 115 ++++++++++++++++
>  gcc/testsuite/gcc.dg/nelementsof-vla.c     |  46 +++++++
>  gcc/testsuite/gcc.dg/nelementsof.c         | 150 +++++++++++++++++++++
>  gcc/tree.cc                                |  17 ++-
>  gcc/tree.h                                 |   3 +-
>  29 files changed, 604 insertions(+), 80 deletions(-)
>  create mode 100644 gcc/testsuite/gcc.dg/nelementsof-compile.c
>  create mode 100644 gcc/testsuite/gcc.dg/nelementsof-vla.c
>  create mode 100644 gcc/testsuite/gcc.dg/nelementsof.c
> 
> Range-diff against v11:
> 1:  2e851b8f8d2 ! 1:  d7fca49888a contrib/: Add support for Cc: and Link: tags
>     @@ Commit message
>      
>          contrib/ChangeLog:
>      
>     -            * gcc-changelog/git_commit.py: (GitCommit):
>     +            * gcc-changelog/git_commit.py (GitCommit):
>                  Add support for 'Cc: ' and 'Link: ' tags.
>      
>          Cc: Jason Merrill <jason@redhat.com>
> 2:  d582d12adb8 = 2:  e65245ac294 gcc/: Rename array_type_nelts() => array_type_nelts_minus_one()
> 3:  34d14beb7da = 3:  03de2d67bb1 Merge definitions of array_type_nelts_top()
> 4:  49b8d51db4a = 4:  4373c48205d c: Add __nelementsof__ operator
> 
> base-commit: 9cbcf8d1de159e6113fafb5dc2feb4a7e467a302
> prerequisite-patch-id: 3bb58e302e54b35e987452de2e3cb6da7f6917ce
> prerequisite-patch-id: 090612df745c5ed878a75175606ce1deabf61cb0
> prerequisite-patch-id: c3a80d94c326f7402bdf46049c434e809a9f376e
> prerequisite-patch-id: 883007acf6a47f51128798dc952895854b40e1ff
> prerequisite-patch-id: 93e211483ce2b939ce5e549de78e9ac4606bb114
> prerequisite-patch-id: 008f55a1dc4b0a2551e4682b3319a3b0df86c72e
> prerequisite-patch-id: be6ecc95f5fcf2fe9ac44263e6eae8a69068ee53
> prerequisite-patch-id: e64a9e239738ff1af9753893372bb0fff907d8e6
> prerequisite-patch-id: 22cc97d05ab08735db2341f5062c737f9cff9209
> prerequisite-patch-id: 9e9756ca0458d4f6f162229e5ffe5923ffceb9d7
> prerequisite-patch-id: 9d64d075010c059eaceb2fb2326d48f6a8798950
> prerequisite-patch-id: be2e5a5deb6836b4715e4715cddd03018d2f3346
> prerequisite-patch-id: a627d18e62fc98b7ccf11b31b0dc885a52994795
> prerequisite-patch-id: 39aea8b15f043ab5e2804a6e127d2fe5108d814b
> prerequisite-patch-id: 8cb26809cc4de24fe408e71a468fbc278241faab
> prerequisite-patch-id: 1b0dd932c7637d953a7b7086aa5625287df6c79a
> prerequisite-patch-id: 0bb1888a37e3537ba48e69ac378b7b3e41453949
> prerequisite-patch-id: 79657c31c616c9bf477ec015a4ccb94f298193c0
> prerequisite-patch-id: 2506a44e9d695cffa4c710176092c30392037103
> prerequisite-patch-id: da4a114bc9bef4aafb816328f1674b5f85818753
> prerequisite-patch-id: f4a32714d46e022356759a3fb305a8827ef565e9
> prerequisite-patch-id: 08a6388b590804ab3f8da8c03d953e88428228e9
> prerequisite-patch-id: 37fb8203174274fa9e3054ba0d83ff41dd9ba206
> prerequisite-patch-id: 5a6559b661dd999abf5d5b0a40309636faa3504e
> prerequisite-patch-id: a66c0ace262f24e19546e0669fecd0bbb6c4b4bf
> prerequisite-patch-id: de6b8f05d41b61f29fc517883fafdf89aada7de9
> prerequisite-patch-id: 4412c0ef6909608fc761b86cfb22722d862d61d0
> prerequisite-patch-id: ad452759de17adaaf82c9f30e556fb477e3b1941
> prerequisite-patch-id: 7b8615c4ad8e6c825ee192c8225e7b8f673aaeb4
> prerequisite-patch-id: 7f806ab2c8bac5b2a79fad8eef55c4190ec33d44
> prerequisite-patch-id: 84d3e86a4b573228dab7d37c3d89845ec1989723
> prerequisite-patch-id: 293a69cf606ea42badcc678f43b53f2e47aded19
> prerequisite-patch-id: 1a871a86b6c1b147ed731970f999b5d102444d1d
> prerequisite-patch-id: 7798a8ca79c1f13268e3762d47861ff94d8eba02
> prerequisite-patch-id: ea12050f12ad6e1278b695f5fe345ca9bc842b1f
> prerequisite-patch-id: 775ec83e6019784675e3412125ae6215b4bf045d
> prerequisite-patch-id: 8cc5a6f94523c8120086dcb2217ba8168b045a3e
> prerequisite-patch-id: ee9fa7eb9352555ff989551e0af040359671f3d7
> prerequisite-patch-id: 02737f65218d4b0c2766cfcf8c0fcde24ca93ac2
> prerequisite-patch-id: 4649eac88f8eb70f79e7777b7cebff4460d8cfc7
> prerequisite-patch-id: 6cba96eb4bee2e8b3b47e0bf6b21ec9fa8639480
> prerequisite-patch-id: 67691213e43b5776c999e8c0927df69be8689e14
> prerequisite-patch-id: c92d8f4dab324c8f42605d626035999cd990a18e
> prerequisite-patch-id: f0a10e37287f97e915eb245d6394ad8e1115905a
> prerequisite-patch-id: f67343a2b854a5f51d75200d56715b2cd10ddc9c
> prerequisite-patch-id: 0d42c83260a2a02de43ad5066f76b4483703f155
> prerequisite-patch-id: 71fc9c326b88271512ee65320dcb3b3454326472
> prerequisite-patch-id: 5770267c01d4e5b5d0187445d31ee87b662fa61d
> prerequisite-patch-id: 999d706f78ac4f85adbfad63adc3df03615ce716
> prerequisite-patch-id: a3a7f88920dcaec397cdce89680dd341da6b7d50
> prerequisite-patch-id: 74495be2707634e339b90ed5ad3a4c375f6b9ec2
> prerequisite-patch-id: 7be19bb7867585445b6119f6357b69f5f8baa5b8
> prerequisite-patch-id: 03efabd23ba77ba8141aa0a8f19b04f0fa6c97f1
> prerequisite-patch-id: 04a4ddcad10e249f4e8cd96ade03c16997e8f83f
> prerequisite-patch-id: b0b8243418ae865a61a5f92d1da80fdbed6d23d4
> prerequisite-patch-id: 349842ef44ddca54066bdbb26d634ac24e076710
> prerequisite-patch-id: d15d4d8c4c0b6843118774fee0c8231e948779cf
> prerequisite-patch-id: eff8d7df797afdd2ba6b14c1d8ec9dbdc58b5c3d
> prerequisite-patch-id: 18ae20d67e1f01478d4b01981488e0a3d6864ad2
> prerequisite-patch-id: b6c162640de66eeaf8f2b470801dc3cec9d1141e
> prerequisite-patch-id: fccd6815aa703114b7ea3e61b3971621316a8706
> prerequisite-patch-id: ec894a0480c8c523b9f895eea7b809b68998bbfe
> prerequisite-patch-id: a408ede8ac2c69f821dd06cdad368652784e975f
> prerequisite-patch-id: 31f81b5fce5e577e66c09784d24727fadce0b71b
> prerequisite-patch-id: 0fa06efe4a2349a00a6e1d7ed3fcb7ededef127e
> prerequisite-patch-id: e7dba9a68bc0d4481b2cebf029595bdb9f47271f
> prerequisite-patch-id: 4ac7ef554fdd4c2fcceb9f5bd83e9203adaddaf3
> prerequisite-patch-id: ec0a3bc81af005d80235b38f44c227b0a1c248d2
> prerequisite-patch-id: 7083aa4a6a21ae34a8d6457791068ba419c1187d
> prerequisite-patch-id: 7b3ceb60e52271be1655ab07595e1000d8734ae8
> prerequisite-patch-id: 069dd47701f5607db952e7410b66bfc4a77b907c
> prerequisite-patch-id: 6de803a1b4d8dba8b403205327bff91f239a39a8
> prerequisite-patch-id: 8dfcdb9d5cdf69c54766a59a8f194af09c0840b8
> prerequisite-patch-id: f7834a2848f562a130f3d6f28a6b849723dbe18f
> prerequisite-patch-id: 2f283e2b6ff758a2b1f0f4f491c962499be68f91
> prerequisite-patch-id: 7ca906fcc364ab07d6ab9b48fe8162e8006499b9
> prerequisite-patch-id: 0ef05db7ab79653ae096f50497946214bc5084b9
> prerequisite-patch-id: 1d60704d316f4b0f66d5c7e4bf17b025cf99c617
> prerequisite-patch-id: ed3314a4690d9c15bbcfee441599a58e37215877
> prerequisite-patch-id: 34ec93f88bed41db1608e214800f87fdc5a7f9f9
> prerequisite-patch-id: aca1f8cc97d88784936517c7e8050c457c77c9af
> prerequisite-patch-id: b499a1bfa95368ee03daa8c7d45b3ae9c1206871
> prerequisite-patch-id: 5f1cb1245044b3ad4169500916c8b9459711416e
> prerequisite-patch-id: 88e3e2e5947fbfa907213daa9ceef1651976d72f
> prerequisite-patch-id: b4d4f67cd84b9ccb4c4eb48d8e7e20fc70b702ec
> prerequisite-patch-id: b807936c32d4a4539a29ba56b637a3f4733713e3
> prerequisite-patch-id: 72b95ab107eb6ae60f6517410ecce24a3308fa6e
> prerequisite-patch-id: 007b9853bbb41eb2d2b85fd67c1b39d58c2dcc4d
> prerequisite-patch-id: e6e05315ec9827b069836b4f394099272c4b3998
> prerequisite-patch-id: cd63bd21f25dfb458c751306f1ba8fba6db43a35
> prerequisite-patch-id: 790fe51546bed957d4094668086a87009ea6bc3e
> prerequisite-patch-id: c55ca764e1bde1857cab3d1c7a569172e3a60dd0
> prerequisite-patch-id: 4574efb15f6e60ba84b21718381c19faa2d06e6a
> prerequisite-patch-id: 4026283a30594ccf4c5c297a45b817d7c95dcc81
> prerequisite-patch-id: 2f6425ce98f57c1833fcfc1cb963a4b00550daaa
> prerequisite-patch-id: 671d4f6b289715eecf11df3b8e94e566b4e3f358
> prerequisite-patch-id: 59d20ef094471e06900a58216a35fb466e6350a6
> prerequisite-patch-id: 8f6ac7d59fcdd44f015dce5b41ca7e20ed551b17
> prerequisite-patch-id: b3f0435a6a54a62ae2b895ede265f657b2826929
> prerequisite-patch-id: 06784b4d67904e2a8eab05f652d985750aeae26a
> prerequisite-patch-id: 48e9916f08c8502323eadf9595d11a3ad7cf1b0c
> prerequisite-patch-id: 9c5b9353f575b545d6ba706aa33a4200dc163e1e
> prerequisite-patch-id: efadc065d2991129a9fa4380ed782b9dfac9807f
> prerequisite-patch-id: 5a3e46fd6d5f1324a307bd01656993131644e59d
> prerequisite-patch-id: 40be26b80ff47971946da8ccca6574333b4ac511
> prerequisite-patch-id: 249d8bc2c8226ea94c27e2d2db8dfda056b8221d
> prerequisite-patch-id: 64c7dc66a01b47fdc1d178e4264dbfb17f65cb48
> prerequisite-patch-id: 7651dda34bd7be0a7c0c58b813abbfe4e75057a5
> prerequisite-patch-id: 5b677afd301ba2d8385e73d6f55ef259e69cdd06
> prerequisite-patch-id: f41124cb1f7db66cf578ee87b768438dcf66227d
> prerequisite-patch-id: 6a173ab5f27750a6f4a2f8adebff537f95225d38
> prerequisite-patch-id: c42d87f4f18b34c20121d7a7ee22564b8f2a9c3b
> prerequisite-patch-id: e4c4b6c5c635e67f641c1bb4902bb5ec1a0eb1be
> prerequisite-patch-id: 197202a25498a915f35f4417efb38e8844cac309
> prerequisite-patch-id: 1e23186a890510f123ecd202f8a50d2094201277
> prerequisite-patch-id: ba3e7e54dfbd8370ff50d1a5e85ac06d803fe68d
> prerequisite-patch-id: edcca1af6061de5006b58ff7cd52a039aec88192
> prerequisite-patch-id: 50ee0f2c714091aeab155cd40a94214fd1844463
> prerequisite-patch-id: 31adcc5191ebc8b2ea26ee1e4b7de78a3d8e0f48
> prerequisite-patch-id: dafdb698d23a185ee4adfbf9cbaf43ea31661bc1
> prerequisite-patch-id: 683d340258d86d0774c772cc5d4bc4dfc6c214ac
> prerequisite-patch-id: 0052a313ada5ebbd0e24905f2b75974736dae59e
> prerequisite-patch-id: 1cbdbf0cf8727d07cfb7251551bbb8f47ca4f9d8
> prerequisite-patch-id: c059fdfb33923cc5d728f53136021e01cab5f316
> prerequisite-patch-id: d8cd3ac99c209600a4686d85627fae2956864272
> prerequisite-patch-id: 7bfa53abc0cd50a22a81782353e30f0503bf87b3
> prerequisite-patch-id: a2837d8005f85e1764d2baf4c5269ac4c26d0e03
> prerequisite-patch-id: c7c2ba071a328f24d36a7bc73d096f701ff049c4
> prerequisite-patch-id: 49edd721efd5860bce7a6da39a3983c1729dfb09
> prerequisite-patch-id: b41ba2264cf8d51fad69c0d60b23282fdcaa02ed
> prerequisite-patch-id: ce1094369b939e5df1c9ff586ba6e77eadd6755b
> prerequisite-patch-id: cc76aa21e68006e190b6c095a7eab1f71a350035
> prerequisite-patch-id: 016dbed32a9d26e0daa7fe068846dc5bf0bab4b2
> prerequisite-patch-id: ea3270295ff22f15ae5a5213ae7ef0fb24f3d90e
> prerequisite-patch-id: 0d7ec035c0ac8ea612791940c47c720fd0fc0983
> prerequisite-patch-id: 073689ebff4dc3ed400b7a6a09b2aa3222eb5eaf
> prerequisite-patch-id: 3de9c5dcd90a94356e41cd6c3a6b3a3ebd6da40f
> prerequisite-patch-id: 02173a8508f62560dfc0c873ed4f8ffd3b2da127
> prerequisite-patch-id: 325c71a3064a69ed233417bb0dd06ac5afe22ecd
> prerequisite-patch-id: fb5f0634575b9cd445be39af1b442f641f33669e
> prerequisite-patch-id: 375ec357c82582464519ccd102ba9c9969b27ccd
> prerequisite-patch-id: 96724bd515fee1e70896e427ca5443cf6c3bd1c6
> prerequisite-patch-id: d11653d1691c233ceac344313e1facf239c075e6
> prerequisite-patch-id: a0c4b6d4fa27a1f1738ccd7d2c1c5203f4acc10c
> prerequisite-patch-id: bcf62e2802a1d35bbeb601750792f3043e18e02e
> prerequisite-patch-id: b6027c3dd6b0d7a576397c3f7cead1cb2e32ab3d
> prerequisite-patch-id: 2993826cfc8ecb4743d1104ce9062ce064dee436
> prerequisite-patch-id: 2de773c80c1d53b349768f3a9c1dedd9473141e2
> prerequisite-patch-id: dcd065f3bede4933cf1071ca0ff8f631af30537e
> prerequisite-patch-id: e8f9cef7f9a80d21786bdbc63de84dad5bb0f11b
> prerequisite-patch-id: adefc62a9de4bcbb15ddba73edcdb96740b8527f
> prerequisite-patch-id: b8028f15bc6bcfc0053852516acd70129434ef64
> prerequisite-patch-id: a9378612984ceace5d8fc99c192de3d07fad4b4c
> prerequisite-patch-id: 3e64fd39d97c528b5901f648d7ab92c9b3dfebd1
> prerequisite-patch-id: 6900b6fcf58f765fa3266432dc9e2eebcacfbb4f
> prerequisite-patch-id: 0d796b1a9c84ad77fecacee5450ae4fe067e7748
> prerequisite-patch-id: c8cd1e1f3efda1056dd2f393a43b97a675f8fc00
> prerequisite-patch-id: a1e5e6ee3a85aa293485f42163c5e6fb8ed7ac6c
> prerequisite-patch-id: 29865d865b97531dd5be3019e22adb1066bcd0a3
> prerequisite-patch-id: f5e05f1932b2fd24d00c3a7e64a2589f9c62a4e7
> prerequisite-patch-id: 9f875036c21954004d3533697f89c7b8f3f35673
> prerequisite-patch-id: f0f917f79ebed24ee4cd3427393d6cc24b9f2617
> prerequisite-patch-id: 949be1cb8e66006949d4654aa60cf11b990bea13
> prerequisite-patch-id: a035355f8731aa2619cd876157cfd2a9321c4814
> prerequisite-patch-id: d23b3af12de5f250b5aded06076390d855065d34
> prerequisite-patch-id: b649f233ca196c43de136937fbcaf0a5b792a7c7
> prerequisite-patch-id: 0b474fc99e8b05aee2f470e8166d715261b9eb11
> prerequisite-patch-id: a8f595e6c8b9714bfc4d89a7e39d5be3a9665d87
> prerequisite-patch-id: 362ec11aff3d8ddc90f8b1aeb31d0fde8785384b
> prerequisite-patch-id: 3695552670237d21bbd21fef03105083754ed6d1
> prerequisite-patch-id: 89f2689e530147ac5530197ff972bc44135a1fe5
> prerequisite-patch-id: e4a07cbaee52cbe451bfb9938b6b2a8636cac2f0
> prerequisite-patch-id: f8f8edb0e66d2612359021654361be7fd0a55b70
> prerequisite-patch-id: 743f4e4444f9cac24e67abce2bda52d6a421d870
> prerequisite-patch-id: 8f0d19793716d0c18759e4261ef18c6db21c7f66
> prerequisite-patch-id: 016a97f4bb36008d268ed1142d4fe67263d18c5f
> prerequisite-patch-id: c9b1ea941f12ec7c34d17a7a81b999cdc90a46bb
> prerequisite-patch-id: 2e4f5844a1680c659f4fe9af3723f8c9e6171c98
> prerequisite-patch-id: 9b218d7632794493bcc98298de79e9d881bc4de2
> prerequisite-patch-id: bd18dcb6c060ae56cadb55ad248138918b4542fa
> prerequisite-patch-id: 5f4f31b906f1a415721c42bb4f06e9a97e6d9826
> prerequisite-patch-id: fd625a00389f10724c4df0c309f46588ff4db63e
> prerequisite-patch-id: 6aa7f6e164a2fc200361fd96399ad1c10f0825e2
> prerequisite-patch-id: de267e462ebf8b5fda3d3df92d84914f3d49b093
> prerequisite-patch-id: 10e0c0ed7bb11a5e9d50b4210a67d56d0baa7ae7
> prerequisite-patch-id: 881a354db3dcf42e71ff51e86a712fe24a82378f
> prerequisite-patch-id: 471c157425528ec5fa2fe0371dfc9babeff74c57
> prerequisite-patch-id: a7d752c724506c047c0c69fb568f9e3e421773b5
> prerequisite-patch-id: e207260eff0bee9b47719902663721ac36371856
> prerequisite-patch-id: c978ecf00ccf17014919ba6d22a634f1fa5378b8
> prerequisite-patch-id: c30ea3d0e9179a8f91523e4775aa1d7697777031
> prerequisite-patch-id: 9caf8f6dc88c899b90242124e9efccecf61e6580
> prerequisite-patch-id: 8104c6e0f28b79353bb1fe3d6d5bd49b8a1d4656
> prerequisite-patch-id: ad97388f77ab9d4cc88a369418deec6f796d9ac3
> prerequisite-patch-id: 1f6acfacff835f1d7f922614262505c4acbcb067
> prerequisite-patch-id: 95d5625e0f04636a4c3ec335c77f34a5fecaa952
> prerequisite-patch-id: 82e613feb908a11046bdafc6e874bcd8c4f52200
> prerequisite-patch-id: 5f7a850dcf2102e4ac82791ba95ed0c0bc695613
> prerequisite-patch-id: 50d03e282b31737919a2b979d59c5c4c17107627
> prerequisite-patch-id: 8b51bae8e714a0e5277f67ff9d1455fd2f4e36b7
> prerequisite-patch-id: eee196eb6f44f53040e52305d9c48909eb3bf2c5
> prerequisite-patch-id: 35494985bedf6015cb3a8c2c70f58099e9c44316
> prerequisite-patch-id: c3c5c822735b385dd0e55260f514623bf3f9ff1a
> prerequisite-patch-id: b21222f6f96276b46ff605bdd1d2a75c9af839ca
> prerequisite-patch-id: b63e092548d498d642b6363eae9c98247f5300f9
> prerequisite-patch-id: 99cf93d15a50ad94c049c736b375bbdb77cf0ef6
> prerequisite-patch-id: e2d86b651e3ff2f70848f827b29cc804cead48b2
> prerequisite-patch-id: 1ec76b0303530aaa120186fb249252cd3a1bd7ec
> prerequisite-patch-id: 9a35b1041fb252654255045df37478c8eb15a501
> prerequisite-patch-id: e7227e60ea90415b54c6fcd553ddece24dd402fc
> prerequisite-patch-id: 2f45861307fafa6a5696098406e164e166f4d207
> prerequisite-patch-id: ab037b78ccf8a9db312333f5e01e6fd2e54832ca
> prerequisite-patch-id: 9c886d5ccd279d6f283fcd60a794e66c94fe782d
> prerequisite-patch-id: fa5a4fc2f2d77e9ad000d7477f56b822efce457f
> prerequisite-patch-id: a0699fc9eb0ee36f53bc937770887d6086d2a7b8
> prerequisite-patch-id: b383634edd50afef4180be293861d1014491d86d
> prerequisite-patch-id: 2f404a754f2e1048165df254e963e26f6789de7f
> prerequisite-patch-id: 07d59a1d0796816d8421b5a236175b1568d1f63f
> prerequisite-patch-id: 9f904d43a86cb4e55a2a00440dd042ec717c8eb8
> prerequisite-patch-id: b30b252bdf0646403dbd132c7dc629188e4f6a4b
> prerequisite-patch-id: 73e2691afad05a42cb6cb5a28894eb958516f39c
> prerequisite-patch-id: ef0f8b6061c55ada19107f026164c8598ebc66bd
> prerequisite-patch-id: da21009a2dbc3384309cfdc4c49e10b86de6e747
> prerequisite-patch-id: 2ef5022df54288b85ef1c8fe4e7a02a03d4577ff
> prerequisite-patch-id: 5193b8507248975783d1eb6bc911265e6b55988e
> prerequisite-patch-id: 1aef895eb9c159d33d617d7b2475928f75a73303
> prerequisite-patch-id: bf87652bd502aeaf671da92e243553fb9a94f5d5
> prerequisite-patch-id: cf9856dfd70d154fab043ffd2ee89288d9d41827
> prerequisite-patch-id: f9daf7a441685aa6d25225b6616e51be5fcfe772
> prerequisite-patch-id: 0101aa9af501543384863fa8c090febd6939f80f
> prerequisite-patch-id: ccf1ac224734562e2f4207847b8128cd3c8b9d31
> prerequisite-patch-id: 589ae86ee30b01355ce220ab9fc89c5403d95076
> prerequisite-patch-id: 6e809a44a0ef69883eb812f8a4b57eb52ad32f41
> prerequisite-patch-id: 116d110f795045527d54f2897e1ac12bb2f59238
> prerequisite-patch-id: f4e0f48a8ce61bc6c229a18bf41f4b3cdec3a9d0
> prerequisite-patch-id: e78df0253e48cdf5f9e44c17a169fc9cccb82c7e
> prerequisite-patch-id: 1e6951da0eba531f4b445996167fea1e7320e3ae
> prerequisite-patch-id: b1903fb1a742dd33ebb635299c725e9fc2a4e9ae
> prerequisite-patch-id: eb07c15789948b34c0b219ff05f61c530882845d
> prerequisite-patch-id: 92c0ba647ef4b4b7e83297554f6fa7e31f3a8fb5
> prerequisite-patch-id: f968b1250e573119cb65aab0b98c225d8a7c4d8a
> prerequisite-patch-id: 5e6dee90fe5f7a891794b5ea6bed41b1157c2930
> prerequisite-patch-id: 3b10245cae08595a6bcbdc82ff836becaf6d04d2
> prerequisite-patch-id: d7f15f333560e8ccfe2ad073e99ca4ef502e15d1
> prerequisite-patch-id: 4c95c2badbd5911a7405a64e0d84e3091526444d
> prerequisite-patch-id: f839c9824865564c12cbb7064ff455f34dc039f7
> prerequisite-patch-id: 071e2570569f005c75ed7d8bf112db80cca310e5
> prerequisite-patch-id: 7ee42594ecf51591428ae7f13bfb8403affed8cb
> prerequisite-patch-id: 4b2105c900cf8ed047a9c0d1866fb2bdb4f9a59e
> prerequisite-patch-id: dd4697ba0013408e637223fadd027c9b34945060
> prerequisite-patch-id: e0881345b919ec25525c626303ba5d5e160f97f2
> prerequisite-patch-id: fc6865c7e1fb19530ac8e77090eaa0b179f70496
> prerequisite-patch-id: e3b8081ed28b7f0d370548044237287f52179967
> prerequisite-patch-id: b672da115531fc52a591c9e50ac4da9e8b09e144
> prerequisite-patch-id: f2764b91aa819feb1879d007993bda7aeb7f5df6
> prerequisite-patch-id: dfb13890022578746ce611a965c62c34905b1f18
> prerequisite-patch-id: bef3730ba816c84cb056d12e30b91a8c1f4b6aac
> prerequisite-patch-id: 265211a01667357c86ce905ee33e4adbb81887d9
> prerequisite-patch-id: c02d2492949e079494b9552c397e689774fad639
> prerequisite-patch-id: 0f4180d693806ae210396ec1512be8e1d45c9530
> prerequisite-patch-id: 22b486e7286a8b1a8ef90d3f1f4a4d48e43fb25c
> prerequisite-patch-id: 0020828bf1b65907c906fb9ebf24104a5e72c790
> prerequisite-patch-id: 4afad41c227028a4c6c35d1c43b0ee7883852a1e
> prerequisite-patch-id: 890e19d588eca2dacfb83475c19ac461c0d83058
> prerequisite-patch-id: f35d03d5ed63be69d2dfec77d07b28d21c40dc9a
> prerequisite-patch-id: 2bebc000037d37260152802423445d39bc463f8e
> prerequisite-patch-id: ccbec53de5ad88beb7657680ae6aa167f3505fd6
> prerequisite-patch-id: 3c588bad04050087679a1d4f5479efb0da2537bb
> prerequisite-patch-id: 87d915c6c5495d2accc7864dc592f2f651012fca
> prerequisite-patch-id: a327cf20636f57b5feb31928c49d6517f102a709
> prerequisite-patch-id: 8106cf8afd07cf37f3ecd63b831f1a22fa99998a
> prerequisite-patch-id: a4ff39b72413dc2d894d269629919ce5199eb0fd
> prerequisite-patch-id: c0db74dd58a097e7130420bd294b0f3d200730be
> prerequisite-patch-id: df5bd199584a63d1ca2af8ca5e9bc659baffb8ab
> prerequisite-patch-id: 9f8d32c0a8df05688a4e6779d45538056d891a72
> prerequisite-patch-id: 167566e1096e56d7189393aed3528b8047421a2b
> prerequisite-patch-id: 5ade75da262706c05c72bc2e1095cdc137334928
> prerequisite-patch-id: 725cd8d55b55117b8732240a36ef6dd57560b7aa
> prerequisite-patch-id: 2283e8ab28c671cd97fdba344bad9fad3b740955
> prerequisite-patch-id: d86fed5ed934d2622a0e640677483dbd5e493b50
> prerequisite-patch-id: 5a523603c0cc2344952de69d65a1dd6c9c28b1b0
> prerequisite-patch-id: 8276956515aab9f3e81a9b4d51f5d270fea82c8b
> prerequisite-patch-id: 1c0b8c20b01944262081a7fac4905a24a1f51afd
> prerequisite-patch-id: 90b6ed9e4633014209d3291157104fe2db6cc268
> prerequisite-patch-id: b78d480e28a5684e5a04f9e2d1dc6c8d6b6115d8
> prerequisite-patch-id: 85129a45f66a9afd1d6aeb78a266f2b33131effc
> prerequisite-patch-id: 46c2c0f251c385f740ec0f021ddf71b214dcf188
> prerequisite-patch-id: de94541c97cd5dfb8f02b4210557a29264c60f28
> prerequisite-patch-id: cb4a135f378247e43ecb9c5c1ca421e778356cd3
> prerequisite-patch-id: 6941030e002fe4dac24a7e431297837bcebd6637
> prerequisite-patch-id: 16ed31acf9114e5bcdeab9ac6f8b3c1d460d40ab
> prerequisite-patch-id: 5a24fb875f0c703d031c3dcfd40faf2072a691b1
> prerequisite-patch-id: 278384975e9224209b9df58781cb0d57d33cce91
> prerequisite-patch-id: 8b4be8616dd4f2e1b6189657017e81999e3379bf
> prerequisite-patch-id: 99853a3b8283b9aae581ec9c7a4b30dd27a9075f
> prerequisite-patch-id: a48c177e8a82248dfd6642c35da34019d765a4a8
> prerequisite-patch-id: 6b4419d64c7d1e887578e30a73fc476aad5408a6
> prerequisite-patch-id: 93b79b926b74052e9bbba631e0f30da89c1dd0ec
> prerequisite-patch-id: 9fe442b02446f58ea358d748da5f5f82805bc7ef
> prerequisite-patch-id: 26828312870404b6611ccd685b162aa082dfce57
> prerequisite-patch-id: 6ce31c6bb1a2b79ca465dca7a1157d1bb379d51b
> prerequisite-patch-id: e6b4e8bd8a45796125d4fdcc169f97f5a3fb8bf8
> prerequisite-patch-id: 94637d65272a73ec3e2b19dc3595d864fdea4836
> prerequisite-patch-id: dd5dfa3e4d58a7db1f158bcc0daec057c028ce00
> prerequisite-patch-id: 2295114d438c62a2128620775fc0300b0b418ff9
> prerequisite-patch-id: 080adcee4042fd9511680fb10beebcae24a4dc06
> prerequisite-patch-id: 022f540464bfd6c2202cdeb5530502903d207417
> prerequisite-patch-id: 5ffcb1ea5dafbfe47753ce4165afa1f99d46cc82
> prerequisite-patch-id: c4dcb2f3f063115727c204d3e0b0ef7c7a66cda9
> prerequisite-patch-id: 984a29d2480696456528847eb7365e5785613ab6
> prerequisite-patch-id: fa4b35b9b0874bdf8057f88303e204ff3b6e0538
> prerequisite-patch-id: 12dac397d93e001201a2b8fcbadbca24a91a1f5a
> prerequisite-patch-id: 51112edb6d85135a1930262e7a63f8f2fad3b22d
> -- 
> 2.45.2
>