Avoid assuming SSA_NAME_IDENTIFIER is nonnull.
authorMartin Sebor <msebor@redhat.com>
Sun, 17 Jan 2021 22:27:08 +0000 (15:27 -0700)
committerMartin Sebor <msebor@redhat.com>
Sun, 17 Jan 2021 22:27:08 +0000 (15:27 -0700)
gcc/c-family/ChangeLog:

* c-pretty-print.c (c_pretty_printer::primary_expression): Don't
assume SSA_NAME_IDENTIFIER evaluates to nonzero.

gcc/c-family/c-pretty-print.c

index 5a51c05fd754633dd09329a0003d4a516553b7b9..2095d4badf7ac009fa1cbd6ad9d6ce7430aafbe3 100644 (file)
@@ -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);