• Julia Lawall's avatar
    ath: drop unnecessary list_empty · 18c25b40
    Julia Lawall authored
    list_for_each_entry{_safe} is able to handle an empty list.
    The only effect of avoiding the loop is not initializing the
    index variable.
    Drop list_empty tests in cases where these variables are not
    used.
    
    Note that list_for_each_entry{_safe} is defined in terms of
    list_first_entry, which indicates that it should not be used on an
    empty list.  But in list_for_each_entry{_safe}, the element obtained
    by list_first_entry is not really accessed, only the address of its
    list_head field is compared to the address of the list head, so the
    list_first_entry is safe.
    
    The semantic patch that makes this change for the list_for_each_entry
    case is as follows: (http://coccinelle.lip6.fr/)
    
    <smpl>
    @@
    expression x,e;
    statement S;
    identifier i;
    @@
    
    -if (!(list_empty(x)))
       list_for_each_entry(i,x,...) S
     ... when != i
    ? i = e
    </smpl>
    Signed-off-by: default avatarJulia Lawall <Julia.Lawall@inria.fr>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/1595761112-11003-8-git-send-email-Julia.Lawall@inria.fr
    18c25b40
dfs_pattern_detector.c 10.9 KB