@@
iterator name list_for_each;
statement S;
expression head;
struct list_head *pos;
@@
- for (pos = head.next; pos != &head; pos = pos->next) 
+ list_for_each(pos, &head) 
  S



@@
//iterator list_for_each;
statement S;
expression head;
struct list_head *pos;
@@
- for (pos = head->next; pos != head; pos = pos->next) 
+ list_for_each(pos, head) 
  S



// list_add, list_del
// list_move
// list_del_init
// list_add_tail

// { ... when != 
//    list_del() \| xxx->next = E \| list_add() \| f(...,xxx,...)
// }


// le cas single statement



// in  0c5719c43d34073f6b4b0a2dd99f5317a5f63abd
//
//-    struct list_head *walk = &pdev->bus_list;
//+    struct list_head *walk;
//
//-    for (walk = walk->next; walk != &pdev->bus_list; walk = walk->next) {
