I saw comments in tree-streamer-out.c:
/* Do not stream BLOCK_SOURCE_LOCATION. We cannot handle debug information
for early inlining so drop it on the floor instead of ICEing in
dwarf2out.c. */
streamer_write_chain (ob, BLOCK_VARS (expr), ref_p);
However, what the code is doing seemed contradictory with the comment.
Or am I missing something?
On Tue, Sep 11, 2012 at 8:32 AM, Michael Matz <[email protected]> wrote:
> Hi,
>
> On Tue, 11 Sep 2012, Dehao Chen wrote:
>
>> Looks like we have two choices:
>>
>> 1. Stream out block info, and use LTO_SET_PREVAIL for TREE_CHAIN(t)
>
> This will actually not work correctly in some cases. The problem is, if
> the prevailing decl is already part of another chain (say in another
> block_var list) you would break the current chain. Hence block vars need
> special handling in the lto streamer (another reason why tree_chain is not
> the most clever think to use for this chain). This problem area needs to
> be solved somehow if block info is to be preserved correctly.
>
>> 2. Don't stream out block info for LTO, and still call LTO_NO_PREVAIL
>> (TREE_CHAIN (t)).
>
> That's also a large hammer as it basically will mean no debug info after
> LTO :-/ Sigh, at this point I have no good solution that doesn't involve
> quite some work, perhaps your hack is good enough for the time being,
> though I hate it :)
I got it. Then I'll keep the patch as it is (remove the
LTO_NO_PREVAIL), and work with Honza to resolve the issue he had, and
then we should be good to check in?
Thanks,
Dehao
>
>
> Ciao,
> Michael.