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 [off-list ref] writes:
quoted
Am 12.11.19 um 16:08 schrieb Markus Elfring:
quoted
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)
)
)
quoted
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;