git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
MEMarkus Elfring <markus.elfring@web.de>
Date
Nov 14, 2019, 12:10 UTC
Message-ID
<6c9962c0-67c1-e700-c145-793ce6498099@web.de>
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(-)
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
Next: brian m. carlson
Message 1 of 2 in “coccinelle: merge twelve rules from object_id.cocci”
  1. coccinelle: merge twelve rules from object_id.cocciMarkus Elfring, Nov 14, 2019
  2. brian m. carlsonNov 16, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.