diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 8b8126779bd..5c108dad4d1 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -9077,7 +9077,10 @@ gen_struct_or_union_type_die (type, context_die) else { add_AT_flag (type_die, DW_AT_declaration, 1); - add_incomplete_type (type); + + /* We can't do this for function-local types, and we don't need to. */ + if (TREE_PERMANENT (type)) + add_incomplete_type (type); } } diff --git a/gcc/dwarfout.c b/gcc/dwarfout.c index 9c419a8bca1..0a30a9775cf 100644 --- a/gcc/dwarfout.c +++ b/gcc/dwarfout.c @@ -4439,7 +4439,10 @@ output_type (type, containing_scope) && TREE_CODE (TYPE_CONTEXT (type)) != METHOD_TYPE)) && !finalizing) { - add_incomplete_type (type); + /* We can't do this for function-local types, and we don't need + to. */ + if (TREE_PERMANENT (type)) + add_incomplete_type (type); return; /* EARLY EXIT! Avoid setting TREE_ASM_WRITTEN. */ }