diff --git a/tests/misc/oracle/vis_spec.res.oracle b/tests/misc/oracle/vis_spec.res.oracle
index 8151d594e44b27c6cff757e4a8b94291f9d2aa54..70cd75db5128c85f29e576c5c3cf89351dd05a86 100644
--- a/tests/misc/oracle/vis_spec.res.oracle
+++ b/tests/misc/oracle/vis_spec.res.oracle
@@ -1,25 +1,11 @@
 [kernel] Parsing vis_spec.i (no preprocessing)
 Starting visit
 Considering vspec of function g
-Function prototype; Funspec is
-'terminates \true;
- exits \false;
- allocates \nothing;'
+Function prototype; Funspec is 'assigns \nothing;'
 Considering sspec of function f
 Funspec of f is '' through visitor
-It is 'terminates \true;
-       exits \false;
-       assigns \nothing;
-       allocates \nothing;'
-through get_spec
+It is 'assigns \nothing;' through get_spec
 Considering vspec of function f
-Funspec of f is 'terminates \true;
-                 exits \false;
-                 allocates \nothing;'
-through visitor
-It is 'terminates \true;
-       exits \false;
-       assigns \nothing;
-       allocates \nothing;'
-through get_spec
+Funspec of f is 'assigns \nothing;' through visitor
+It is 'assigns \nothing;' through get_spec
 End visit
diff --git a/tests/misc/vis_spec.ml b/tests/misc/vis_spec.ml
index fa9afd7df9d662272abca93b3bf823aaeeda6bb2..aac82704de22ad22e1541fd65c20e2d2112f2939 100644
--- a/tests/misc/vis_spec.ml
+++ b/tests/misc/vis_spec.ml
@@ -11,7 +11,6 @@ class pathcrawlerVisitor prj =
         fundec.svar.vname
         Printer.pp_funspec fundec.sspec;
       let kf = Globals.Functions.get fundec.svar in
-      Populate_spec.(populate_funspec kf [`Assigns]);
       Format.printf "@[It is@ @['%a'@]@ through get_spec@]@."
         Printer.pp_funspec
         (Annotations.funspec kf);
@@ -26,7 +25,6 @@ class pathcrawlerVisitor prj =
            fundec.svar.vname
            Printer.pp_funspec sp;
          let kf = Globals.Functions.get fundec.svar in
-         Populate_spec.(populate_funspec kf [`Assigns]);
          Format.printf "@[It is@ @['%a'@]@ through get_spec@]@."
            Printer.pp_funspec
            (Annotations.funspec kf);
diff --git a/tests/spec/default_spec_combine.i b/tests/spec/default_spec_combine.i
index 29c80655c6cc90912e6967dfd83a900104237911..7910730ee26c916363e7519c8d9f091afe659635 100644
--- a/tests/spec/default_spec_combine.i
+++ b/tests/spec/default_spec_combine.i
@@ -2,8 +2,8 @@
 
    MODULE: @PTEST_NAME@
    STDOPT: +"-generated-spec-mode donothing"
