-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
coccinelle: misc: move constants to the right
Move constants to the right in binary operators. Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> Signed-off-by: Michal Marek <mmarek@suse.com>
- Loading branch information
Julia Lawall
authored and
Michal Marek
committed
Oct 26, 2015
1 parent
60fb33a
commit 74a8478
Showing
1 changed file
with
171 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,171 @@ | ||
/// Move constants to the right of binary operators. | ||
//# Depends on personal taste in some cases. | ||
/// | ||
// Confidence: Moderate | ||
// Copyright: (C) 2015 Copyright: (C) 2015 Julia Lawall, Inria. GPLv2. | ||
// URL: http://coccinelle.lip6.fr/ | ||
// Options: --no-includes --include-headers | ||
|
||
virtual patch | ||
virtual context | ||
virtual org | ||
virtual report | ||
|
||
@r1 depends on patch && !context && !org && !report | ||
disable bitor_comm, neg_if_exp@ | ||
constant c,c1; | ||
local idexpression i; | ||
expression e,e1,e2; | ||
binary operator b = {==,!=,&,|}; | ||
type t; | ||
@@ | ||
( | ||
c b (c1) | ||
| | ||
sizeof(t) b e1 | ||
| | ||
sizeof e b e1 | ||
| | ||
i b e1 | ||
| | ||
c | e1 | e2 | ... | ||
| | ||
c | (e ? e1 : e2) | ||
| | ||
- c | ||
+ e | ||
b | ||
- e | ||
+ c | ||
) | ||
@r2 depends on patch && !context && !org && !report | ||
disable gtr_lss, gtr_lss_eq, not_int2@ | ||
constant c,c1; | ||
expression e,e1,e2; | ||
binary operator b; | ||
binary operator b1 = {<,<=},b2 = {<,<=}; | ||
binary operator b3 = {>,>=},b4 = {>,>=}; | ||
local idexpression i; | ||
type t; | ||
@@ | ||
|
||
( | ||
c b c1 | ||
| | ||
sizeof(t) b e1 | ||
| | ||
sizeof e b e1 | ||
| | ||
(e1 b1 e) && (e b2 e2) | ||
| | ||
(e1 b3 e) && (e b4 e2) | ||
| | ||
i b e | ||
| | ||
- c < e | ||
+ e > c | ||
| | ||
- c <= e | ||
+ e >= c | ||
| | ||
- c > e | ||
+ e < c | ||
| | ||
- c >= e | ||
+ e <= c | ||
) | ||
|
||
// ---------------------------------------------------------------------------- | ||
|
||
@r1_context depends on !patch && (context || org || report) | ||
disable bitor_comm, neg_if_exp exists@ | ||
type t; | ||
binary operator b = {==,!=,&,|}; | ||
constant c, c1; | ||
expression e, e1, e2; | ||
local idexpression i; | ||
position j0; | ||
@@ | ||
( | ||
c b (c1) | ||
| | ||
sizeof(t) b e1 | ||
| | ||
sizeof e b e1 | ||
| | ||
i b e1 | ||
| | ||
c | e1 | e2 | ... | ||
| | ||
c | (e ? e1 : e2) | ||
| | ||
* c@j0 b e | ||
) | ||
@r2_context depends on !patch && (context || org || report) | ||
disable gtr_lss, gtr_lss_eq, not_int2 exists@ | ||
type t; | ||
binary operator b, b1 = {<,<=}, b2 = {<,<=}, b3 = {>,>=}, b4 = {>,>=}; | ||
constant c, c1; | ||
expression e, e1, e2; | ||
local idexpression i; | ||
position j0; | ||
@@ | ||
|
||
( | ||
c b c1 | ||
| | ||
sizeof(t) b e1 | ||
| | ||
sizeof e b e1 | ||
| | ||
(e1 b1 e) && (e b2 e2) | ||
| | ||
(e1 b3 e) && (e b4 e2) | ||
| | ||
i b e | ||
| | ||
* c@j0 < e | ||
| | ||
* c@j0 <= e | ||
| | ||
* c@j0 > e | ||
| | ||
* c@j0 >= e | ||
) | ||
|
||
// ---------------------------------------------------------------------------- | ||
|
||
@script:python r1_org depends on org@ | ||
j0 << r1_context.j0; | ||
@@ | ||
msg = "Move constant to right." | ||
coccilib.org.print_todo(j0[0], msg) | ||
@script:python r2_org depends on org@ | ||
j0 << r2_context.j0; | ||
@@ | ||
msg = "Move constant to right." | ||
coccilib.org.print_todo(j0[0], msg) | ||
// ---------------------------------------------------------------------------- | ||
@script:python r1_report depends on report@ | ||
j0 << r1_context.j0; | ||
@@ | ||
msg = "Move constant to right." | ||
coccilib.report.print_report(j0[0], msg) | ||
@script:python r2_report depends on report@ | ||
j0 << r2_context.j0; | ||
@@ | ||
msg = "Move constant to right." | ||
coccilib.report.print_report(j0[0], msg) | ||