/* Following code give ICE with -O2 or -O3 ice.c: In function main: ice.c:46: internal compiler error: in expand_expr_real_1, at expr.c:9314
works OK with -O1 and no warnings given */ extern char *strcpy(char *s1, const char *s2); /* #include <string.h> */ typedef struct _ccy_name CCY_NAME; #define CURRENCY_NAME_LENGTH 3 struct _ccy_name { char CcyName[CURRENCY_NAME_LENGTH + 1]; }; int main(int argc, char *argv[]) { char const *ccy1; char const *ccy2; CCY_NAME ccy_list[9]; long i; if (argc > 1) { ccy1 = argv[1]; } else { ccy1 = "EUR"; } if (argc > 2) { ccy2 = argv[2]; } else { ccy2 = "USD"; } strcpy(ccy_list[0].CcyName, ccy1); strcpy(ccy_list[1].CcyName, ccy2); for(i = 2; i < argc - 2 && i < 8; i++) { strcpy(ccy_list[i].CcyName, argv[i + 1]); } ccy_list[i].CcyName[0] = '\0'; return 0; } /* $ gcc-4.4 -v Using built-in specs. Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 4.4.1-4' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-objc-gc --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.4.1 (Debian 4.4.1-4) */ -- Summary: ICE with -O2 - internal compiler error: in expand_expr_real_1, at expr.c:9314 Product: gcc Version: 4.4.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: richardn26 at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42049