diff --git a/src/plugins/e-acsl/src/code_generator/memory_translate.ml b/src/plugins/e-acsl/src/code_generator/memory_translate.ml
index 8c05dec02008ff757e793a7f2ae32a355f3dae04..a890cf521e219a4627dfb9be7669b19ef11f0a94 100644
--- a/src/plugins/e-acsl/src/code_generator/memory_translate.ml
+++ b/src/plugins/e-acsl/src/code_generator/memory_translate.ml
@@ -34,6 +34,21 @@ let term_to_exp_ref
   : (kernel_function -> Env.t -> term -> exp * Env.t) ref
   = Extlib.mk_fun "term_to_exp_ref"
 
+let gmp_to_sizet_ref
+  : (loc:location ->
+     name:string ->
+     ?check_lower_bound:bool ->
+     ?pp:term ->
+     kernel_function ->
+     Env.t ->
+     term ->
+     exp * Env.t) ref
+  =
+  let func ~loc:_ ~name:_ ?check_lower_bound:_ ?pp:_ _kf _env _t =
+    Extlib.mk_labeled_fun "gmp_to_sizet_ref"
+  in
+  ref func
+
 (*****************************************************************************)
 (****************************** Ranges Elimination ***************************)
 (*****************************************************************************)
@@ -139,33 +154,8 @@ let call ~loc kf name ctx env t =
    The case where [!(0 <= size <= SIZE_MAX)] is an UB ==> guard against it.
    Since the case [0 <= size] is already checked before calling this function,
    only [size <= SIZE_MAX] is added as a guard. *)
