This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug other/25778] New: weird struct size.
- From: "pluto at agmk dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 12 Jan 2006 23:41:24 -0000
- Subject: [Bug other/25778] New: weird struct size.
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
typedef unsigned char u8;
typedef unsigned int u32;
typedef unsigned long long u64;
struct x
{
u8 x1[64];
u64 x2;
u32 x3;
};
#include <stdio.h>
int main()
{
struct x x;
printf("sizeof(x) = %2u\n", sizeof(x));
printf("offset(M.x1) = %2u\n", (unsigned)&x.x1 - (unsigned)&x);
printf("sizeof(M.x1) = %2u\n", sizeof(x.x1));
printf("offset(M.x2) = %2u\n", (unsigned)&x.x2 - (unsigned)&x);
printf("sizeof(M.x2) = %2u\n", sizeof(x.x2));
printf("offset(M.x3) = %2u\n", (unsigned)&x.x3 - (unsigned)&x);
printf("sizeof(M.x3) = %2u\n", sizeof(x.x3));
return 0;
}
with `-O2` I get:
sizeof(x) = 80 <= why not 76 ?
offset(M.x1) = 0
sizeof(M.x1) = 64
offset(M.x2) = 64
sizeof(M.x2) = 8
offset(M.x3) = 72
sizeof(M.x3) = 4
with `-O2 -fpack-struct`
sizeof(x) = 76
offset(M.x1) = 0
sizeof(M.x1) = 64
offset(M.x2) = 64
sizeof(M.x2) = 8
offset(M.x3) = 72
sizeof(M.x3) = 4
why ppc (without -fpack-struct) extends this structure to 80 bytes?
--
Summary: weird struct size.
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: other
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pluto at agmk dot net
GCC build triplet: ppc-linux
GCC host triplet: ppc-linux
GCC target triplet: ppc-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25778