www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 11817] New: Structs with void initialized fields get initialized anyway

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

           Summary: Structs with void initialized fields get initialized
                    anyway
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody puremagic.com
        ReportedBy: bugzilla digitalmars.com



13:38:54 PST ---
----- Code -----
struct S {
    int a;
    ubyte[100] b = void;
}

void test() {
    S s;
    s.a = 3;
}
---------------

The output:

        enter   068h,0
        push    ESI
        push    EDI
        mov     ESI,offset FLAT:_D4foo21S6__initZ
        lea     EDI,-068h[EBP]
        mov     ECX,01Ah
        rep
        movsd
        mov     dword ptr -068h[EBP],3
        pop     EDI
        pop     ESI
        leave
        ret

I.e. the field s.b is initialized. While not pedantically a bug, this
substantially interferes with performance tuning.

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 25 2013
parent d-bugmail puremagic.com writes:
https://d.puremagic.com/issues/show_bug.cgi?id=11817


Maxim Fomin <maxim maxim-fomin.ru> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |maxim maxim-fomin.ru



---
Main question is what to do with aggregate members initialized to void.
Currently default initialized instances have fields which are zeroed. T.init
value is also zeroed, but both behaviors are under question. I think current
practice should be reviewed because the issue tends to pop up instantly in NG
in bugzilla. 

Meanwhile, recent discussions:

http://d.puremagic.com/issues/show_bug.cgi?id=11331

https://d.puremagic.com/issues/show_bug.cgi?id=10643

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Dec 25 2013