[Bug c++/64236] New: Missing alignment

wolfgang.roehrl@gi-de.com gcc-bugzilla@gcc.gnu.org
Tue Dec 9 12:19:00 GMT 2014


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

            Bug ID: 64236
           Summary: Missing alignment
           Product: gcc
           Version: 4.8.3
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: wolfgang.roehrl@gi-de.com

Hi,
I would like to post a bug report for the GNU C/C++ compiler 4.8.3.
We use the compiler to generate code for a PowerPC processor.
Invokation line for the GNU C++ compiler:

ccppc -c -x c++ -std=c++11 -Wall -Werror -g -mcpu=8540 -meabi
      -ftls-model=local-exec -msdata=sysv -fno-common -mspe -mabi=spe
      -mfloat-gprs=double -mbig -mmultiple -mno-string -misel -mstrict-align
      -fverbose-asm -fno-exceptions -fno-rtti -fgcse-sm -fno-section-anchors
      -ftemplate-backtrace-limit=20 -G 8 -O3
      -I<some include paths>
      -D<some #define's>
      X.CPP -oX.O


// file X.CPP

#define SIZE_DATA_CACHE_BLOCK 32u

struct S
{ double d; };

struct alignas(sizeof(S)) S1
{ char d[sizeof(S)]; };

struct alignas(SIZE_DATA_CACHE_BLOCK) alignas(sizeof(S)) S2
{ char d[sizeof(S)]; };


alignas(S) char s1[sizeof(S)];
alignas(SIZE_DATA_CACHE_BLOCK) alignas(S) char s2[sizeof(S)];
S1 s3;
S2 s4;



An inspection of the generated assembler file (see below) shows the following
alignments:
. s1: alignment = 8
. s2: alignment = 32
. s3: alignment = 8
. s4: alignment = 8 ???

I think that s4 should also be aligned on a 32-byte boundary (C++11 standard,
7.6.2/4).


Following is the generated assembler file:

 .globl s4
 .section ".sbss","aw",@nobits
 .align 3    <--- 8-byte alignment ???
s4:
 .zero 8
 .size s4, 8
 .type s4, @object
 .globl s3
 .align 3    <--- 8-byte alignment
s3:
 .zero 8
 .size s3, 8
 .type s3, @object
 .globl s2
 .align 5    <--- 32-byte alignment
s2:
 .zero 8
 .size s2, 8
 .type s2, @object
 .globl s1
 .align 3    <--- 8-byte alignment
s1:
 .zero 8
 .size s1, 8
 .type s1, @object



Kind regards
W. Roehrl



More information about the Gcc-bugs mailing list