diff --git a/lang/cem/cemcom.ansi/ival.g b/lang/cem/cemcom.ansi/ival.g index e7fb3d3f6..5ed7c8850 100644 --- a/lang/cem/cemcom.ansi/ival.g +++ b/lang/cem/cemcom.ansi/ival.g @@ -220,6 +220,12 @@ gen_tphead(tpp, nest) } if (gen_error) return tpp; if (tp->tp_fund == UNION) { + sd = tp->tp_sdef; + if (AHEAD == '{' && + (aggregate_type(sd->sd_type) || + sd->sd_type->tp_fund == UNION)) { + return &(sd->sd_type); + } return gen_tphead(&(tp->tp_sdef->sd_type), nest); } p = new_e_stack();