From 192105b6a2a1f24f974de98c933f372b06c1e06d Mon Sep 17 00:00:00 2001 From: Martin Sebor Date: Sun, 17 Jan 2021 15:27:08 -0700 Subject: [PATCH] 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. --- 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); -- 2.30.2