Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu.
Pushed to trunk as r16-312-g039ba6580f5328.

gcc/analyzer/ChangeLog:
        * sm-malloc.cc (malloc_diagnostic::describe_state_change): Tweak
        the "EXPR is NULL" message for the case where EXPR is a null
        pointer.

gcc/testsuite/ChangeLog:
        * c-c++-common/analyzer/data-model-path-1.c: Check for
        "using NULL here" message.
        * 
c-c++-common/analyzer/null-deref-pr108251-smp_fetch_ssl_fc_has_early.c:
        Likewise.  Check for "return of NULL" message.
        * c-c++-common/analyzer/null-deref-pr108400-SoftEtherVPN-WebUi.c:
        Likewise.
        * gcc.dg/analyzer/data-model-5.c: Likewise.
        * gcc.dg/analyzer/data-model-5b.c: Likewise.
        * gcc.dg/analyzer/data-model-5c.c: Likewise.
        * gcc.dg/analyzer/torture/pr93647.c: Likewise.
---
 gcc/analyzer/sm-malloc.cc                                | 9 +++++++--
 gcc/testsuite/c-c++-common/analyzer/data-model-path-1.c  | 2 +-
 .../null-deref-pr108251-smp_fetch_ssl_fc_has_early.c     | 4 ++--
 .../analyzer/null-deref-pr108400-SoftEtherVPN-WebUi.c    | 2 +-
 gcc/testsuite/gcc.dg/analyzer/data-model-5.c             | 2 +-
 gcc/testsuite/gcc.dg/analyzer/data-model-5b.c            | 2 +-
 gcc/testsuite/gcc.dg/analyzer/data-model-5c.c            | 2 +-
 gcc/testsuite/gcc.dg/analyzer/torture/pr93647.c          | 2 +-
 8 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/gcc/analyzer/sm-malloc.cc b/gcc/analyzer/sm-malloc.cc
