git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "René Scharfe" <l.s.r@web.de>
To: Markus Elfring <Markus.Elfring@web.de>,
	Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: coccinelle: adjustments for array.cocci?
Date: Thu, 14 Nov 2019 17:41:21 +0100	[thread overview]
Message-ID: <53346d52-e096-c651-f70a-ce6ca4d82ff9@web.de> (raw)
In-Reply-To: <ba5d609a-16ea-d7e9-66e6-19aab94b2acd@web.de>

Am 14.11.19 um 14:15 schrieb Markus Elfring:
> You mentioned “failures”. - I became curious then if corresponding software
> development challenges can be clarified a bit more.

Let's try to restore/repeat the pertinent paragraph, with context and
attribution:

Am 13.11.19 um 03:11 schrieb Junio C Hamano:
> René Scharfe <l.s.r@web.de> writes:
>> Am 12.11.19 um 16:08 schrieb Markus Elfring:
>>>
>>> Do you find the following code variant (for the semantic patch language) also useful?
>>>
>>>  memcpy(
>>> (       ptr, E, n *
>>> -       sizeof(*(ptr))
>>> +       sizeof(T)
>>> |       arr, E, n *
>>> -       sizeof(*(arr))
>>> +       sizeof(T)
>>> |       E, ptr, n *
>>> -       sizeof(*(ptr))
>>> +       sizeof(T)
>>> |       E, arr, n *
>>> -       sizeof(*(arr))
>>> +       sizeof(T)
>>> )
>>>        )
>
>> This reduces duplication in the semantic patch, which is nice.  I think
>> I tried something like that at the time, but found that it failed to
>> produce some of the cases in 921d49be86 ("use COPY_ARRAY for copying
>> arrays", 2019-06-15) for some reason.
> Thanks for mentioning.
>
> I too recall that seemingly redundant entries were noticed during
> the review and at least back then removing the seemingly redundant
> ones caused failures in rewriting.

You can see for yourself by:

 1. applying the patch at the bottom to implement your suggested change,
 2. running "git show 921d49be86 | patch -p1 -R" to undo 921d49be86,
 3. running "make contrib/coccinelle/array.cocci.patch",
 4. running "patch -p1 <contrib/coccinelle/array.cocci.patch",
 5. running "git diff".

If the new version of array.cocci is equivalent to the current one then
that last step should show no difference.  For me, "git diff --stat"
reports, however:

 contrib/coccinelle/array.cocci | 30 ++++++++++++++----------------
 fast-import.c                  |  2 +-
 packfile.c                     |  4 ++--
 pretty.c                       |  4 ++--
 4 files changed, 19 insertions(+), 21 deletions(-)

The changes in array.cocci are expected of course, but the others
indicate that the new version missed transformations that the current
version generated.

René


-- >8 --
diff --git a/contrib/coccinelle/array.cocci b/contrib/coccinelle/array.cocci
index 46b8d2ee11..e7bcbefcc1 100644
--- a/contrib/coccinelle/array.cocci
+++ b/contrib/coccinelle/array.cocci
@@ -12,27 +12,25 @@ T *ptr;
 T[] arr;
 expression E, n;
 @@
+  memcpy(
 (
-  memcpy(ptr, E,
-- n * sizeof(*(ptr))
-+ n * sizeof(T)
-  )
+  ptr, E, n *
+- sizeof(*(ptr))
++ sizeof(T)
 |
-  memcpy(arr, E,
-- n * sizeof(*(arr))
-+ n * sizeof(T)
-  )
+  arr, E, n *
+- sizeof(*(arr))
++ sizeof(T)
 |
-  memcpy(E, ptr,
-- n * sizeof(*(ptr))
-+ n * sizeof(T)
-  )
+  E, ptr, n *
+- sizeof(*(ptr))
++ sizeof(T)
 |
-  memcpy(E, arr,
-- n * sizeof(*(arr))
-+ n * sizeof(T)
-  )
+  E, arr, n *
+- sizeof(*(arr))
++ sizeof(T)
 )
+  )

 @@
 type T;

  reply	other threads:[~2019-11-14 16:41 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-12 15:08 coccinelle: adjustments for array.cocci? Markus Elfring
2019-11-12 18:37 ` René Scharfe
2019-11-13  2:11   ` Junio C Hamano
2019-11-13  8:49     ` Markus Elfring
2019-11-14  2:03       ` Junio C Hamano
2019-11-14 13:15         ` Markus Elfring
2019-11-14 16:41           ` René Scharfe [this message]
2019-11-14 17:14             ` Markus Elfring
2019-11-14 17:46               ` René Scharfe
2019-11-15 11:11                 ` git-coccinelle: " Markus Elfring
2019-11-15 14:20                   ` Markus Elfring
2019-11-15 18:50                   ` Markus Elfring
2019-11-16  1:00                     ` [Cocci] " Julia Lawall
2019-11-16  6:57                       ` Markus Elfring
2019-11-16  8:29                       ` Markus Elfring
2019-11-16 17:57                   ` Julia Lawall
2019-11-16 18:29                     ` Markus Elfring
2019-11-15 20:37   ` coccinelle: " Markus Elfring
2019-11-16 21:13     ` René Scharfe
2019-11-17  7:56       ` Markus Elfring
2019-11-17 13:40         ` René Scharfe
2019-11-17 18:19           ` Markus Elfring
2019-11-19 19:14             ` René Scharfe
2019-11-19 20:21               ` Markus Elfring
2019-11-21 19:01                 ` René Scharfe
2019-11-16 16:33   ` Markus Elfring
2019-11-16 21:38     ` René Scharfe
2019-11-17  8:19       ` Markus Elfring
2019-11-17 13:40         ` René Scharfe
2019-11-17 18:36           ` Markus Elfring
2019-11-19 19:15             ` René Scharfe
2019-11-18 16:10           ` [PATCH] coccinelle: improve array.cocci Markus Elfring
2019-11-19 19:15             ` René Scharfe
2019-11-20  9:01               ` Markus Elfring
2019-11-21 19:02                 ` René Scharfe
2019-11-21 19:44                   ` Markus Elfring
2019-11-22 15:29                     ` SZEDER Gábor
2019-11-22 16:17                       ` Markus Elfring
2019-11-22  5:54               ` [PATCH] " Junio C Hamano
2019-11-22  7:34                 ` Markus Elfring
2020-01-25  8:23             ` Markus Elfring
  -- strict thread matches above, loose matches on Subject: below --
2019-11-12 15:08 coccinelle: adjustments for array.cocci? Markus Elfring

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53346d52-e096-c651-f70a-ce6ca4d82ff9@web.de \
    --to=l.s.r@web.de \
    --cc=Markus.Elfring@web.de \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).