On 03/08/13 13:40, Iain Buclaw wrote:
> On 8 March 2013 11:46, Artur Skawina <art.08...@gmail.com 
> <mailto:art.08...@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...

I have many builds installed, was looking for a way to easily identify which 
one is
currently used. Previously i could run 'gdc --version'. It's not a problem, just
something that was nice to have.


>     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.

The only bit of info i can add is that the 4.6 based build works, but a 4.7 
based one
already fails (in the same place as the 4.8 version, only w/o the nice 
backtrace). It
happens with an empty main, which would be the simplest testcase.


>     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.

That unfortunately means that in the mean time there's no way to access the 
built-in
attributes. While typing this email I tried reverting d47d5d864a, but that's not
enough (pragma-attributes are accepted, but silently ignored); I'm afraid that
reverting more would result in conflicts with the /new way/; if not now, then 
in the
future, so it's not something I'd like to have to carry locally. Would it be 
possible
to postpone the pragma removal to after a working alternative exists?

artur

Reply via email to