cocci.inria.fr archive mirror
 help / color / mirror / Atom feed
* [Cocci] [PATCH] Coccinelle: null: Optimise disjunctions in SmPL script “eno.cocci”
@ 2020-10-25 18:01 Markus Elfring
  2020-10-25 18:28 ` Julia Lawall
  0 siblings, 1 reply; 7+ messages in thread
From: Markus Elfring @ 2020-10-25 18:01 UTC (permalink / raw)
  To: Coccinelle, Gilles Muller, Julia Lawall, Michal Marek, Nicolas Palix
  Cc: kernel-janitors, linux-kernel

From: Markus Elfring <elfring@users.sourceforge.net>
Date: Sun, 25 Oct 2020 18:54:36 +0100

A disjunction is applied by this script for the semantic patch language.
This construct uses short-circuit evaluation. It has got the consequence
that the last element of the specified condition will only be checked
if all previous parts did not match. Such a technical detail leads to
a recommended ordering of condition parts if you would like to care for
optimal run time characteristics of SmPL code.

An usage incidence was determined for the specified identifiers in source
files from the software “Linux next-20201023” by another SmPL script.

See also:
Determination of an usage statistic for memory allocation calls
https://lore.kernel.org/cocci/2774601.u91sIFNy1E@sonne/

This analysis result indicates a clear ranking for such function calls.
Thus reorder the SmPL disjunction items according to their usage incidence.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
---
 scripts/coccinelle/null/eno.cocci | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/scripts/coccinelle/null/eno.cocci b/scripts/coccinelle/null/eno.cocci
index 81584ff87956..969cab5116a9 100644
--- a/scripts/coccinelle/null/eno.cocci
+++ b/scripts/coccinelle/null/eno.cocci
@@ -17,8 +17,16 @@ virtual report
 @depends on patch@
 expression x,E;
 @@
-
-x = \(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\|kmem_cache_alloc_node\|kmalloc_node\|kzalloc_node\)(...)
+ x =
+(kzalloc
+|kmalloc
+|kcalloc
+|kmem_cache_alloc
+|kmem_cache_zalloc
+|kzalloc_node
+|kmalloc_node
+|kmem_cache_alloc_node
+)(...)
 ... when != x = E
 - IS_ERR(x)
 + !x
@@ -27,8 +35,7 @@ x = \(kmalloc\|kzalloc\|kcalloc\|kmem_cache_alloc\|kmem_cache_zalloc\|kmem_cache
 expression x,E;
 position p1,p2;
 @@
-
-*x = \(kmalloc@p1\|kzalloc@p1\|kcalloc@p1\|kmem_cache_alloc@p1\|kmem_cache_zalloc@p1\|kmem_cache_alloc_node@p1\|kmalloc_node@p1\|kzalloc_node@p1\)(...)
+*x = \(kzalloc@p1\|kmalloc@p1\|kcalloc@p1\|kmem_cache_alloc@p1\|kmem_cache_zalloc@p1\|kzalloc_node@p1\|kmalloc_node@p1\|kmem_cache_alloc_node@p1\)(...)
 ... when != x = E
 * IS_ERR@p2(x)

--
2.29.1

_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2020-10-25 20:55 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-25 18:01 [Cocci] [PATCH] Coccinelle: null: Optimise disjunctions in SmPL script “eno.cocci” Markus Elfring
2020-10-25 18:28 ` Julia Lawall
2020-10-25 18:45   ` [Cocci] " Markus Elfring
2020-10-25 18:56     ` Julia Lawall
2020-10-25 20:10       ` Markus Elfring
2020-10-25 20:27         ` Julia Lawall
2020-10-25 20:45           ` Markus Elfring

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 NNTP newsgroup(s).