On 1/18/2012 1:43 AM, Marco Leise wrote:
It is back again! The following struct in my main module increases the
executable size by 10MB with DMD 2.075:

struct Test {
byte abcd[10 * 1024 * 1024];
}

Compiling it and obj2asm'ing the result, and you'll see it goes into the BSS segment:


_TEXT   segment dword use32 public 'CODE'       ;size is 0
_TEXT   ends
_DATA   segment para use32 public 'DATA'        ;size is 12
_DATA   ends
CONST   segment para use32 public 'CONST'       ;size is 0
CONST   ends
_BSS    segment para use32 public 'BSS' ;size is 10485760
_BSS    ends
FLAT    group
        extrn   _D19TypeInfo_S3foo4Test6__initZ

        public  _D3foo4Test6__initZ
FMB     segment dword use32 public 'DATA'       ;size is 0
FMB     ends
FM      segment dword use32 public 'DATA'       ;size is 4
FM      ends
FME     segment dword use32 public 'DATA'       ;size is 0
FME     ends
        extrn   _D15TypeInfo_Struct6__vtblZ

        public  _D3foo12__ModuleInfoZ
_D19TypeInfo_S3foo4Test6__initZ COMDAT flags=x0 attr=x10 align=x0

_TEXT   segment
        assume  CS:_TEXT
_TEXT   ends
_DATA   segment
_D3foo12__ModuleInfoZ:
        db      004h,000h,000h,0ffffff80h,000h,000h,000h,000h   ;........
        db      066h,06fh,06fh,000h     ;foo.
_DATA   ends
CONST   segment
CONST   ends
_BSS    segment
_BSS    ends
FMB     segment
FMB     ends
FM      segment
        dd      offset FLAT:_D3foo12__ModuleInfoZ
FM      ends
FME     segment
FME     ends
_D19TypeInfo_S3foo4Test6__initZ comdat
        dd      offset FLAT:_D15TypeInfo_Struct6__vtblZ
        db      000h,000h,000h,000h     ;....
        db      008h,000h,000h,000h     ;....
        dd      offset FLAT:_D19TypeInfo_S3foo4Test6__initZ[03Ch]
        db      000h,000h,0ffffffa0h,000h,000h,000h,000h,000h   ;........
        db      000h,000h,000h,000h,000h,000h,000h,000h ;........
        db      000h,000h,000h,000h,000h,000h,000h,000h ;........
        db      000h,000h,000h,000h,000h,000h,000h,000h ;........
        db      000h,000h,000h,000h,000h,000h,000h,000h ;........
        db      001h,000h,000h,000h,066h,06fh,06fh,02eh ;....foo.
        db      054h,065h,073h,074h,000h        ;Test.
_D19TypeInfo_S3foo4Test6__initZ ends
        end
-------------------------------------------------

Adding a void main(){} yields an executable of 145,948 bytes.

Reply via email to