-----Original Message-----
From: Philippe Mathieu-Daudé <philmd@linaro.org>
Sent: Monday, July 22, 2024 2:43 PM
To: Yao, Xingtao/姚 幸涛 <yaoxt.fnst@fujitsu.com>; qemu-devel@nongnu.org
Subject: Re: [PATCH 00/13] make range overlap check more readable
Hi Yao,
On 22/7/24 06:07, Yao Xingtao via wrote:
Currently, some components still open-coding the range overlap check.
Sometimes this check may be fail because some patterns are missed.
How did you catch all these use cases?
I used the Coccinelle to match these use cases, the pattern is below
range_overlap.cocci:
// use ranges_overlap() instead of open-coding the overlap check
@@
expression E1, E2, E3, E4;
@@
(
- E2 <= E3 || E1 >= E4
+ !ranges_overlap(E1, E2, E3, E4)
|
- (E2 <= E3) || (E1 >= E4)
+ !ranges_overlap(E1, E2, E3, E4)
|
- E1 < E4 && E2 > E3
+ ranges_overlap(E1, E2, E3, E4)
|
- (E1 < E4) && (E2 > E3)
+ ranges_overlap(E1, E2, E3, E4)
|
- (E1 >= E3 && E1 < E4) || (E2 > E3 && E2 <= E4)
+ ranges_overlap(E1, E2, E3, E4)
|
- ((E1 >= E3) && (E1 < E4)) || ((E2 > E3) && (E2 <= E4))
+ ranges_overlap(E1, E2, E3, E4)
)