-let gmp_to_sizet ~loc kf env size p =
-  let sizet = Cil.(theMachine.typeOfSizeOf) in
-  (* The guard *)
-  let sizet_max = Logic_const.tint
-      ~loc (Cil.max_unsigned_number (Cil.bitsSizeOf sizet))
-  in
-  let guard = Logic_const.prel ~loc (Rle, size, sizet_max) in
-  Typing.type_named_predicate ~must_clear:false guard;
-  let guard, env = !predicate_to_exp_ref kf env guard in
-  (* Translate term [size] into an exp of type [size_t] *)
-  let size, env = !term_to_exp_ref kf env size in
-  let  _, e, env = Env.new_var
-      ~loc
-      ~name:"size"
-      env
-      kf
-      None
-      sizet
-      (fun vi _ ->
-         [ Smart_stmt.runtime_check ~pred_kind:Assert Smart_stmt.RTE kf guard p;
-           Smart_stmt.rtl_call ~loc
-             ~result:(Cil.var vi)
-             ~prefix:""
-             "__gmpz_get_ui"
-             [ size ] ])
-  in
-  e, env
+let gmp_to_sizet ~loc ?pp kf env size _p =
+  !gmp_to_sizet_ref ~loc ~name:"offset" ~check_lower_bound:false ?pp kf env size
 
 (* Take a term of the form [ptr + r] where [ptr] is an address and [r] a range
    offset, and return a tuple [(ptr, size, env)] where [ptr] is the address of
@@ -246,7 +236,19 @@ let range_to_ptr_and_size ~loc kf env ptr r p =
   Typing.type_term ~use_gmp_opt:false size_term;
   let size, env = match Typing.get_number_ty size_term with
     | Typing.Gmpz ->
-      gmp_to_sizet ~loc kf env size_term p
+      (* Start by translating [size_term] to an expression so that the full term
+         with [\let] is not passed around. *)
+      let size_e, env = !term_to_exp_ref kf env size_term in
+      (* Since translating a GMP code should always produce a C variable, we
+         can reuse it as a term for the function [gmp_to_sizet]. *)
+      let cvar_term =
+        match size_e.enode with
+        | Lval (Var vi, NoOffset) -> Cil.cvar_to_term ~loc vi
+        | _ ->
+          Options.fatal
+            "translation to GMP code should always return a C variable"
+      in
+      gmp_to_sizet ~loc ~pp:size_term kf env cvar_term p
     | Typing.(C_integer _ | C_float _) ->
       !term_to_exp_ref kf env size_term
     | Typing.(Rational | Real | Nan) ->
diff --git a/src/plugins/e-acsl/src/code_generator/memory_translate.mli b/src/plugins/e-acsl/src/code_generator/memory_translate.mli
index 184c81404cf3c5611b7ae49116f781a75fd7bf70..e5e0ced77456cf1391e0723b48f5102c32ae5ad8 100644
--- a/src/plugins/e-acsl/src/code_generator/memory_translate.mli
+++ b/src/plugins/e-acsl/src/code_generator/memory_translate.mli
@@ -60,3 +60,13 @@ val predicate_to_exp_ref:
 
 val term_to_exp_ref:
   (kernel_function -> Env.t -> term -> exp * Env.t) ref
+
+val gmp_to_sizet_ref:
+  (loc:location ->
+   name:string ->
+   ?check_lower_bound:bool ->
+   ?pp:term ->
+   kernel_function ->
+   Env.t ->
+   term ->
+   exp * Env.t) ref
diff --git a/src/plugins/e-acsl/src/code_generator/translate.ml b/src/plugins/e-acsl/src/code_generator/translate.ml
index 0141cf409140d2affe193f72bdf4993aab124345..2d42a0c8fa0c0b5deafc1eccdb528832c9f0362d 100644
--- a/src/plugins/e-acsl/src/code_generator/translate.ml
+++ b/src/plugins/e-acsl/src/code_generator/translate.ml
@@ -1149,6 +1149,78 @@ and translate_predicate ?pred_to_print kf env p =
 let predicate_to_exp_without_rte ?name kf env p =
   predicate_to_exp ?name kf env p (* forget optional argument ?rte *)
 
+let gmp_to_sizet ~loc ~name ?(check_lower_bound=true) ?pp kf env t =
+  let pp = match pp with Some size_pp -> size_pp | None -> t in
+  let sizet = Cil.(theMachine.typeOfSizeOf) in
+  let stmts = [] in
+  (* Lower guard *)
+  let stmts, env =
+    if check_lower_bound then begin
+      let zero_term = Cil.lzero ~loc () in
+      let pred_name = Format.sprintf "%s_greater_or_eq_than_0" name in
+      let lower_guard_pp = Logic_const.prel ~loc (Rge, pp, zero_term) in
+      let lower_guard_pp =
+        { lower_guard_pp with
+          pred_name = pred_name :: lower_guard_pp.pred_name }
+      in
+      let lower_guard = Logic_const.prel ~loc (Rge, t, zero_term) in
+      Typing.type_named_predicate ~must_clear:false lower_guard;
+      let lower_guard, env = predicate_to_exp kf env lower_guard in
+      let assertion =
+        Smart_stmt.runtime_check
+          ~pred_kind:Assert
+          Smart_stmt.RTE
+          kf
+          lower_guard
+          lower_guard_pp
+      in
+      assertion :: stmts, env
+    end
+    else stmts, env
+  in
+  (* Upper guard *)
+  let sizet_max =
+    Logic_const.tint ~loc (Cil.max_unsigned_number (Cil.bitsSizeOf sizet))
+  in
+  let pred_name = Format.sprintf "%s_lesser_or_eq_than_SIZE_MAX" name in
+  let upper_guard_pp = Logic_const.prel ~loc (Rle, pp, sizet_max) in
+  let upper_guard_pp =
+    { upper_guard_pp with
+      pred_name = pred_name :: upper_guard_pp.pred_name }
+  in
+  let upper_guard = Logic_const.prel ~loc (Rle, t, sizet_max) in
+  Typing.type_named_predicate ~must_clear:false upper_guard;
+  let upper_guard, env = predicate_to_exp kf env upper_guard in
+  let assertion =
+    Smart_stmt.runtime_check
+      ~pred_kind:Assert
+      Smart_stmt.RTE
+      kf
+      upper_guard
+      upper_guard_pp
+  in
+  let stmts = assertion :: stmts in
+  (* Translate term [t] into an exp of type [size_t] *)
+  let gmp_e, env = term_to_exp kf env t in
+  let  _, e, env = Env.new_var
+      ~loc
+      ~name:"size"
+      env
+      kf
+      None
+      sizet
+      (fun vi _ ->
+         let rtl_call =
+           Smart_stmt.rtl_call ~loc
+             ~result:(Cil.var vi)
+             ~prefix:""
+             "__gmpz_get_ui"
+             [ gmp_e ]
+         in
+         List.rev (rtl_call :: stmts))
+  in
+  e, env
+
 let () =
   Loops.term_to_exp_ref := term_to_exp;
   Loops.translate_predicate_ref := translate_predicate;
@@ -1158,6 +1230,7 @@ let () =
   At_with_lscope.predicate_to_exp_ref := predicate_to_exp_without_rte;
   Memory_translate.term_to_exp_ref := term_to_exp;
   Memory_translate.predicate_to_exp_ref := predicate_to_exp_without_rte;
+  Memory_translate.gmp_to_sizet_ref := gmp_to_sizet;
   Logic_functions.term_to_exp_ref := term_to_exp;
   Logic_functions.predicate_to_exp_ref := predicate_to_exp_without_rte;
   Logic_array.translate_rte_ref := translate_rte
diff --git a/src/plugins/e-acsl/src/code_generator/translate.mli b/src/plugins/e-acsl/src/code_generator/translate.mli
index 0e738036d651f90899d4933d13def123d07841e8..f5e814dfaf1bd73ea7ba8de4e57915db290d3bf1 100644
--- a/src/plugins/e-acsl/src/code_generator/translate.mli
+++ b/src/plugins/e-acsl/src/code_generator/translate.mli
@@ -63,6 +63,22 @@ val translate_rte_annots:
 (** Translate the given RTE annotations into runtime checks in the given
     environment. *)
 
+val gmp_to_sizet:
+  loc:location ->
+  name:string ->
+  ?check_lower_bound:bool ->
+  ?pp:term ->
+  kernel_function ->
+  Env.t ->
+  term ->
+  exp * Env.t
+(** Translate the given GMP integer to an expression of type [size_t]. RTE
+    checks are generated to ensure that the GMP value holds in this type.
+    The parameter [name] is used to generate relevant predicate names.
+    If [check_lower_bound] is set to [false], then the GMP value is assumed to
+    be positive.
+    If [pp] is provided, this term is used in the messages of the RTE checks. *)
+
 exception No_simple_term_translation of term
 (** Exceptin raised if [untyped_term_to_exp] would generate new statements in
     the environment *)
diff --git a/src/plugins/e-acsl/tests/memory/oracle/gen_ranges_in_builtins.c b/src/plugins/e-acsl/tests/memory/oracle/gen_ranges_in_builtins.c
index 379095819663d4d5c9ea19235966217930c73bea..152d6087e0c65af8113b81075ad7742310cf426b 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/gen_ranges_in_builtins.c
+++ b/src/plugins/e-acsl/tests/memory/oracle/gen_ranges_in_builtins.c
@@ -463,9 +463,7 @@ void __gen_e_acsl_g(long *ptr, size_t size)
     __e_acsl_mpz_t __gen_e_acsl_if;
     __e_acsl_mpz_t __gen_e_acsl__4;
     int __gen_e_acsl_le_2;
-    __e_acsl_mpz_t __gen_e_acsl_size_3;
-    int __gen_e_acsl_le_3;
-    unsigned long __gen_e_acsl_size_4;
+    unsigned long __gen_e_acsl_size_3;
     int __gen_e_acsl_valid;
     __e_acsl_store_block((void *)(& ptr),(size_t)8);
     __gmpz_init_set_si(__gen_e_acsl_sizeof,8L);
@@ -504,16 +502,12 @@ void __gen_e_acsl_g(long *ptr, size_t size)
     __gmpz_init_set_ui(__gen_e_acsl__4,18446744073709551615UL);
     __gen_e_acsl_le_2 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_if),
                                    (__e_acsl_mpz_struct const *)(__gen_e_acsl__4));
