On Tue, Jan 21, 2020 at 10:12:21AM +0000, Iain Sandoe wrote: > @@ -633,7 +634,13 @@ build_co_await (location_t loc, tree a, > suspend_point_kind suspend_kind) > else > o = a; /* This is most likely about to fail anyway. */ > > - tree o_type = complete_type_or_else (TREE_TYPE (o), o); > + tree o_type = TREE_TYPE (o); > + if (o_type && !VOID_TYPE_P (o_type) && !COMPLETE_TYPE_P (o_type))
What is the !COMPLETE_TYPE_P for? Isn't the point of complete_type_or_else checking that itself, if it is complete, just return the passed argument, if it is not, try to complete it and return the passed in argument if successful and NULL otherwise? > + o_type = complete_type_or_else (o_type, o); > + > + if (!o_type) > + return error_mark_node; > + Jakub