On 08/18/14 09:35, Ilya Enkovich wrote:
Here is an updated version.

Thanks,
Ilya
--
2014-08-15  Ilya Enkovich  <ilya.enkov...@intel.com>

        * ipa-inline.c (early_inliner): Check edge has summary allocated.
        * tree-inline.c: Include tree-chkp.h.
        (declare_return_variable): Add arg holding
        returned bounds slot.  Create and initialize returned bounds var.
        (remap_gimple_stmt): Handle returned bounds.
        Return sequence of statements instead of a single statement.
        (insert_init_stmt): Add declaration.
        (remap_gimple_seq): Adjust to new remap_gimple_stmt signature.
        (copy_bb): Adjust to changed return type of remap_gimple_stmt.
        (expand_call_inline): Handle returned bounds.  Add bounds copy
        for generated mem to mem assignments.
        * tree-inline.h (copy_body_data): Add fields retbnd and
        assign_stmts.
        * cgraph.c: Include tree-chkp.h.
        (cgraph_redirect_edge_call_stmt_to_callee): Support
        returned bounds.
        * value-prof.c: Include tree-chkp.h.
        (gimple_ic): Support returned bounds.
OK for the trunk.

FWIW, when building up gimple (or RTL if you were ever to do that one day), it's sometimes helpful to the reviewer to show what you're doing. For example, it took me a bit of time to realize that you needed the output from the direct call as an argument to the duplicated RETBND statement. It looked for quite a while like you'd simply made a mistake.

I'm a bit curious why you removed the original RETBND statement in value-prof, only to reinsert it. Is there some reason you needed to do that?

Richi -- in response to your comment about working around a bug earlier in this thread. As Ilya mentioned, he just cloned existing practice in that code for creating the copy of the call.


Jeff

Reply via email to