> > +           gassign *get_res = gimple_build_assign (lhs, done);
> > +           gsi_replace (gsi, get_res, true);
> > +           *handled_ops_p = true;
> > +         }
> > +         break;
> > +       }
> > +    }
> > +  return NULL_TREE;
> > +}
> > +
> > +/* Main entry point for lowering coroutine FE builtins.  */
> > +
> > +static unsigned int
> > +execute_lower_coro_builtins (void)
> > +{
> > +  struct walk_stmt_info wi;
> > +  gimple_seq body;
> > +
> > +  body = gimple_body (current_function_decl);
> > +  memset (&wi, 0, sizeof (wi));
> > +  walk_gimple_seq_mod (&body, lower_coro_builtin, NULL, &wi);
> > +  gimple_set_body (current_function_decl, body);
>
> it would be nice to elide the function walk for functions not
> containing any CO* stuff (you noted that below for other parts).
> We can spend a bit in struct function noting functions with
> coroutine code inside and set the bit from frontends or from
> the gimplifier for example.  Since it's behind the flag_coroutines
> paywall this can be addressed as followup.

Yes, this bit flag is necessary for following optimization passes, I
wonder which bit you would suggest?

Thanks,
bin

Reply via email to