www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 2710] New: dmd2/src/druntime/src/../import/std/intrinsic.di misses pure and nothrow in signatures

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2710

           Summary: dmd2/src/druntime/src/../import/std/intrinsic.di misses
                    pure and nothrow in signatures
           Product: D
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: baryluk smp.if.uj.edu.pl


When compiling druntime with dmd2, gc/bacis/gcbits.d calls std.intrinsic.btr,
which signatures is in ../import/std/intrinsic.di compiler don't emit proper
code.

Considering that file src/dmd/toir.c have on line 380 signature
9intrinsic3btrFNbPkkZi and that inspecting object file of gcbits.o I concluded
that D compiler isn't emiting proper code because intrinsic.di had missing
"nothrow and pure" keywords in few places.

Druntime compiles (because there can be unresolved symbls), but then compiling
phobos' unittest fails (because it links against everything and fails to find
9intrinsic3btrFPkkZi (which is for DMD1, and defined nowhere).

Solution, edit ../import/std/intrinsic.di and ensure there are this signatures
(as in phobos sources).

nothrow:

pure nothrow int bsf( uint v );
pure nothrow int bsr( uint v );
pure nothrow int bt( const uint* p, uint bitnum );
pure uint bswap( uint v );


I also concluded that intrinsic.di wasn't generated automatically from phobos'
sources (-H switch), because dmd is generating proper (and much more compacted)
version of code. This is rationall because there is no source files for it
(intrinsic.d in phobos contains only declarations, but proper ones).


-- 
Mar 06 2009
parent d-bugmail puremagic.com writes:
http://d.puremagic.com/issues/show_bug.cgi?id=2710


baryluk smp.if.uj.edu.pl changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED
            Summary|dmd2/src/druntime/src/../imp|dmd2/src/druntime/src/../imp
                   |ort/std/intrinsic.di misses |ort/std/intrinsic.di misses
                   |pure and nothrow in         |pure and nothrow in
                   |signatures                  |signatures





Ok, I think druntime version r107 solved this problem.


-- 
Mar 06 2009