-    __gmpz_init_set(__gen_e_acsl_size_3,
-                    (__e_acsl_mpz_struct const *)(__gen_e_acsl_mul));
-    __gen_e_acsl_le_3 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_size_3),
-                                   (__e_acsl_mpz_struct const *)(__gen_e_acsl__2));
     __e_acsl_assert(__gen_e_acsl_le_2 <= 0,1,"RTE","g",
-                    "\\valid(ptr + (0 .. size - 1))",
+                    "offset_lesser_or_eq_than_SIZE_MAX:\n  (\\let size = sizeof(long) * (((size - 1) - 0) + 1); size <= 0? 0: size) <=\n  18446744073709551615",
                     "tests/memory/ranges_in_builtins.c",7);
-    __gen_e_acsl_size_4 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_if));
+    __gen_e_acsl_size_3 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_if));
     __gen_e_acsl_valid = __e_acsl_valid((void *)((char *)ptr + 8 * 0),
-                                        __gen_e_acsl_size_4,(void *)ptr,
+                                        __gen_e_acsl_size_3,(void *)ptr,
                                         (void *)(& ptr));
     __e_acsl_assert(__gen_e_acsl_valid,1,"Precondition","g",
                     "\\valid(ptr + (0 .. size - 1))",
@@ -529,104 +523,89 @@ void __gen_e_acsl_g(long *ptr, size_t size)
     __gmpz_clear(__gen_e_acsl_mul);
     __gmpz_clear(__gen_e_acsl_if);
     __gmpz_clear(__gen_e_acsl__4);
-    __gmpz_clear(__gen_e_acsl_size_3);
-  }
-  {
-    __e_acsl_mpz_t __gen_e_acsl_size_8;
-    __gmpz_init_set_ui(__gen_e_acsl_size_8,size);
-    __gmpz_init_set(__gen_e_acsl_at_2,
-                    (__e_acsl_mpz_struct const *)(__gen_e_acsl_size_8));
-    __gmpz_clear(__gen_e_acsl_size_8);
   }
   {
-    __e_acsl_mpz_t __gen_e_acsl_size_6;
-    __gmpz_init_set_ui(__gen_e_acsl_size_6,size);
+    __e_acsl_mpz_t __gen_e_acsl_size_5;
+    __gmpz_init_set_ui(__gen_e_acsl_size_5,size);
     __gmpz_init_set(__gen_e_acsl_at_2,
-                    (__e_acsl_mpz_struct const *)(__gen_e_acsl_size_6));
-    __gmpz_clear(__gen_e_acsl_size_6);
+                    (__e_acsl_mpz_struct const *)(__gen_e_acsl_size_5));
+    __gmpz_clear(__gen_e_acsl_size_5);
   }
   __gen_e_acsl_at = ptr;
   g(ptr,size);
   {
-    __e_acsl_mpz_t __gen_e_acsl_size_5;
+    __e_acsl_mpz_t __gen_e_acsl_size_4;
     __e_acsl_mpz_t __gen_e_acsl_sizeof_2;
-    __e_acsl_mpz_t __gen_e_acsl__6;
+    __e_acsl_mpz_t __gen_e_acsl__5;
     __e_acsl_mpz_t __gen_e_acsl_add_2;
-    __e_acsl_mpz_t __gen_e_acsl__7;
+    __e_acsl_mpz_t __gen_e_acsl__6;
     __e_acsl_mpz_t __gen_e_acsl_sub_3;
     __e_acsl_mpz_t __gen_e_acsl_add_3;
     __e_acsl_mpz_t __gen_e_acsl_mul_2;
-    int __gen_e_acsl_le_4;
+    int __gen_e_acsl_le_3;
     __e_acsl_mpz_t __gen_e_acsl_if_2;
-    __e_acsl_mpz_t __gen_e_acsl__9;
-    int __gen_e_acsl_le_5;
-    __e_acsl_mpz_t __gen_e_acsl_size_7;
-    int __gen_e_acsl_le_6;
-    unsigned long __gen_e_acsl_size_9;
+    __e_acsl_mpz_t __gen_e_acsl__8;
+    int __gen_e_acsl_le_4;
+    unsigned long __gen_e_acsl_size_6;
     int __gen_e_acsl_valid_2;
     __gmpz_init_set_si(__gen_e_acsl_sizeof_2,8L);
-    __gmpz_init_set_si(__gen_e_acsl__6,1L);
+    __gmpz_init_set_si(__gen_e_acsl__5,1L);
     __gmpz_init(__gen_e_acsl_add_2);
     __gmpz_add(__gen_e_acsl_add_2,
                (__e_acsl_mpz_struct const *)(__gen_e_acsl_at_2),
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl__6));
-    __gmpz_init_set_si(__gen_e_acsl__7,0L);
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl__5));
+    __gmpz_init_set_si(__gen_e_acsl__6,0L);
     __gmpz_init(__gen_e_acsl_sub_3);
     __gmpz_sub(__gen_e_acsl_sub_3,
                (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_2),
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl__7));
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl__6));
     __gmpz_init(__gen_e_acsl_add_3);
     __gmpz_add(__gen_e_acsl_add_3,
                (__e_acsl_mpz_struct const *)(__gen_e_acsl_sub_3),
-               (__e_acsl_mpz_struct const *)(__gen_e_acsl__6));
+               (__e_acsl_mpz_struct const *)(__gen_e_acsl__5));
     __gmpz_init(__gen_e_acsl_mul_2);
     __gmpz_mul(__gen_e_acsl_mul_2,
                (__e_acsl_mpz_struct const *)(__gen_e_acsl_sizeof_2),
                (__e_acsl_mpz_struct const *)(__gen_e_acsl_add_3));
