http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57872
Bug ID: 57872 Summary: ICE occurs for cross-compile of PPC target with e500v2 core Product: gcc Version: 4.8.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: super.lzh at gmail dot com Created attachment 30488 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30488&action=edit Preprocessed file [Issue] When I use gcc-4.8.1 to cross-compile below C program for PPC target with e500v2 core, following ICE appears, same C file can be compiled correctly for targets with e500mc/e5500/x86 core. $ powerpc-poky-linux-gnuspe-gcc -m32 -mcpu=8548 -mabi=spe -mspe -mfloat-gprs=double -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed --sysroot=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/p1022ds -O2 -pipe -g -feliminate-unused-debug-types -g -O2 -fno-strict-aliasing -pipe -Wall -I../../../../../include -I../../../../../include -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -L../../../../../lib my_test.c -lm -o my_test my_test.c: In function 'create_Result_file': my_test.c:43:1: internal compiler error: in change_address_1, at emit-rtl.c:2019 } ^ Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. $ More observation: during my trial, when the array size is equal to 4096 or smaller than 4096, compile can pass, otherwise build will fail. [Source file] #include <float.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <limits.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <sys/signal.h> #include <math.h> #define M_PIl 3.1415926535897932384626433832795029L int create_Result_file() { int i, nbVal; double tabR[20000], Inc; char *F_name; int fp; F_name = "result_file"; nbVal = 20000; Inc = (2 * M_PIl) / nbVal; for (i = 0; i < nbVal; i++) { tabR[i] = hypot(cos(Inc * i), sin(Inc * i)); } fp = open(F_name, O_RDWR | O_CREAT | O_TRUNC, 0777); if (!fp) { printf("error opening file"); close(fp); return -1; } else { for (i = 0; i < nbVal; i++) { write(fp, &tabR[i], sizeof(double)); } close(fp); return 0; } } int main(int argc, char *argv[]) { create_Result_file(); return 0; } [Preprocessed file] Attached my_test.i [gcc version] $ powerpc-poky-linux-gnuspe-gcc -v Using built-in specs. COLLECT_GCC=powerpc-poky-linux-gnuspe-gcc COLLECT_LTO_WRAPPER=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/usr/libexec/ppce500v2-poky-linux-gnuspe/gcc/powerpc-poky-linux-gnuspe/4.8.1/lto-wrapper Target: powerpc-poky-linux-gnuspe Configured with: /local/home/b19537/workspace/poky-os/p1022ds/tmp/work-shared/gcc-4.8.1-r0/gcc-4.8.1/configure --build=x86_64-linux --host=x86_64-linux --target=powerpc-poky-linux-gnuspe --prefix=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/usr --exec_prefix=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/usr --bindir=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/usr/bin/ppce500v2-poky-linux-gnuspe --sbindir=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/usr/bin/ppce500v2-poky-linux-gnuspe --libexecdir=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/usr/libexec/ppce500v2-poky-linux-gnuspe --datadir=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/usr/share --sysconfdir=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/etc --sharedstatedir=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/com --localstatedir=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/var --libdir=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/usr/lib/ppce500v2-poky-linux-gnuspe --includedir=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/usr/include --oldincludedir=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/usr/include --infodir=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/usr/share/info --mandir=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/usr/share/man --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux --with-gnu-ld --enable-shared --enable-languages=c,c++ --enable-threads=posix --disable-multilib --enable-c99 --enable-long-long --enable-symvers=gnu --enable-libstdcxx-pch --program-prefix=powerpc-poky-linux-gnuspe- --without-local-prefix --enable-lto --enable-libssp --disable-bootstrap --disable-libmudflap --with-system-zlib --with-linker-hash-style=gnu --enable-linker-build-id --with-ppl=no --with-cloog=no --enable-checking=release --enable-cheaders=c_global --enable-e500_double --with-gxx-include-dir=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/p1022ds/usr/include/c++ --with-sysroot=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/p1022ds --with-build-sysroot=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/p1022ds --enable-targets=powerpc64 --enable-poison-system-directories --disable-libunwind-exceptions --with-mpfr=/local/home/b19537/workspace/poky-os/p1022ds/tmp/sysroots/x86_64-linux/usr --with-system-zlib --disable-nls --with-long-double-128 Thread model: posix gcc version 4.8.1 (GCC)