diff --git a/src/plugins/value/engine/transfer_stmt.ml b/src/plugins/value/engine/transfer_stmt.ml
index 261bfb1116eee5def3195c54a383529c0c533e3b..19c6c9973d540c62f1f070dc7f40fa2be9929b18 100644
--- a/src/plugins/value/engine/transfer_stmt.ml
+++ b/src/plugins/value/engine/transfer_stmt.ml
@@ -81,10 +81,12 @@ let do_copy_at = function
     with Not_found -> assert false
 
 (* Warn for call arguments that contain uninitialized/escaping except on
-   [Frama_C_show_each] directives or if the user disables these alarms. *)
+   [Frama_C_show_each] directives or if the user disables these alarms
+   on functions whose body is analyzed. *)
 let is_determinate kf =
   let name = Kernel_function.get_name kf in
-  warn_indeterminate kf && not (Ast_info.is_frama_c_builtin name)
+  (warn_indeterminate kf || !Db.Value.use_spec_instead_of_definition kf)
+  && not (Ast_info.is_frama_c_builtin name)
 
 let subdivide_stmt = Value_util.get_subdivision
 
diff --git a/tests/value/oracle/initialized_copy.1.res.oracle b/tests/value/oracle/initialized_copy.1.res.oracle
index 19688c6d03b07077e0e9af1053fcac4984df745d..99d71e0d2f64e832857ff211df6e48551bba6423 100644
--- a/tests/value/oracle/initialized_copy.1.res.oracle
+++ b/tests/value/oracle/initialized_copy.1.res.oracle
@@ -72,13 +72,8 @@
 [eva] Recording results for f
 [eva] Done for function f
 [eva] initialized_copy.i:130: Frama_C_show_each_unreached:
-[eva] computing for function g <- main.
-  Called from initialized_copy.i:135.
-[kernel:annot:missing-spec] initialized_copy.i:135: Warning: 
-  Neither code nor specification for function g, generating default assigns from the prototype
-[eva] using specification for function g
-[eva] Done for function g
-[eva] initialized_copy.i:136: Frama_C_show_each_unreached:
+[eva:alarm] initialized_copy.i:135: Warning: 
+  accessing uninitialized left-value. assert \initialized(&a_6);
 [eva] computing for function f <- main.
   Called from initialized_copy.i:143.
 [eva] Recording results for f
@@ -91,19 +86,26 @@
   a_7 ∈ {1} or UNINITIALIZED
   __retres ∈ UNINITIALIZED
   ==END OF DUMP==
+[eva:alarm] initialized_copy.i:151: Warning: 
+  accessing uninitialized left-value. assert \initialized(&a_8);
 [eva] computing for function g <- main.
   Called from initialized_copy.i:151.
+[kernel:annot:missing-spec] initialized_copy.i:151: Warning: 
+  Neither code nor specification for function g, generating default assigns from the prototype
+[eva] using specification for function g
 [eva] Done for function g
 [eva] initialized_copy.i:152: 
   Frama_C_dump_each:
   # cvalue:
   w[0..9] ∈ {0; 12} or UNINITIALIZED
   v ∈ [--..--]
-  a_8 ∈ {1} or UNINITIALIZED
+  a_8 ∈ {1}
   __retres ∈ UNINITIALIZED
   ==END OF DUMP==
 [eva] Recording results for main
 [eva] done for function main
+[eva] initialized_copy.i:135: 
+  assertion 'Eva,initialization' got final status invalid.
 [eva] ====== VALUES COMPUTED ======
 [eva:final-states] Values at end of function f: