[gcc r11-6757] Avoid assuming SSA_NAME_IDENTIFIER is nonnull.

Martin Sebor msebor@gcc.gnu.org
Sun Jan 17 22:32:56 GMT 2021


https://gcc.gnu.org/g:192105b6a2a1f24f974de98c933f372b06c1e06d

commit r11-6757-g192105b6a2a1f24f974de98c933f372b06c1e06d
Author: Martin Sebor <msebor@redhat.com>
Date:   Sun Jan 17 15:27:08 2021 -0700

    Avoid assuming SSA_NAME_IDENTIFIER is nonnull.
    
    gcc/c-family/ChangeLog:
    
            * c-pretty-print.c (c_pretty_printer::primary_expression): Don't
            assume SSA_NAME_IDENTIFIER evaluates to nonzero.

Diff:
---
 gcc/c-family/c-pretty-print.c | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/gcc/c-family/c-pretty-print.c b/gcc/c-family/c-pretty-print.c
index 5a51c05fd75..2095d4badf7 100644
--- a/gcc/c-family/c-pretty-print.c
+++ b/gcc/c-family/c-pretty-print.c
@@ -1340,18 +1340,23 @@ c_pretty_printer::primary_expression (tree e)
       if (SSA_NAME_VAR (e))
 	{
 	  tree var = SSA_NAME_VAR (e);
-	  const char *name = IDENTIFIER_POINTER (SSA_NAME_IDENTIFIER (e));
-	  const char *dot;
-	  if (DECL_ARTIFICIAL (var) && (dot = strchr (name, '.')))
+	  if (tree id = SSA_NAME_IDENTIFIER (e))
 	    {
-	      /* Print the name without the . suffix (such as in VLAs).
-		 Use pp_c_identifier so that it can be converted into
-		 the appropriate encoding.  */
-	      size_t size = dot - name;
-	      char *ident = XALLOCAVEC (char, size + 1);
-	      memcpy (ident, name, size);
-	      ident[size] = '\0';
-	      pp_c_identifier (this, ident);
+	      const char *name = IDENTIFIER_POINTER (id);
+	      const char *dot;
+	      if (DECL_ARTIFICIAL (var) && (dot = strchr (name, '.')))
+		{
+		  /* Print the name without the . suffix (such as in VLAs).
+		     Use pp_c_identifier so that it can be converted into
+		     the appropriate encoding.  */
+		  size_t size = dot - name;
+		  char *ident = XALLOCAVEC (char, size + 1);
+		  memcpy (ident, name, size);
+		  ident[size] = '\0';
+		  pp_c_identifier (this, ident);
+		}
+	      else
+		primary_expression (var);
 	    }
 	  else
 	    primary_expression (var);


More information about the Gcc-cvs mailing list