On Thu, Jul 10, 2014 at 10:51 AM, Iain Buclaw <ibuc...@gdcproject.org> wrote:
> On 10 July 2014 08:26, Richard Biener <richard.guent...@gmail.com> wrote:
>> On July 10, 2014 8:31:54 AM CEST, Iain Buclaw <ibuc...@gdcproject.org> wrote:
>>>Hi,
>>>
>>>I'm trying to get to the bottom of a bug when using the D front-end
>>>with -flto.
>>>
>>>When compiling anything, it always ICEs at in
>>>streamer_get_pickled_tree, at tree-streamer-in.c.
>>>
>>>The of it appears to be that the LTO frontend seems to never retrieve
>>>what it is expected to find.  But I don't know what could be missing
>>>from the code generation on my side to sort that out.
>>>
>>>
>>>The following minimal test that yields an ICE.
>>>---
>>>extern(C) int test = void;
>>>
>>>
>>>I had set a breakpoint at hash_tree and looked at debug_tree output
>>>from an equivalent program in C++, but nothing stands out as wrong
>>>here to me.
>>>
>>>Any insight would be helpful.
>>>
>>>
>>>// D
>>>DECL_NAME:
>>> <identifier_node 0x7ffff66981b8 test>
>>>
>>>DECL_CONTEXT: (null_tree)
>>
>> This should have a translation unit decl here.
>>
>> Richard.
>
>
> I've been avoiding doing that for the last few years.  Doesn't
> progress any further the problem though.  It looks like the LTO
> front-end ICE's before it even attempts to read the decl context.
>
> Getting an ERROR_MARK when expecting an IDENTIFIER_NODE.
>
> Something not right with the DECL_NAME?

It rather sounds like sth out-of-sync somewhere.  Typical fronend
issues are lang-specific tree codes leaking into LTO but that usually
has a different kind of fallout.

How is the D frontend integrated?  Is it done "regularly", that is,
in-tree?  It's important that the all-tree.def generated at build time
is consistent when building the D and the lto frontend.

Richard.

> Regards
> Iain.

Reply via email to