let print_il0expr = function
  | ILexpCoerce(typ,id) -> "("^(print_c_type typ)^")"^(print_tempid id)
  | ILexpConstant(c) -> (print_c_constants c)
  | ILexpBinop( o, e1, e2 ) ->
      "("^(print_tempid e1)^" "^(print_binary_operator o)^" "^(print_tempid e2)^")"
  | ILexpUnaryop( o, e ) ->
      "("^(print_unary_operator o)^" "^(print_tempid e)^")"
  | ILexpInvoke(e,l) ->
      print_il0lv e [] ^ "(" ^ String.concat ", " (List.map print_tempid l) ^ ")"
  | ILexpAddress(lv, fs) ->
      "&(" ^ print_il0lv lv fs ^ ")"
  | ILexpIdent(id) ->
      print_tempid id
  | ILexpArgument(n) ->
      "$A" ^ string_of_int n