-   STDOPT: +"-generated-spec-mode safe -generated-spec-custom allocates:safe"
-   STDOPT: +"-generated-spec-mode frama-c -generated-spec-custom allocates:frama-c"
+   STDOPT: +"-generated-spec-mode safe"
+   STDOPT: +"-generated-spec-mode frama-c"
 */
 
 /*@ axiomatic a {
diff --git a/tests/spec/default_spec_combine.ml b/tests/spec/default_spec_combine.ml
index 6261077f996b4fcc155bba54723938dfea1bbf3d..f4a862e81c62940812c138436206d4ccb97ec9f3 100644
--- a/tests/spec/default_spec_combine.ml
+++ b/tests/spec/default_spec_combine.ml
@@ -15,8 +15,9 @@ let gen_terminates _ _ = None
 let status_terminates = Property_status.Dont_know
 
 let run () =
+  let open Populate_spec in
   let get_spec kf =
-    ignore(Annotations.funspec kf)
+    populate_funspec kf [`Exits; `Assigns; `Requires; `Allocates; `Terminates]
   in
   Globals.Functions.iter get_spec
 
@@ -32,3 +33,5 @@ let populate () =
 
 
 let () = Cmdline.run_after_configuring_stage populate
+
+let () = Db.Main.extend run
diff --git a/tests/spec/default_spec_custom.ml b/tests/spec/default_spec_custom.ml
index 826cd252d4412701ec30b57f22b403ff2e334582..bf4d185694f2bc9afa45bc94231a66220a33d0d0 100644
--- a/tests/spec/default_spec_custom.ml
+++ b/tests/spec/default_spec_custom.ml
@@ -27,8 +27,10 @@ let status_allocates = Property_status.Dont_know
 let status_terminates = Property_status.Dont_know
 
 let run () =
+  let open Populate_spec in
   let get_spec kf =
-    ignore(Annotations.funspec kf)
+    populate_funspec ~do_body:true kf
+      [`Exits; `Assigns; `Requires; `Allocates; `Terminates]
   in
   Globals.Functions.iter get_spec
 
diff --git a/tests/spec/default_spec_mode.i b/tests/spec/default_spec_mode.i
index de2d911f8eff7565ffae7f058c8865dfc174dfa8..e902308758270d68e57a2a0cda366ced22a0256c 100644
--- a/tests/spec/default_spec_mode.i
+++ b/tests/spec/default_spec_mode.i
@@ -1,9 +1,8 @@
 /* run.config
-   STDOPT: +"-no-generate-default-spec"
-   STDOPT: +"-generated-spec-mode skip"
-   STDOPT: +"-generated-spec-mode acsl -generated-spec-custom allocates:acsl"
-   STDOPT: +"-generated-spec-mode safe -generated-spec-custom allocates:safe"
-   STDOPT: +"-generated-spec-mode frama-c -generated-spec-custom allocates:frama-c"
+   MODULE: @PTEST_NAME@
+   STDOPT: +"-generated-spec-mode acsl"
+   STDOPT: +"-generated-spec-mode safe"
+   STDOPT: +"-generated-spec-mode frama-c"
    STDOPT: +"-generated-spec-custom exits:acsl,assigns:frama-c,requires:safe,allocates:safe,terminates:acsl"
 
    EXIT: 1
diff --git a/tests/spec/default_spec_mode.ml b/tests/spec/default_spec_mode.ml
new file mode 100644
index 0000000000000000000000000000000000000000..14210495d5fd113b5b14be8ce7f95a80ec030042
--- /dev/null
+++ b/tests/spec/default_spec_mode.ml
@@ -0,0 +1,19 @@
+let run () =
+  let open Populate_spec in
+  let get_spec kf =
+    let funspec = Annotations.funspec kf in
+    populate_funspec ~do_body:true ~funspec kf [`Exits];
+    populate_funspec ~do_body:true kf [`Assigns];
+    populate_funspec ~do_body:true kf [`Requires];
+    populate_funspec ~do_body:true kf [`Allocates];
+    populate_funspec ~do_body:true kf [`Terminates];
+
+    (* Should no nothing *)
+    ignore(!Annotations.populate_spec_ref kf funspec);
+    populate_funspec ~do_body:true kf
+      [`Exits; `Assigns; `Requires; `Allocates; `Terminates]
+  in
+  Globals.Functions.iter get_spec
+  [@@ warning "-3"]
+
+let () = Db.Main.extend run
diff --git a/tests/spec/oracle/default_spec_combine.0.res.oracle b/tests/spec/oracle/default_spec_combine.0.res.oracle
index 2884fc3201922d5e68feac39dd115e64e7459974..bc19f23f4dd18373c32e5f6e531ae8cdda42d9a4 100644
--- a/tests/spec/oracle/default_spec_combine.0.res.oracle
+++ b/tests/spec/oracle/default_spec_combine.0.res.oracle
@@ -1,17 +1,21 @@
 Registering an mode that does nothing
 [kernel] Parsing default_spec_combine.i (no preprocessing)
 [kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing exits in default behavior of prototype f1,
-   generating default specification from complete behaviors
+  Missing clauses (exits) in specification of prototype f1,
+   generating default specification (some combined from existing behaviors),
+   see -generated-spec-* options for more info
 [kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing assigns in default behavior of prototype f2,
-   generating default specification from complete behaviors
+  Missing clauses (assigns) in specification of prototype f2,
+   generating default specification (some combined from existing behaviors),
+   see -generated-spec-* options for more info
 [kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing requires in default behavior of prototype f3,
-   generating default specification from complete behaviors
+  Missing clauses (requires) in specification of prototype f3,
+   generating default specification (some combined from existing behaviors),
+   see -generated-spec-* options for more info
 [kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing allocates in default behavior of prototype f4,
-   generating default specification from complete behaviors
+  Missing clauses (allocates) in specification of prototype f4,
+   generating default specification (some combined from existing behaviors),
+   see -generated-spec-* options for more info
 /* Generated by Frama-C */
 /*@
 axiomatic a {
diff --git a/tests/spec/oracle/default_spec_combine.1.res.oracle b/tests/spec/oracle/default_spec_combine.1.res.oracle
index 2d5b9acc3fbb8171dd013c06da9e4b2251ba2627..a37b50f294ce90fd7930aaae2f4b99297cf84a95 100644
--- a/tests/spec/oracle/default_spec_combine.1.res.oracle
+++ b/tests/spec/oracle/default_spec_combine.1.res.oracle
@@ -1,38 +1,21 @@
 Registering an mode that does nothing
 [kernel] Parsing default_spec_combine.i (no preprocessing)
 [kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing exits in default behavior of prototype f1,
-   generating default specification from complete behaviors
+  Missing clauses (terminates, requires, exits) in specification of prototype f1,
+   generating default specification (some combined from existing behaviors),
+   see -generated-spec-* options for more info
 [kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing requires in specification of prototype f1,
-   generating default specification, see -generated-spec-* options for more info
+  Missing clauses (terminates, requires, assigns) in specification of prototype f2,
+   generating default specification (some combined from existing behaviors),
+   see -generated-spec-* options for more info
 [kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing terminates in specification of prototype f1,
-   generating default specification, see -generated-spec-* options for more info
+  Missing clauses (terminates, requires) in specification of prototype f3,
+   generating default specification (some combined from existing behaviors),
+   see -generated-spec-* options for more info
 [kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing assigns in default behavior of prototype f2,
-   generating default specification from complete behaviors
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing requires in specification of prototype f2,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing terminates in specification of prototype f2,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing requires in default behavior of prototype f3,
-   generating default specification from complete behaviors
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing terminates in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing requires in specification of prototype f4,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing allocates in default behavior of prototype f4,
-   generating default specification from complete behaviors
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing terminates in specification of prototype f4,
-   generating default specification, see -generated-spec-* options for more info
+  Missing clauses (terminates, allocates, requires) in specification of prototype f4,
+   generating default specification (some combined from existing behaviors),
+   see -generated-spec-* options for more info
 /* Generated by Frama-C */
 /*@
 axiomatic a {
diff --git a/tests/spec/oracle/default_spec_combine.2.res.oracle b/tests/spec/oracle/default_spec_combine.2.res.oracle
index d3b8b07f176f95c16f9d25b6e35b8d749f43c3c6..60a9ca8fbf7571455d4215f9f39aa3142d5fc217 100644
--- a/tests/spec/oracle/default_spec_combine.2.res.oracle
+++ b/tests/spec/oracle/default_spec_combine.2.res.oracle
@@ -1,56 +1,21 @@
 Registering an mode that does nothing
 [kernel] Parsing default_spec_combine.i (no preprocessing)
 [kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing exits in default behavior of prototype f1,
-   generating default specification from complete behaviors
+  Missing clauses (terminates, allocates, assigns, exits) in specification of prototype f1,
+   generating default specification (some combined from existing behaviors),
+   see -generated-spec-* options for more info
 [kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing assigns in specification of prototype f1,
-   generating default specification, see -generated-spec-* options for more info
+  Missing clauses (terminates, allocates, assigns, exits) in specification of prototype f2,
+   generating default specification (some combined from existing behaviors),
+   see -generated-spec-* options for more info
 [kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing allocates in specification of prototype f1,
-   generating default specification, see -generated-spec-* options for more info
+  Missing clauses (terminates, allocates, requires, assigns, exits) in specification of prototype f3,
+   generating default specification (some combined from existing behaviors),
+   see -generated-spec-* options for more info
 [kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing terminates in specification of prototype f1,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing exits in specification of prototype f2,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing assigns in default behavior of prototype f2,
-   generating default specification from complete behaviors
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing allocates in specification of prototype f2,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing terminates in specification of prototype f2,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing exits in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing assigns in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing requires in default behavior of prototype f3,
-   generating default specification from complete behaviors
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing allocates in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing terminates in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing exits in specification of prototype f4,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing assigns in specification of prototype f4,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing allocates in default behavior of prototype f4,
-   generating default specification from complete behaviors
-[kernel:annot:missing-spec] default_spec_combine.i:53: Warning: 
-  Missing terminates in specification of prototype f4,
-   generating default specification, see -generated-spec-* options for more info
+  Missing clauses (terminates, allocates, assigns, exits) in specification of prototype f4,
+   generating default specification (some combined from existing behaviors),
+   see -generated-spec-* options for more info
 /* Generated by Frama-C */
 /*@
 axiomatic a {
diff --git a/tests/spec/oracle/default_spec_custom.0.res.oracle b/tests/spec/oracle/default_spec_custom.0.res.oracle
index 0b799247cf98e154a9689a6ef8fd268838ddd14f..ba3feb06de673131cf915e3e4a6a95191a9fc21f 100644
--- a/tests/spec/oracle/default_spec_custom.0.res.oracle
+++ b/tests/spec/oracle/default_spec_custom.0.res.oracle
@@ -8,14 +8,14 @@ Registering a new spec generation mode
 [kernel] Warning: Custom generation from mode emptymode not defined for terminates, using frama-c mode instead
 [kernel:annot:missing-spec] default_spec_custom.i:18: Warning: 
   Neither code nor specification for function f1,
-   generating default specifications from the prototype
+   generating default specifications (terminates, allocates, assigns, exits) from the prototype
 [kernel] Warning: Custom status from mode emptymode not defined for exits
 [kernel] Warning: Custom status from mode emptymode not defined for assigns
 [kernel] Warning: Custom status from mode emptymode not defined for allocates
 [kernel] Warning: Custom status from mode emptymode not defined for terminates
 [kernel:annot:missing-spec] default_spec_custom.i:18: Warning: 
   Neither code nor specification for function f3,
-   generating default specifications from the prototype
+   generating default specifications (terminates, allocates, assigns, exits) from the prototype
 /* Generated by Frama-C */
 /*@ terminates \true;
     exits \false;
diff --git a/tests/spec/oracle/default_spec_custom.1.res.oracle b/tests/spec/oracle/default_spec_custom.1.res.oracle
index 5a21e5f94773c0f3cce2b4a87537e456ec621d47..d95af99e11c90acdc2ad30e4d2d3a6df0461fb8b 100644
--- a/tests/spec/oracle/default_spec_custom.1.res.oracle
+++ b/tests/spec/oracle/default_spec_custom.1.res.oracle
@@ -3,10 +3,10 @@ Registering a new spec generation mode
 [kernel] Parsing default_spec_custom.i (no preprocessing)
 [kernel:annot:missing-spec] default_spec_custom.i:18: Warning: 
   Neither code nor specification for function f1,
-   generating default specifications from the prototype
+   generating default specifications (terminates, requires, assigns, exits) from the prototype
 [kernel:annot:missing-spec] default_spec_custom.i:18: Warning: 
   Neither code nor specification for function f3,
-   generating default specifications from the prototype
+   generating default specifications (terminates, requires, assigns, exits) from the prototype
 /* Generated by Frama-C */
 /*@ requires \false;
     terminates \false;
diff --git a/tests/spec/oracle/default_spec_mode.0.res.oracle b/tests/spec/oracle/default_spec_mode.0.res.oracle
index e36e713765661974785859139e5a07493fce89a5..bdc222f95456a3d065795b7b96a4a37a0cd2f60b 100644
--- a/tests/spec/oracle/default_spec_mode.0.res.oracle
+++ b/tests/spec/oracle/default_spec_mode.0.res.oracle
@@ -1,18 +1,54 @@
 [kernel] Parsing default_spec_mode.i (no preprocessing)
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Neither code nor specification for function f1,
+   generating default specifications (exits) from the prototype
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (allocates) in specification of prototype f1,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (terminates) in specification of prototype f1,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (exits) in specification of prototype f3,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (allocates) in specification of prototype f3,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (terminates) in specification of prototype f3,
+   generating default specification,
+   see -generated-spec-* options for more info
 /* Generated by Frama-C */
