let depends_desc =
function
IL0stmtDefTemp(_,_,e) -> depends_il0expr e
| IL0stmtReadToTemp(_,_,lv,_) -> depends_il0lvalue lv
| IL0stmtSequence(l) -> union_list (List.map depends_il0 l)
| IL0stmtParallel(l) -> union_list (List.map depends_il0 l)
| IL0stmtIf(_,id,_) -> singleton id
| IL0stmtSwitch(id,_) -> singleton id
| IL0stmtReturn(Some id) -> singleton id
| IL0stmtReturn(None) -> empty
| IL0stmtWrite(lv,_,id) -> union (singleton id) (depends_il0lvalue lv)
| IL0stmtDeclAutoScalar(_,_,_,Some v) -> of_list [v]
| IL0stmtDeclAutoScalar(_,_,_,None) -> empty
| IL0stmtDeclBulk(_,_,_,_) -> empty
| IL0stmtLabel _ |
IL0stmtGoto _ -> empty