This is seen using r139367 on Ubuntu Hardy on ia32. Also see bug 36984. regehr@john-home:~/volatile/tmp9$ current-gcc -O3 small.c small.c: In function ‘func_2’: small.c:24: internal compiler error: in df_ref_chain_change_bb, at df-scan.c:1828 Please submit a full bug report, with preprocessed source if appropriate. See for instructions. regehr@john-home:~/volatile/tmp9$ current-gcc -v Using built-in specs. Target: i686-pc-linux-gnu Configured with: ../configure --program-prefix=current- --enable-languages=c,c++ --prefix=/home/regehr : (reconfigured) ../configure --program-prefix=current- --enable-languages=c,c++ --prefix=/home/regehr : (reconfigured) ../configure --program-prefix=current- --enable-languages=c,c++ --prefix=/home/regehr Thread model: posix gcc version 4.4.0 20080821 (experimental) (GCC) regehr@john-home:~/volatile/tmp9$ cat small.c typedef signed char int8_t; typedef int int32_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t; static inline unsigned long int div_rhs (long int rhs) { if (rhs) return 1; return rhs; } uint32_t g_65; int32_t g_122; int32_t func_64 (uint32_t p_66, uint16_t p_67); int32_t func_86 (uint16_t p_87); int32_t func_88 (uint16_t p_89); int32_t func_2 (int8_t p_4) { int32_t l_450; for (l_450 = 0; (l_450 < 8); ++l_450) func_43 (func_60 (func_64 (func_86 (1), 1), 1), 1, 1); } int32_t func_64 (uint32_t p_66, uint16_t p_67) { for (g_65 = 0; 0; ++g_65) { } } int32_t func_86 (uint16_t p_87) { func_88 (g_122); } int32_t func_88 (uint16_t p_89) { if (0 / div_rhs (func_91 (1, 1))) { } else if (p_89) for (g_65 = 1; 1; g_65 -= 1) return 1; } -- Summary: ice in df_ref_chain_change_bb Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: regehr at cs dot utah dot edu GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37183