2016-07-21 Jason Merrill <jason@redhat.com>
+ PR c++/69223
+ * semantics.c (apply_deduced_return_type): Call
+ complete_type_or_else before building the new RESULT_DECL.
+
PR c++/71274
* decl2.c (maybe_instantiate_decl): Split out from mark_used.
(decl_constant_var_p): Use it instead.
if (TREE_TYPE (result) == return_type)
return;
+ if (!processing_template_decl && !VOID_TYPE_P (return_type)
+ && !complete_type_or_else (return_type, NULL_TREE))
+ return;
+
/* We already have a DECL_RESULT from start_preparsed_function.
Now we need to redo the work it and allocate_struct_function
did to reflect the new type. */
if (!processing_template_decl)
{
- if (!VOID_TYPE_P (TREE_TYPE (result)))
- complete_type_or_else (TREE_TYPE (result), NULL_TREE);
bool aggr = aggregate_value_p (result, fco);
#ifdef PCC_STATIC_STRUCT_RETURN
cfun->returns_pcc_struct = aggr;