let replace_label_localdecl (stype, typ, id, init) =
  match stype, typ.ct_ty with
    (Auto | Register), (Tbuiltin _ | Tpointer _) -> begin
      (* auto scalar variable *)
      match init with
        None -> [make_il0 (IL0stmtDeclAutoScalar(stype, typ, id, None))]
      |        Some (CTTMinitExp e) ->
          let v, st = translate_mexpr e in
          let st2 = make_il0 (IL0stmtDeclAutoScalar(stype, typ, id, Some v)) in
          [st; st2]
      |        Some (CTTMinitList e) ->
          assert false
    end
  | _ ->
      [make_il0 (IL0stmtDeclBulk( stype, typ, id, init ))]