From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2849 invoked by alias); 6 May 2003 19:16:02 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 2804 invoked by uid 71); 6 May 2003 19:16:01 -0000 Resent-Date: 6 May 2003 19:16:01 -0000 Resent-Message-ID: <20030506191601.2803.qmail@sources.redhat.com> Resent-From: gcc-gnats@gcc.gnu.org (GNATS Filer) Resent-Cc: gcc-prs@gcc.gnu.org, gcc-bugs@gcc.gnu.org Resent-Reply-To: gcc-gnats@gcc.gnu.org, jingye@ca.ibm.com Received: (qmail 1895 invoked by uid 48); 6 May 2003 19:15:18 -0000 Message-Id: <20030506191518.1894.qmail@sources.redhat.com> Date: Tue, 06 May 2003 19:16:00 -0000 From: jingye@ca.ibm.com Reply-To: jingye@ca.ibm.com To: gcc-gnats@gcc.gnu.org X-Send-Pr-Version: gnatsweb-2.9.3 (1.1.1.1.2.31) Subject: c++/10645: Incorrect 64bit double alignment in nested struct X-SW-Source: 2003-05/txt/msg00413.txt.bz2 List-Id: >Number: 10645 >Category: c++ >Synopsis: Incorrect 64bit double alignment in nested struct >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: sw-bug >Submitter-Id: net >Arrival-Date: Tue May 06 19:16:01 UTC 2003 >Closed-Date: >Last-Modified: >Originator: jingye@ca.ibm.com >Release: gcc version 3.2 >Organization: >Environment: System Type: Linux Version 2.4.19 SuSE SLES 8 (ppc) - Kernel 2.4.19-ul1-ppc64-SMP (36). GNU assembler version 2.12.90.0.15 (powerpc-suse-linux) using BFD version 2.12.9 0.0.15 20020717 (SuSE) Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local- prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/us r/lib --enable-languages=c,c++,f77,objc,java,ada --enable-libgcj --with-gxx-incl ude-dir=/usr/include/g++ --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit powerpc-suse-linux Thread model: posix gcc version 3.2 >Description: in the example below, the struct A has only double as its member and is 8-byte aligned in 64bit. struct B has struct A as it's member, however, is only 4-byte aligned. When we add aother member after double in struct A, struct B becomes 8-byte aligned. /*test case t.c*/ struct A{ double a1; /*int a2;*/ }sa; struct B{ char b1; struct A b2; }sb; int main() { printf("alignof sa=%d\n",__alignof__(sa)); printf("sizeof sa=%d\n",sizeof(sa)); printf("alignof sb=%d\n",__alignof__(sb)); printf("sizeof sb=%d\n",sizeof(sb)); } >How-To-Repeat: /opt/cross/bin/powerpc64-linux-g++ t.c a.out >Fix: >Release-Note: >Audit-Trail: >Unformatted: