threads / patch / 52265

patchcoccinelle: merge twelve rules from object_id.cocci

Subject: [PATCH] coccinelle: merge twelve rules from object_id.cocci

## tl;dr

2 messages between Nov 14, 2019 and Nov 16, 2019. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

Markus Elfring· Nov 14, 2019, 12:10 UTC · lore
From: Markus Elfring <elfring@users.sourceforge.net>
Date: Thu, 14 Nov 2019 12:48:27 +0100

This script contained transformation rules for the semantic patch language which used similar code. Combine these rules by using five SmPL disjunctions so that the run time characteristics can be nicer because of common usage of a few metavariables.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
---
 contrib/coccinelle/object_id.cocci | 89 +++++++++++++-----------------
 1 file changed, 37 insertions(+), 52 deletions(-)
Show changes to contrib/coccinelle/object_id.cocci +37 −53
diff --git a/contrib/coccinelle/object_id.cocci b/contrib/coccinelle/object_id.cocci
index 3e536a9834..5e8fc4659a 100644
--- a/contrib/coccinelle/object_id.cocci
+++ b/contrib/coccinelle/object_id.cocci
@@ -1,20 +1,33 @@
 @@
-struct object_id OID;
-@@
-- is_null_sha1(OID.hash)
-+ is_null_oid(&OID)
-
-@@
+expression E;
+struct object_id OID, OID2;
 struct object_id *OIDPTR;
 @@
-- is_null_sha1(OIDPTR->hash)
-+ is_null_oid(OIDPTR)
-
-@@
-struct object_id OID;
-@@
+(
+- is_null_sha1
++ is_null_oid
+             (
+(
+-             OID.hash
++             &OID
+|
+              OIDPTR
+-                   ->hash
+)
+             )
+|
 - sha1_to_hex(OID.hash)
 + oid_to_hex(&OID)
+|
+- sha1_to_hex_r(E, OID.hash)
++ oid_to_hex_r(E, &OID)
+|
+- hashclr(OID.hash)
++ oidclr(&OID)
+|
+- hashcmp(OID.hash, OID2.hash)
++ oidcmp(&OID, &OID2)
+)

 @@
 identifier f != oid_to_hex;
@@ -25,13 +38,6 @@ struct object_id *OIDPTR;
 + oid_to_hex(OIDPTR)
   ...>}

-@@
-expression E;
-struct object_id OID;
-@@
-- sha1_to_hex_r(E, OID.hash)
-+ oid_to_hex_r(E, &OID)
-
 @@
 identifier f != oid_to_hex_r;
 expression E;
@@ -42,12 +48,6 @@ struct object_id *OIDPTR;
 + oid_to_hex_r(E, OIDPTR)
   ...>}

-@@
-struct object_id OID;
-@@
-- hashclr(OID.hash)
-+ oidclr(&OID)
-
 @@
 identifier f != oidclr;
 struct object_id *OIDPTR;
@@ -57,12 +57,6 @@ struct object_id *OIDPTR;
 + oidclr(OIDPTR)
   ...>}

-@@
-struct object_id OID1, OID2;
-@@
-- hashcmp(OID1.hash, OID2.hash)
-+ oidcmp(&OID1, &OID2)
-
 @@
 identifier f != oidcmp;
 struct object_id *OIDPTR1, OIDPTR2;
@@ -76,44 +70,35 @@ struct object_id *OIDPTR1, OIDPTR2;
 struct object_id *OIDPTR;
 struct object_id OID;
 @@
+(
 - hashcmp(OIDPTR->hash, OID.hash)
 + oidcmp(OIDPTR, &OID)
-
-@@
-struct object_id *OIDPTR;
-struct object_id OID;
-@@
+|
 - hashcmp(OID.hash, OIDPTR->hash)
 + oidcmp(&OID, OIDPTR)
+)

 @@
-struct object_id *OIDPTR1;
-struct object_id *OIDPTR2;
+struct object_id * OIDPTR1, OIDPTR2;
 @@
+(
 - oidcmp(OIDPTR1, OIDPTR2) == 0
 + oideq(OIDPTR1, OIDPTR2)
-
-@@
-identifier f != hasheq;
-expression E1, E2;
-@@
-  f(...) {<...
-- hashcmp(E1, E2) == 0
-+ hasheq(E1, E2)
-  ...>}
-
-@@
-struct object_id *OIDPTR1;
-struct object_id *OIDPTR2;
-@@
+|
 - oidcmp(OIDPTR1, OIDPTR2) != 0
 + !oideq(OIDPTR1, OIDPTR2)
+)

 @@
 identifier f != hasheq;
 expression E1, E2;
 @@
   f(...) {<...
+(
+- hashcmp(E1, E2) == 0
++ hasheq(E1, E2)
+|
 - hashcmp(E1, E2) != 0
 + !hasheq(E1, E2)
+)
   ...>}
--
2.24.0
brian m. carlson· Nov 16, 2019, 05:59 UTC · re: Markus Elfring · lore

Re: [PATCH] coccinelle: merge twelve rules from object_id.cocci

On 2019-11-14 at 12:10:26, Markus Elfring wrote:
Show 7 quoted lines
> From: Markus Elfring <elfring@users.sourceforge.net>
> Date: Thu, 14 Nov 2019 12:48:27 +0100
> 
> This script contained transformation rules for the semantic patch language
> which used similar code.
> Combine these rules by using five SmPL disjunctions so that the run time
> characteristics can be nicer because of common usage of a few metavariables.

This seems like a nice improvement. It's probably quite obvious, but my skills with Coccinelle are rather limited, so I appreciate you cleaning this up.

-- 
brian m. carlson: Houston, Texas, US
OpenPGP: https://keybase.io/bk2204

← back to recent threads