This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/61282] New: vectorisation causes segfaults in a compiled program during access to an int-casted char[] after bool in a struct


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

            Bug ID: 61282
           Summary: vectorisation causes segfaults in a compiled program
                    during access to an int-casted char[] after bool in a
                    struct
           Product: gcc
           Version: 4.7.2
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: v_pimenov at wargaming dot net

Created attachment 32842
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=32842&action=edit
Example source file that produces segfaulting code

When char[] follows a bool in a class, it is 1-byte aligned.

When casted to an int later, gcc 4.7.2 can optimise some operations to use SIMD
instructions that segfault on unaligned access.

In this exact case body of 
> for(i=0;i<bound;i++)
>        sum ^= p[i];

was optimised to

> pxor (%rdi),%xmm0

which segfaults when 

> %rdi % sizeof(void*) != 0

To reproduce compile the attached example source file with
> g++  -fPIC -msse3 -O3 test.cpp
run the executable and observe a SIGSEGV.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]