When I compile following source code with command line option -O, gcc stops due
to segmentation fault. I have attached also error message from gcc.

This problem could be fixed by initializing pointers like
   char *p = 0;
   AAA *aaa = 0;
   BBB *bbb = 0;

My system is "Linux 2.6.9-34.0.2.ELsmp #1 SMP Fri Jul 7 10:16:56 CDT 2006 i686
i686 i386 GNU/Linux"

--------source code------------
typedef struct {
   int m1;
   int m2;
} AAA;

typedef struct {
   int n1;
   int n2;
} BBB;

void function()
{
   char *p;
   AAA *aaa;
   BBB *bbb;

   aaa = p + bbb->n2;
   if ((p + aaa->m2) == bbb) {
      aaa->m2 = 0;
   }
}
----------------------------------





-- error message --
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.2-20060722/configure --prefix=/scratch1/sawada/sw/
--program-suffix=4.2
Thread model: posix
gcc version 4.2.0 20060722 (experimental)
 /scratch1/sawada/sw/bin/../libexec/gcc/i686-pc-linux-gnu/4.2.0/cc1 -E -quiet
-v -iprefix /scratch1/sawada/sw/bin/../lib/gcc/i686-pc-linux-gnu/4.2.0/
src/odb.c -mtune=generic -O -fpch-preprocess -o odb.i
ignoring duplicate directory
"/scratch1/sawada/sw//lib/gcc/i686-pc-linux-gnu/4.2.0/include"
ignoring duplicate directory
"/scratch1/sawada/sw//lib/gcc/i686-pc-linux-gnu/4.2.0/../../../../i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /scratch1/sawada/sw/bin/../lib/gcc/i686-pc-linux-gnu/4.2.0/include

/scratch1/sawada/sw/bin/../lib/gcc/i686-pc-linux-gnu/4.2.0/../../../../i686-pc-linux-gnu/include
 /usr/local/include
 /scratch1/sawada/sw//include
 /usr/include
End of search list.
 /scratch1/sawada/sw/bin/../libexec/gcc/i686-pc-linux-gnu/4.2.0/cc1
-fpreprocessed odb.i -quiet -dumpbase odb.c -mtune=generic -auxbase-strip
linux/lib/odb.o -O -version -o odb.s
GNU C version 4.2.0 20060722 (experimental) (i686-pc-linux-gnu)
        compiled by GNU C version 4.2.0 20060722 (experimental).
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: c60a7c38da40d38cd0cf294fac9048c8
src/odb.c: In function 'function':
src/odb.c:17: warning: assignment from incompatible pointer type
src/odb.c:18: warning: comparison of distinct pointer types lacks a cast
gcc4.2: Internal error: Segmentation fault (program cc1)
Please submit a full bug report.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.


-- 
           Summary: Segmentation fault from struct pointers
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: sawada at icepp dot s dot u-tokyo dot ac dot jp


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28569

Reply via email to