On Thu, Dec 1, 2011 at 09:04, Richard Guenther <rguent...@suse.de> wrote:

> The above looks ok to me, but I don't want the
> gimple_call_set_cannot_inline change (if it is in the tree - I have
> not yet recovered from three weeks of vacation).  The edge attribute
> is "recomputed" when necessary.

The original patch is no longer necessary given this change of
semantics we are discussing.  For the original semantics, it was
needed because every change to the statement state must be reflected
in the edge.  If we make the edge attribute invisible in the presence
of a call statement, then it doesn't matter if we update it or not.

The only issue I have now is that if we allow the edge attribute to go
stale, when we save it to a bytecode file, and use it during WPA, we
will be using the stale value.

We could update the edge attribute every time can_inline_edge_p is
called, but I'm not sure I like that.

>> > Which pass did the folding of the stmt but did not adjust the
>> > edge flag?
>>
>> The new call to gimple_call_set_cannot_inline added by this patch:
>
> Sure, but what _pass_ changed the call stmt and called fold_stmt
> on it?  The patch merely changes the flag during folding.

Ah.

#0  gimple_call_set_cannot_inline (s=0x7ffff0b88ab0, inlinable_p=true)
    at pph/gcc/gimple.c:5570
#1  0x00000000008c6d0b in gimple_fold_call (inplace=<optimized out>,
    gsi=<optimized out>)
    at pph/gcc/gimple-fold.c:1121
#2  fold_stmt_1 (gsi=0x7fffffffd580, inplace=false)
    at pph/gcc/gimple-fold.c:1198
#3  0x0000000000a7a775 in fold_marked_statements (first=6,
    statements=0x16c9090)
    at pph/gcc/tree-inline.c:4174
#4  0x0000000000a88a0b in tree_function_versioning (old_decl=<optimized out>,
    new_decl=0x7ffff4be1000, tree_map=<optimized out>, update_clones=224,
    args_to_skip=<optimized out>, blocks_to_copy=0x1a28d30,
    new_entry=0x7ffff04c7958)
    at pph/gcc/tree-inline.c:5259
#5  0x0000000000782c27 in cgraph_function_versioning (
    old_version_node=<optimized out>, redirect_callers=0x0, tree_map=0x0,
    args_to_skip=0x1a25b50, bbs_to_copy=0x1a28d30,
    new_entry_block=0x7ffff04c7958, clone_name=0x10227f4 "part")
    at pph/gcc/cgraphunit.c:2383
#6  0x0000000000ee2452 in split_function (split_point=<optimized out>)
    at pph/gcc/ipa-split.c:1102
#7  execute_split_functions ()
    at pph/gcc/ipa-split.c:1412
#8  0x0000000000990f15 in execute_one_pass (pass=0x1413060)

Line numbers are relative to the PPH branch, which is trunk as of a
couple of weeks ago.  I *think* the bug only triggers with -m32
-march=pentium3, but I am not sure (need to rebuild the .ii file).


Diego.

Reply via email to