index 01862686d58..333dfea47d3 100644
--- a/gcc/analyzer/sm-malloc.cc
+++ b/gcc/analyzer/sm-malloc.cc
@@ -785,8 +785,13 @@ public:
        else
          {
            if (change.m_expr)
-             pp_printf (&pp, "%qE is NULL",
-                        change.m_expr);
+             {
+               if (zerop (change.m_expr))
+                 pp_printf (&pp, "using NULL here");
+               else
+                 pp_printf (&pp, "%qE is NULL",
+                            change.m_expr);
+             }
            else
              pp_printf (&pp, "%qs is NULL",
                         "<unknown>");
diff --git a/gcc/testsuite/c-c++-common/analyzer/data-model-path-1.c 
b/gcc/testsuite/c-c++-common/analyzer/data-model-path-1.c
index d7058ea18e0..0609dc8cb4f 100644
--- a/gcc/testsuite/c-c++-common/analyzer/data-model-path-1.c
+++ b/gcc/testsuite/c-c++-common/analyzer/data-model-path-1.c
@@ -3,7 +3,7 @@
 static int *__attribute__((noinline))
 callee (void)
 {
-  return NULL;
+  return NULL; /* { dg-message "using NULL here" } */
 }
 
 void test_1 (void)
diff --git 
a/gcc/testsuite/c-c++-common/analyzer/null-deref-pr108251-smp_fetch_ssl_fc_has_early.c
 
b/gcc/testsuite/c-c++-common/analyzer/null-deref-pr108251-smp_fetch_ssl_fc_has_early.c
index c5f1fa42e6f..4f04e46695e 100644
--- 
a/gcc/testsuite/c-c++-common/analyzer/null-deref-pr108251-smp_fetch_ssl_fc_has_early.c
+++ 
b/gcc/testsuite/c-c++-common/analyzer/null-deref-pr108251-smp_fetch_ssl_fc_has_early.c
@@ -66,7 +66,7 @@ static inline struct connection *__objt_conn(enum obj_type *t)
 static inline struct connection *objt_conn(enum obj_type *t)
 {
  if (!t || *t != OBJ_TYPE_CONN)
-   return (struct connection *) ((void *)0);
+   return (struct connection *) ((void *)0); /* { dg-message "using NULL here" 
} */
  return __objt_conn(t);
 }
 struct session {
@@ -85,7 +85,7 @@ smp_fetch_ssl_fc_has_early(const struct arg *args, struct 
sample *smp, const cha
  SSL *ssl;
  struct connection *conn;
 
- conn = objt_conn(smp->sess->origin);
+ conn = objt_conn(smp->sess->origin); /* { dg-message "return of NULL" } */
  ssl = ssl_sock_get_ssl_object(conn);
  if (!ssl)
   return 0;
diff --git 
a/gcc/testsuite/c-c++-common/analyzer/null-deref-pr108400-SoftEtherVPN-WebUi.c 
b/gcc/testsuite/c-c++-common/analyzer/null-deref-pr108400-SoftEtherVPN-WebUi.c
index 9dcf7aa31f1..0ebeeff8348 100644
--- 
a/gcc/testsuite/c-c++-common/analyzer/null-deref-pr108400-SoftEtherVPN-WebUi.c
+++ 
b/gcc/testsuite/c-c++-common/analyzer/null-deref-pr108400-SoftEtherVPN-WebUi.c
@@ -60,7 +60,7 @@ void WuExpireSessionKey(WEBUI *wu)
 
        for(i=0; i<LIST_NUM(wu->Contexts); i++)
        {
-               STRMAP_ENTRY *entry = (STRMAP_ENTRY*)LIST_DATA(wu->Contexts, i);
+               STRMAP_ENTRY *entry = (STRMAP_ENTRY*)LIST_DATA(wu->Contexts, 
i); /* { dg-message "'entry' is NULL" } */
                WU_CONTEXT *context = (WU_CONTEXT*)entry->Value; /* { dg-bogus 
"dereference of NULL 'entry'" "PR analyzer/108400" { xfail *-*-* } } */
                if(context->ExpireDate < Tick64())
                {
diff --git a/gcc/testsuite/gcc.dg/analyzer/data-model-5.c 
b/gcc/testsuite/gcc.dg/analyzer/data-model-5.c
index b71bad757a1..78e27521980 100644
--- a/gcc/testsuite/gcc.dg/analyzer/data-model-5.c
+++ b/gcc/testsuite/gcc.dg/analyzer/data-model-5.c
@@ -60,7 +60,7 @@ base_obj *alloc_obj (type_obj *ob_type, size_t sz)
 {
   base_obj *obj = (base_obj *)malloc (sz);
   if (!obj)
-    return NULL;
+    return NULL; /* { dg-message "using NULL here" } */
   obj->ob_type = ob_type;
   obj->ob_refcnt = 1;
   return obj;
diff --git a/gcc/testsuite/gcc.dg/analyzer/data-model-5b.c 
b/gcc/testsuite/gcc.dg/analyzer/data-model-5b.c
index cd6a4df00dd..f66c8c4aefe 100644
--- a/gcc/testsuite/gcc.dg/analyzer/data-model-5b.c
+++ b/gcc/testsuite/gcc.dg/analyzer/data-model-5b.c
@@ -44,7 +44,7 @@ base_obj *alloc_obj (type_obj *ob_type, size_t sz)
 {
   base_obj *obj = (base_obj *)malloc (sz);
   if (!obj)
-    return NULL;
+    return NULL; /* { dg-message "using NULL here" } */
   obj->ob_type = ob_type;
   obj->ob_refcnt = 1;
   return obj;
diff --git a/gcc/testsuite/gcc.dg/analyzer/data-model-5c.c 
b/gcc/testsuite/gcc.dg/analyzer/data-model-5c.c
index ad4e1d2644d..1ce355f7ff2 100644
--- a/gcc/testsuite/gcc.dg/analyzer/data-model-5c.c
+++ b/gcc/testsuite/gcc.dg/analyzer/data-model-5c.c
@@ -38,7 +38,7 @@ base_obj *alloc_obj (type_obj *ob_type, size_t sz)
 {
   base_obj *obj = (base_obj *)malloc (sz);
   if (!obj)
-    return NULL;
+    return NULL; /* { dg-message "using NULL here" } */
   obj->ob_type = ob_type;
   obj->ob_refcnt = 1;
   return obj;
diff --git a/gcc/testsuite/gcc.dg/analyzer/torture/pr93647.c 
b/gcc/testsuite/gcc.dg/analyzer/torture/pr93647.c
index fbfe570780b..194c99aa42d 100644
--- a/gcc/testsuite/gcc.dg/analyzer/torture/pr93647.c
+++ b/gcc/testsuite/gcc.dg/analyzer/torture/pr93647.c
@@ -8,7 +8,7 @@ ky (int);
 void
 wd (void)
 {
-  tz = 0;
+  tz = 0; /* { dg-message "using NULL here" } */
   ky (*tz); /* { dg-warning "dereference of NULL" } */
 }
 
-- 
2.26.3

Reply via email to