<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 8 March 2013 11:46, Artur Skawina <span dir="ltr"><<a href="mailto:art.08.09@gmail.com" target="_blank">art.08.09@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I've been using "gdc (GCC) 4.6.3 20120106 (gdc 0.31 - r748:ab99d67f04c2, dmd 2.057)"<br>
as my only D compiler for the last months, and it's been doing great, almost everything<br>
including LTO works. There have been a few ices/crashes, but mostly with invalid code<br>
or looking front-end related (didn't want to report them until the 4.8 merge is done).<br>
But still using that old compiler means working with a different language, so I finally<br>
decided to try out the current GDC versions, and started with the 4.7 branch.<br>
<br>
First difference that i noticed - the frontend version no longer shows up in '--version'<br>
output - is there a way to retrieve it, preferably as a git hash?<br>
<br></blockquote><div><br></div><div>You can patch it in the gcc/BASE-VER or gcc/DEV-PHASE files, but other than that no.  Alternatively you can use pragma(msg) to get the __VENDOR__ and __VERSION__ strings though...<br>
</div><div> <br><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Then the very first app that i tried to compile didn't - failed with an LTO related<br>
error. I need LTO for that one, at least i used to with my old compiler.<br>
Decided to try the head (4.8) based tree - with similar results; apparently LTO no<br>
longer works at all, even for trivial 'void main(){}' programs. At least the error,<br>
which appears to be the same, got a bit better reported on that branch [1].<br>
One difference between my old working setup and the new ones is that the former is<br>
not a multilib one; haven't tried a new build w/o multilibs yet.<br>
<br></blockquote><div><br></div><div>LTO hasn't been tested, and has changed much between 4.6 and 4.8.  Can only really deal with problems on a case-by-case basis.<br></div><div><br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Then I wanted to try to build some other programs using master, w/o LTO. Didn't<br>
really work - the problem is that gcc-pragma-attributes are now /errors/. So I'd<br>
have to modify the sources just to build with the newer compiler - which isn't a<br>
big problem; the fact that I can't then easily go back to using an older one is.<br>
I tried modifying some trivial sources, which were using only<br>
'pragma(attribute, noinline)', but couldn't get them to work; the compiler keeps<br>
complaining, 'cc1d: error: unknown attribute noinline'.<br>
Is 'import gcc.attribute; @attribute("noinline") void f() {}' supposed to work?<br>
<br></blockquote><div> <br><br></div><div>Yes and no.<br><br></div><div>Yes that is the proposed new way.  No, because no attributes have been hooked into it yet.  This is something that we'll build on in the coming months.<br>
</div><div><br><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
[1]<br>
$ gdc -flto main.d -o main<br>
lto1: internal compiler error: in streamer_get_pickled_tree, at tree-streamer-in.c:1050<br>
Please submit a full bug report,<br>
</blockquote></div><br></div><div class="gmail_extra">The problem with this is it is not easy to tell whether it genuinely is a bug in LTO, or LTO expects GDC to generate code in a peculiar way.<br clear="all"></div><div class="gmail_extra">
<br>-- <br>Iain Buclaw<br><br>*(p < e ? p++ : p) = (c & 0x0f) + '0';
</div></div>