-    __gmpz_init_set(__gen_e_acsl_size_5,
+    __gmpz_init_set(__gen_e_acsl_size_4,
                     (__e_acsl_mpz_struct const *)(__gen_e_acsl_mul_2));
-    __gen_e_acsl_le_4 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_size_5),
-                                   (__e_acsl_mpz_struct const *)(__gen_e_acsl__7));
-    if (__gen_e_acsl_le_4 <= 0) {
-      __e_acsl_mpz_t __gen_e_acsl__8;
-      __gmpz_init_set_si(__gen_e_acsl__8,0L);
+    __gen_e_acsl_le_3 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_size_4),
+                                   (__e_acsl_mpz_struct const *)(__gen_e_acsl__6));
+    if (__gen_e_acsl_le_3 <= 0) {
+      __e_acsl_mpz_t __gen_e_acsl__7;
+      __gmpz_init_set_si(__gen_e_acsl__7,0L);
       __gmpz_init_set(__gen_e_acsl_if_2,
-                      (__e_acsl_mpz_struct const *)(__gen_e_acsl__8));
-      __gmpz_clear(__gen_e_acsl__8);
+                      (__e_acsl_mpz_struct const *)(__gen_e_acsl__7));
+      __gmpz_clear(__gen_e_acsl__7);
     }
     else __gmpz_init_set(__gen_e_acsl_if_2,
-                         (__e_acsl_mpz_struct const *)(__gen_e_acsl_size_5));
-    __gmpz_init_set_ui(__gen_e_acsl__9,18446744073709551615UL);
-    __gen_e_acsl_le_5 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_if_2),
-                                   (__e_acsl_mpz_struct const *)(__gen_e_acsl__9));
-    __gmpz_init_set(__gen_e_acsl_size_7,
-                    (__e_acsl_mpz_struct const *)(__gen_e_acsl_mul_2));
-    __gen_e_acsl_le_6 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_size_7),
-                                   (__e_acsl_mpz_struct const *)(__gen_e_acsl__7));
-    __e_acsl_assert(__gen_e_acsl_le_5 <= 0,1,"RTE","g",
-                    "\\valid(\\old(ptr) + (0 .. \\old(size) + 1))",
+                         (__e_acsl_mpz_struct const *)(__gen_e_acsl_size_4));
+    __gmpz_init_set_ui(__gen_e_acsl__8,18446744073709551615UL);
+    __gen_e_acsl_le_4 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_if_2),
+                                   (__e_acsl_mpz_struct const *)(__gen_e_acsl__8));
+    __e_acsl_assert(__gen_e_acsl_le_4 <= 0,1,"RTE","g",
+                    "offset_lesser_or_eq_than_SIZE_MAX:\n  (\\let size = sizeof(long) * (((\\old(size) + 1) - 0) + 1);\n   size <= 0? 0: size)\n  <= 18446744073709551615",
                     "tests/memory/ranges_in_builtins.c",8);
