From f0316e78295bbc4600a49c222f0883cbbe104000 Mon Sep 17 00:00:00 2001
From: Allan Blanchard <allan.blanchard@cea.fr>
Date: Wed, 9 Jun 2021 16:54:04 +0200
Subject: [PATCH] [wp] Populate terminates true for declarations

---
 src/plugins/wp/cfgAnnot.ml                           |  4 +---
 .../oracle/terminates_call_options.1.res.oracle      | 12 ++++++------
 .../terminates_call_options.1.res.oracle             | 12 ++++++------
 3 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/src/plugins/wp/cfgAnnot.ml b/src/plugins/wp/cfgAnnot.ml
index 39d30a060ee..207a87b2c82 100644
--- a/src/plugins/wp/cfgAnnot.ml
+++ b/src/plugins/wp/cfgAnnot.ml
@@ -215,8 +215,6 @@ let get_terminates_clause kf =
   | None when Kernel_function.is_in_libc kf ->
       if not @@ Wp_parameters.TerminatesFCDeclarations.get ()
       then Assumed Logic_const.pfalse
-      else if not @@ Kernel_function.is_definition kf
-      then Assumed Logic_const.ptrue
       else populate_true ()
   | None when Kernel_function.is_definition kf ->
       if not @@ Wp_parameters.TerminatesDefinitions.get ()
@@ -225,7 +223,7 @@ let get_terminates_clause kf =
   | None ->
       if not @@ Wp_parameters.TerminatesExtDeclarations.get ()
       then Assumed Logic_const.pfalse
-      else Assumed Logic_const.ptrue
+      else populate_true ()
   | Some p ->
       defined p
 
diff --git a/src/plugins/wp/tests/wp_acsl/oracle/terminates_call_options.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle/terminates_call_options.1.res.oracle
index 5a67b6c24f5..d367e2cc027 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle/terminates_call_options.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle/terminates_call_options.1.res.oracle
@@ -6,14 +6,14 @@
   Missing terminates clause for definition, populates 'terminates \true'
 [wp] tests/wp_acsl/terminates_call_options.c:32: Warning: 
   Missing terminates clause for no_spec_generates_goal, populates 'terminates \true'
-[wp] tests/wp_acsl/terminates_call_options.c:24: Warning: 
-  Missing terminates clause on call to declaration, defaults to \true
+[wp] tests/wp_acsl/terminates_call_options.c:17: Warning: 
+  Missing terminates clause for declaration, populates 'terminates \true'
 [wp] tests/wp_acsl/terminates_call_options.c:33: Warning: 
   Missing assigns clause (assigns 'everything' instead)
-[wp] tests/wp_acsl/terminates_call_options.c:39: Warning: 
-  Missing terminates clause on call to exit, defaults to \true
-[wp] tests/wp_acsl/terminates_call_options.c:38: Warning: 
-  Missing terminates clause on call to div, defaults to \true
+[wp] FRAMAC_SHARE/libc/stdlib.h:475: Warning: 
+  Missing terminates clause for exit, populates 'terminates \true'
+[wp] FRAMAC_SHARE/libc/stdlib.h:606: Warning: 
+  Missing terminates clause for div, populates 'terminates \true'
 ------------------------------------------------------------
   Function call_declaration
 ------------------------------------------------------------
diff --git a/src/plugins/wp/tests/wp_acsl/oracle_qualif/terminates_call_options.1.res.oracle b/src/plugins/wp/tests/wp_acsl/oracle_qualif/terminates_call_options.1.res.oracle
index 027ae6502d5..e6da7db09de 100644
--- a/src/plugins/wp/tests/wp_acsl/oracle_qualif/terminates_call_options.1.res.oracle
+++ b/src/plugins/wp/tests/wp_acsl/oracle_qualif/terminates_call_options.1.res.oracle
@@ -6,14 +6,14 @@
   Missing terminates clause for definition, populates 'terminates \true'
 [wp] tests/wp_acsl/terminates_call_options.c:32: Warning: 
   Missing terminates clause for no_spec_generates_goal, populates 'terminates \true'
-[wp] tests/wp_acsl/terminates_call_options.c:24: Warning: 
-  Missing terminates clause on call to declaration, defaults to \true
+[wp] tests/wp_acsl/terminates_call_options.c:17: Warning: 
+  Missing terminates clause for declaration, populates 'terminates \true'
 [wp] tests/wp_acsl/terminates_call_options.c:33: Warning: 
   Missing assigns clause (assigns 'everything' instead)
-[wp] tests/wp_acsl/terminates_call_options.c:39: Warning: 
-  Missing terminates clause on call to exit, defaults to \true
-[wp] tests/wp_acsl/terminates_call_options.c:38: Warning: 
-  Missing terminates clause on call to div, defaults to \true
+[wp] FRAMAC_SHARE/libc/stdlib.h:475: Warning: 
+  Missing terminates clause for exit, populates 'terminates \true'
+[wp] FRAMAC_SHARE/libc/stdlib.h:606: Warning: 
+  Missing terminates clause for div, populates 'terminates \true'
 [wp] 5 goals scheduled
 [wp] [Qed] Goal typed_definition_assigns : Valid
 [wp] [Qed] Goal typed_call_declaration_terminates : Valid
-- 
GitLab