[Bug c++/78620] New: C++11, Padding bytes not zero-intialized when POD is initialized with compiler generated default constructor
dennis.kennedy at roguewave dot com
gcc-bugzilla@gcc.gnu.org
Wed Nov 30 19:05:00 GMT 2016
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
More information about the Gcc-bugs
mailing list