let map_expr f = function
ILexpCoerce( t, n ) -> ILexpCoerce( t, f n )
| ILexpConstant _ as i -> i
| ILexpBinop( o, n1, n2 ) -> ILexpBinop( o, f n1, f n2 )
| ILexpUnaryop( o, n ) -> ILexpUnaryop( o, f n )
| ILexpInvoke( lv, l ) -> ILexpInvoke( map_lvalue f lv, List.map f l )
| ILexpAddress( lv, l ) -> ILexpAddress( map_lvalue f lv, l )
| ILexpArgument _ as i -> i
| ILexpIdent n -> ILexpIdent (f n)