From: Patrick Palka Date: Fri, 11 Aug 2023 16:17:24 +0000 (-0400) Subject: tree-pretty-print: handle COMPONENT_REF with non-decl RHS X-Git-Tag: basepoints/gcc-15~6983 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a4238f6db879abc048282d2d26442e68dc9427ea;p=thirdparty%2Fgcc.git tree-pretty-print: handle COMPONENT_REF with non-decl RHS In the C++ front end, a COMPONENT_REF's second operand isn't always a decl (at least at template parse time). This patch makes the generic pretty printer not ICE when printing such a COMPONENT_REF. gcc/ChangeLog: * tree-pretty-print.cc (dump_generic_node) : Don't call component_ref_field_offset if the RHS isn't a decl. --- diff --git a/gcc/tree-pretty-print.cc b/gcc/tree-pretty-print.cc index 25d191b10fd7..51a213529d19 100644 --- a/gcc/tree-pretty-print.cc +++ b/gcc/tree-pretty-print.cc @@ -2482,14 +2482,16 @@ dump_generic_node (pretty_printer *pp, tree node, int spc, dump_flags_t flags, if (op_prio (op0) < op_prio (node)) pp_right_paren (pp); pp_string (pp, str); - dump_generic_node (pp, TREE_OPERAND (node, 1), spc, flags, false); - op0 = component_ref_field_offset (node); - if (op0 && TREE_CODE (op0) != INTEGER_CST) - { - pp_string (pp, "{off: "); - dump_generic_node (pp, op0, spc, flags, false); + op1 = TREE_OPERAND (node, 1); + dump_generic_node (pp, op1, spc, flags, false); + if (DECL_P (op1)) /* Not always a decl in the C++ FE. */ + if (tree off = component_ref_field_offset (node)) + if (TREE_CODE (off) != INTEGER_CST) + { + pp_string (pp, "{off: "); + dump_generic_node (pp, off, spc, flags, false); pp_right_brace (pp); - } + } break; case BIT_FIELD_REF: