Current GDC experience and questions

Iain Buclaw ibuclaw at ubuntu.com
Fri Mar 8 04:40:41 PST 2013


On 8 March 2013 11:46, Artur Skawina <art.08.09 at gmail.com> wrote:

> I've been using "gdc (GCC) 4.6.3 20120106 (gdc 0.31 - r748:ab99d67f04c2,
> dmd 2.057)"
> as my only D compiler for the last months, and it's been doing great,
> almost everything
> including LTO works. There have been a few ices/crashes, but mostly with
> invalid code
> or looking front-end related (didn't want to report them until the 4.8
> merge is done).
> But still using that old compiler means working with a different language,
> so I finally
> decided to try out the current GDC versions, and started with the 4.7
> branch.
>
> First difference that i noticed - the frontend version no longer shows up
> in '--version'
> output - is there a way to retrieve it, preferably as a git hash?
>
>
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...


Then the very first app that i tried to compile didn't - failed with an LTO
> related
> error. I need LTO for that one, at least i used to with my old compiler.
> Decided to try the head (4.8) based tree - with similar results;
> apparently LTO no
> longer works at all, even for trivial 'void main(){}' programs. At least
> the error,
> which appears to be the same, got a bit better reported on that branch [1].
> One difference between my old working setup and the new ones is that the
> former is
> not a multilib one; haven't tried a new build w/o multilibs yet.
>
>
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.



> Then I wanted to try to build some other programs using master, w/o LTO.
> Didn't
> really work - the problem is that gcc-pragma-attributes are now /errors/.
> So I'd
> have to modify the sources just to build with the newer compiler - which
> isn't a
> big problem; the fact that I can't then easily go back to using an older
> one is.
> I tried modifying some trivial sources, which were using only
> 'pragma(attribute, noinline)', but couldn't get them to work; the compiler
> keeps
> complaining, 'cc1d: error: unknown attribute noinline'.
> Is 'import gcc.attribute; @attribute("noinline") void f() {}' supposed to
> work?
>
>

Yes and no.

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.


[1]
> $ gdc -flto main.d -o main
> lto1: internal compiler error: in streamer_get_pickled_tree, at
> tree-streamer-in.c:1050
> Please submit a full bug report,
>

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.

-- 
Iain Buclaw

*(p < e ? p++ : p) = (c & 0x0f) + '0';
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/d.gnu/attachments/20130308/6c3d92e2/attachment.html>


More information about the D.gnu mailing list