+/*@ terminates \true;
+    exits \false;
+    allocates \nothing; */
 void f1(void);
 
+/*@ terminates \true;
+    exits \false;
+    allocates \nothing; */
 void f2(void)
 {
   f1();
   return;
 }
 
-/*@ requires \true; */
+/*@ requires \true;
+    terminates \true;
+    exits \false;
+    allocates \nothing; */
 int f3(int *a);
 
 /*@ requires \true;
-    assigns *b; */
+    terminates \true;
+    exits \false;
+    assigns *b;
+    allocates \nothing;
+ */
 int f4(int *b)
 {
   int tmp;
diff --git a/tests/spec/oracle/default_spec_mode.1.res.oracle b/tests/spec/oracle/default_spec_mode.1.res.oracle
index e36e713765661974785859139e5a07493fce89a5..cc2910b141b298311f7b9d469a3599ec43e53194 100644
--- a/tests/spec/oracle/default_spec_mode.1.res.oracle
+++ b/tests/spec/oracle/default_spec_mode.1.res.oracle
@@ -1,18 +1,40 @@
 [kernel] Parsing default_spec_mode.i (no preprocessing)
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Neither code nor specification for function f1,
+   generating default specifications (requires) from the prototype
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (terminates) in specification of prototype f1,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (terminates) in specification of prototype f3,
+   generating default specification,
+   see -generated-spec-* options for more info
 /* Generated by Frama-C */
+/*@ requires \false;
+    terminates \false; */
 void f1(void);
 
+/*@ terminates \true;
+    exits \false;
+    assigns \nothing;
+    allocates \nothing; */
 void f2(void)
 {
   f1();
   return;
 }
 
-/*@ requires \true; */
+/*@ requires \true;
+    terminates \false; */
 int f3(int *a);
 
 /*@ requires \true;
-    assigns *b; */
+    terminates \true;
+    exits \false;
+    assigns *b;
+    allocates \nothing;
+ */
 int f4(int *b)
 {
   int tmp;
diff --git a/tests/spec/oracle/default_spec_mode.2.res.oracle b/tests/spec/oracle/default_spec_mode.2.res.oracle
index 281c87b8e9f19209107e14fbbebbee96f1a6a3af..ca5c29a70c2d8f7b67e0a12c2517346007c04971 100644
--- a/tests/spec/oracle/default_spec_mode.2.res.oracle
+++ b/tests/spec/oracle/default_spec_mode.2.res.oracle
@@ -1,14 +1,40 @@
 [kernel] Parsing default_spec_mode.i (no preprocessing)
-[kernel:annot:missing-spec] default_spec_mode.i:31: Warning: 
-  Missing exits in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_mode.i:31: Warning: 
-  Missing allocates in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_mode.i:31: Warning: 
-  Missing terminates in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Neither code nor specification for function f1,
+   generating default specifications (exits) from the prototype
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (assigns) in specification of prototype f1,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (allocates) in specification of prototype f1,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (terminates) in specification of prototype f1,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (exits) in specification of prototype f3,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (assigns) in specification of prototype f3,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (allocates) in specification of prototype f3,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (terminates) in specification of prototype f3,
+   generating default specification,
+   see -generated-spec-* options for more info
 /* Generated by Frama-C */
+/*@ terminates \true;
+    exits \false;
+    assigns \nothing;
+    allocates \nothing; */
 void f1(void);
 
 /*@ terminates \true;
@@ -23,7 +49,11 @@ void f2(void)
 /*@ requires \true;
     terminates \true;
     exits \false;
-    allocates \nothing; */
+    assigns \result, *a;
+    assigns \result \from *a;
+    assigns *a \from *a;
+    allocates \nothing;
+ */
 int f3(int *a);
 
 /*@ requires \true;
diff --git a/tests/spec/oracle/default_spec_mode.3.res.oracle b/tests/spec/oracle/default_spec_mode.3.res.oracle
index 4793b616e3f74d3bb94df64927efb5c3bac299c1..9f1437903e8415ab29e1ea9f45c02ba67057f902 100644
--- a/tests/spec/oracle/default_spec_mode.3.res.oracle
+++ b/tests/spec/oracle/default_spec_mode.3.res.oracle
@@ -1,13 +1,40 @@
 [kernel] Parsing default_spec_mode.i (no preprocessing)
-[kernel:annot:missing-spec] default_spec_mode.i:31: Warning: 
-  Missing terminates in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Neither code nor specification for function f1,
+   generating default specifications (exits) from the prototype
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (assigns) in specification of prototype f1,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (requires) in specification of prototype f1,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (terminates) in specification of prototype f1,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (exits) in specification of prototype f3,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (assigns) in specification of prototype f3,
+   generating default specification,
+   see -generated-spec-* options for more info
+[kernel:annot:missing-spec] default_spec_mode.i:30: Warning: 
+  Missing clauses (terminates) in specification of prototype f3,
+   generating default specification,
+   see -generated-spec-* options for more info
 /* Generated by Frama-C */
+/*@ requires \false;
+    terminates \true;
+    exits \false;
+    assigns \nothing; */
 void f1(void);
 
 /*@ terminates \true;
     exits \false;
-    assigns \nothing;
     allocates \nothing; */
 void f2(void)
 {
@@ -16,7 +43,12 @@ void f2(void)
 }
 
 /*@ requires \true;
-    terminates \false; */
+    terminates \true;
+    exits \false;
+    assigns \result, *a;
+    assigns \result \from *a;
+    assigns *a \from *a;
+ */
 int f3(int *a);
 
 /*@ requires \true;
diff --git a/tests/spec/oracle/default_spec_mode.4.res.oracle b/tests/spec/oracle/default_spec_mode.4.res.oracle
index 86d3a6b91f8ea103b72ddada30792e648361057b..d131bef3d3d34d4a170f09b286deada4b266c4f6 100644
--- a/tests/spec/oracle/default_spec_mode.4.res.oracle
+++ b/tests/spec/oracle/default_spec_mode.4.res.oracle
@@ -1,49 +1,4 @@
 [kernel] Parsing default_spec_mode.i (no preprocessing)
-[kernel:annot:missing-spec] default_spec_mode.i:31: Warning: 
-  Missing exits in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_mode.i:31: Warning: 
-  Missing assigns in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_mode.i:31: Warning: 
-  Missing allocates in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_mode.i:31: Warning: 
-  Missing terminates in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
-/* Generated by Frama-C */
-void f1(void);
-
-/*@ terminates \true;
-    exits \false;
-    allocates \nothing; */
-void f2(void)
-{
-  f1();
-  return;
-}
-
-/*@ requires \true;
-    terminates \true;
-    exits \false;
-    assigns \result, *a;
-    assigns \result \from *a;
-    assigns *a \from *a;
-    allocates \nothing;
- */
-int f3(int *a);
-
-/*@ requires \true;
-    terminates \true;
-    exits \false;
-    assigns *b;
-    allocates \nothing;
- */
-int f4(int *b)
-{
-  int tmp;
-  tmp = f3(b);
-  return tmp;
-}
-
-
+[kernel] User Error: 'wrong_clause' is not a valid key for -generated-spec-custom.
+   Accepted keys are 'exits', 'assigns', 'requires', 'allocates' and 'terminates'.
+[kernel] Frama-C aborted: invalid user input.
diff --git a/tests/spec/oracle/default_spec_mode.5.res.oracle b/tests/spec/oracle/default_spec_mode.5.res.oracle
index 319e013e53fab12b1416810d7531dcc92c5b294a..d131bef3d3d34d4a170f09b286deada4b266c4f6 100644
--- a/tests/spec/oracle/default_spec_mode.5.res.oracle
+++ b/tests/spec/oracle/default_spec_mode.5.res.oracle
@@ -1,45 +1,4 @@
 [kernel] Parsing default_spec_mode.i (no preprocessing)
-[kernel:annot:missing-spec] default_spec_mode.i:31: Warning: 
-  Missing exits in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_mode.i:31: Warning: 
-  Missing assigns in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
-[kernel:annot:missing-spec] default_spec_mode.i:31: Warning: 
-  Missing terminates in specification of prototype f3,
-   generating default specification, see -generated-spec-* options for more info
-/* Generated by Frama-C */
-void f1(void);
-
-/*@ terminates \true;
-    exits \false;
-    allocates \nothing; */
-void f2(void)
-{
-  f1();
-  return;
-}
-
-/*@ requires \true;
-    terminates \true;
-    exits \false;
-    assigns \result, *a;
-    assigns \result \from *a;
-    assigns *a \from *a;
- */
-int f3(int *a);
-
-/*@ requires \true;
-    terminates \true;
-    exits \false;
-    assigns *b;
-    allocates \nothing;
- */
-int f4(int *b)
-{
-  int tmp;
-  tmp = f3(b);
-  return tmp;
-}
-
-
+[kernel] User Error: 'wrong_clause' is not a valid key for -generated-spec-custom.
+   Accepted keys are 'exits', 'assigns', 'requires', 'allocates' and 'terminates'.
+[kernel] Frama-C aborted: invalid user input.
diff --git a/tests/spec/oracle/default_spec_mode.6.res.oracle b/tests/spec/oracle/default_spec_mode.6.res.oracle
deleted file mode 100644
index d131bef3d3d34d4a170f09b286deada4b266c4f6..0000000000000000000000000000000000000000
--- a/tests/spec/oracle/default_spec_mode.6.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing default_spec_mode.i (no preprocessing)
-[kernel] User Error: 'wrong_clause' is not a valid key for -generated-spec-custom.
-   Accepted keys are 'exits', 'assigns', 'requires', 'allocates' and 'terminates'.
-[kernel] Frama-C aborted: invalid user input.
diff --git a/tests/spec/oracle/default_spec_mode.7.res.oracle b/tests/spec/oracle/default_spec_mode.7.res.oracle
deleted file mode 100644
index d131bef3d3d34d4a170f09b286deada4b266c4f6..0000000000000000000000000000000000000000
--- a/tests/spec/oracle/default_spec_mode.7.res.oracle
+++ /dev/null
@@ -1,4 +0,0 @@
-[kernel] Parsing default_spec_mode.i (no preprocessing)
-[kernel] User Error: 'wrong_clause' is not a valid key for -generated-spec-custom.
-   Accepted keys are 'exits', 'assigns', 'requires', 'allocates' and 'terminates'.
-[kernel] Frama-C aborted: invalid user input.