https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78620

            Bug ID: 78620
           Summary: C++11, Padding bytes not zero-intialized when POD is
                    initialized with compiler generated default
                    constructor
           Product: gcc
           Version: 4.8.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dennis.kennedy at roguewave dot com
  Target Milestone: ---

Created attachment 40209
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=40209&action=edit
Source file

When using C++11, I would expect zero-initialization of an entire object,
including padding bytes, when using the default constructor. On x86 machines
this does work fine, but on an aarch64 machine it does not.

x86 output:
no initialization
{793139344, 32733, 807696784, 32733, 802425456, 32733, 807794392, 32733, 0,
140587972306272, 0x7ffe3d0ee5e0}
56
90 58 46 2f dd 7f 00 00 90 79 24 30 dd 7f 00 00 70 0a d4 2f dd 7f 00 00 d8 f6
25 30 dd 7f 00 00 00 00 00 00 00 00 00 00 60 25 26 30 dd 7f 00 00 e0 e5 0e 3d
fe 7f 00 00 
default initialization
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (nil)}
56
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 
zero initialization
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (nil)}
56
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 
placement new initialization
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0xffffffffffffffff}
56
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff 
placement new with default constructor initialization
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (nil)}
56
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 

aarch64 output:
no initialization
{0, 0, 0, 0, 4263944, 0, 0, 0, 0, 0, (nil)}
56
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 10 41 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 
default initialization
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (nil)}
56
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 ff ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 
zero initialization
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (nil)}
56
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 
placement new initialization
{-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0xffffffffffffffff}
56
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
ff ff ff ff 
placement new with default constructor initialization
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (nil)}
56
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00

Reply via email to