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