Tested on x86_64-pc-linux-gnu, does this look OK for trunk? -- >8 --
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) <case COMPONENT_REF>: Don't call component_ref_field_offset if the RHS isn't a decl. --- gcc/tree-pretty-print.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/gcc/tree-pretty-print.cc b/gcc/tree-pretty-print.cc index 25d191b10fd..da8dd002a3b 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)) + 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: -- 2.41.0.478.gee48e70a82