-    __gen_e_acsl_size_9 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_if_2));
+    __gen_e_acsl_size_6 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_if_2));
     __gen_e_acsl_valid_2 = __e_acsl_valid((void *)((char *)__gen_e_acsl_at + 
                                                    8 * 0),
-                                          __gen_e_acsl_size_9,
+                                          __gen_e_acsl_size_6,
                                           (void *)__gen_e_acsl_at,
                                           (void *)(& __gen_e_acsl_at));
     __e_acsl_assert(! __gen_e_acsl_valid_2,1,"Postcondition","g",
                     "!\\valid(\\old(ptr) + (0 .. \\old(size) + 1))",
                     "tests/memory/ranges_in_builtins.c",8);
     __e_acsl_delete_block((void *)(& ptr));
-    __gmpz_clear(__gen_e_acsl_size_5);
+    __gmpz_clear(__gen_e_acsl_size_4);
     __gmpz_clear(__gen_e_acsl_sizeof_2);
-    __gmpz_clear(__gen_e_acsl__6);
+    __gmpz_clear(__gen_e_acsl__5);
     __gmpz_clear(__gen_e_acsl_add_2);
-    __gmpz_clear(__gen_e_acsl__7);
+    __gmpz_clear(__gen_e_acsl__6);
     __gmpz_clear(__gen_e_acsl_sub_3);
     __gmpz_clear(__gen_e_acsl_add_3);
     __gmpz_clear(__gen_e_acsl_mul_2);
     __gmpz_clear(__gen_e_acsl_if_2);
-    __gmpz_clear(__gen_e_acsl__9);
-    __gmpz_clear(__gen_e_acsl_size_7);
+    __gmpz_clear(__gen_e_acsl__8);
     __gmpz_clear(__gen_e_acsl_at_2);
     return;
   }
@@ -651,9 +630,7 @@ void __gen_e_acsl_f(char *s, long n)
     __e_acsl_mpz_t __gen_e_acsl_if;
     __e_acsl_mpz_t __gen_e_acsl__6;
     int __gen_e_acsl_le_2;
-    __e_acsl_mpz_t __gen_e_acsl_size_2;
-    int __gen_e_acsl_le_3;
-    unsigned long __gen_e_acsl_size_3;
+    unsigned long __gen_e_acsl_size_2;
     int __gen_e_acsl_valid;
     __e_acsl_store_block((void *)(& s),(size_t)8);
     __gmpz_init_set_si(__gen_e_acsl_sizeof,1L);
@@ -694,16 +671,12 @@ void __gen_e_acsl_f(char *s, long n)
     __gmpz_init_set_ui(__gen_e_acsl__6,18446744073709551615UL);
     __gen_e_acsl_le_2 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_if),
                                    (__e_acsl_mpz_struct const *)(__gen_e_acsl__6));
-    __gmpz_init_set(__gen_e_acsl_size_2,
-                    (__e_acsl_mpz_struct const *)(__gen_e_acsl_mul));
-    __gen_e_acsl_le_3 = __gmpz_cmp((__e_acsl_mpz_struct const *)(__gen_e_acsl_size_2),
-                                   (__e_acsl_mpz_struct const *)(__gen_e_acsl__4));
     __e_acsl_assert(__gen_e_acsl_le_2 <= 0,1,"RTE","f",
-                    "\\valid(s + (3 .. n + 1000))",
+                    "offset_lesser_or_eq_than_SIZE_MAX:\n  (\\let size = sizeof(char) * (((n + 1000) - 3) + 1); size <= 0? 0: size) <=\n  18446744073709551615",
                     "tests/memory/ranges_in_builtins.c",5);
-    __gen_e_acsl_size_3 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_if));
+    __gen_e_acsl_size_2 = __gmpz_get_ui((__e_acsl_mpz_struct const *)(__gen_e_acsl_if));
     __gen_e_acsl_valid = __e_acsl_valid((void *)(s + 1 * 3),
-                                        __gen_e_acsl_size_3,(void *)s,
+                                        __gen_e_acsl_size_2,(void *)s,
                                         (void *)(& s));
     __e_acsl_assert(! __gen_e_acsl_valid,1,"Precondition","f",
                     "!\\valid(s + (3 .. n + 1000))",
@@ -721,7 +694,6 @@ void __gen_e_acsl_f(char *s, long n)
     __gmpz_clear(__gen_e_acsl__4);
     __gmpz_clear(__gen_e_acsl_if);
     __gmpz_clear(__gen_e_acsl__6);
-    __gmpz_clear(__gen_e_acsl_size_2);
   }
   f(s,n);
   __e_acsl_delete_block((void *)(& s));
diff --git a/src/plugins/e-acsl/tests/memory/oracle/ranges_in_builtins.res.oracle b/src/plugins/e-acsl/tests/memory/oracle/ranges_in_builtins.res.oracle
index 8852be6a5f86f34777d18630a81b2c6ce7bc3df7..1c942fd837e8066e8d5ee869ce6051ed1308b305 100644
--- a/src/plugins/e-acsl/tests/memory/oracle/ranges_in_builtins.res.oracle
+++ b/src/plugins/e-acsl/tests/memory/oracle/ranges_in_builtins.res.oracle
@@ -8,8 +8,6 @@
   function __e_acsl_assert, behavior blocking: precondition got status unknown.
 [eva:alarm] tests/memory/ranges_in_builtins.c:7: Warning: 
   function __e_acsl_assert, behavior blocking: precondition got status invalid.
-[eva:alarm] tests/memory/ranges_in_builtins.c:8: Warning: 
-  function __gmpz_init_set: precondition ¬\initialized(z) got status unknown.
 [eva:alarm] tests/memory/ranges_in_builtins.c:8: Warning: 
   function __e_acsl_assert, behavior blocking: precondition got status unknown.
 [eva:alarm] tests/memory/ranges_in_builtins.c:8: Warning: