Blob Blame Raw
--- ./cil/src/cil.ml.orig	2015-03-06 08:28:27.000000000 -0700
+++ ./cil/src/cil.ml	2015-03-18 17:45:00.000000000 -0600
@@ -5933,6 +5933,13 @@ let need_cast ?(force=false) oldt newt =
    vi.vdescrpure <- descrpure;
    vi
 
+ let makePseudoVar =
+   let counter = ref 0 in
+   function ty ->
+     incr counter;
+     let name = "@" ^ (string_of_int !counter) in
+     makeVarinfo ~temp:true (* global= *)false (* formal= *)false name ty
+
     (* Set the types of arguments and results as given by the function type
      * passed as the second argument *)
  let setFunctionType (f: fundec) (t: typ) =
--- ./cil/src/cil.mli.orig	2015-03-06 08:28:27.000000000 -0700
+++ ./cil/src/cil.mli	2015-03-18 17:45:00.000000000 -0600
@@ -707,6 +707,10 @@ val makeLocalVar:
   fundec -> ?scope:block -> ?temp:bool -> ?insert:bool
   -> string -> typ -> varinfo
 
+(** Make a pseudo-variable to use as placeholder in term to expression
+-    conversions. Its logic field is set. They are always generated. *)
+val makePseudoVar: typ -> varinfo
+
 (** Make a temporary variable and add it to a function's slocals. The name of
     the temporary variable will be generated based on the given name hint so
     that to avoid conflicts with other locals.