The problem occurs with 4.0.3. I haven't tested newer compilers, but 3.4.6 and 3.3.6 work. Problem can be avoided by reducing -O2 to -O0.
$ m68k-linux-gcc -O2 -c iso-2022-cn-ext.i In file included from iso-2022-cn-ext.c:654: ../iconv/loop.c: In function 'to_iso2022cn_ext_loop': ../iconv/loop.c:311: warning: pointer targets in passing argument 2 of 'ucs4_to_gb2312' differ in signedness ../iconv/loop.c:311: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l1' differ in signedness ../iconv/loop.c:311: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l2' differ in signedness ../iconv/loop.c:311: warning: pointer targets in passing argument 2 of 'ucs4_to_gb2312' differ in signedness ../iconv/loop.c:311: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l1' differ in signedness ../iconv/loop.c: In function 'to_iso2022cn_ext_loop_single': ../iconv/loop.c:414: warning: pointer targets in passing argument 2 of 'ucs4_to_gb2312' differ in signedness ../iconv/loop.c:414: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l1' differ in signedness ../iconv/loop.c:414: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l2' differ in signedness ../iconv/loop.c:414: warning: pointer targets in passing argument 2 of 'ucs4_to_gb2312' differ in signedness ../iconv/loop.c:414: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l1' differ in signedness ../iconv/skeleton.c: In function 'gconv': ../iconv/skeleton.c:801: internal compiler error: output_operand: invalid expression as operand Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. $ m68k-linux-gcc -O1 -c iso-2022-cn-ext.i In file included from iso-2022-cn-ext.c:654: ../iconv/loop.c: In function 'to_iso2022cn_ext_loop': ../iconv/loop.c:311: warning: pointer targets in passing argument 2 of 'ucs4_to_gb2312' differ in signedness ../iconv/loop.c:311: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l1' differ in signedness ../iconv/loop.c:311: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l2' differ in signedness ../iconv/loop.c:311: warning: pointer targets in passing argument 2 of 'ucs4_to_gb2312' differ in signedness ../iconv/loop.c:311: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l1' differ in signedness ../iconv/loop.c: In function 'to_iso2022cn_ext_loop_single': ../iconv/loop.c:414: warning: pointer targets in passing argument 2 of 'ucs4_to_gb2312' differ in signedness ../iconv/loop.c:414: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l1' differ in signedness ../iconv/loop.c:414: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l2' differ in signedness ../iconv/loop.c:414: warning: pointer targets in passing argument 2 of 'ucs4_to_gb2312' differ in signedness ../iconv/loop.c:414: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l1' differ in signedness In file included from iso-2022-cn-ext.c:658: ../iconv/skeleton.c: In function 'gconv': ../iconv/skeleton.c:801: internal compiler error: output_operand: invalid expression as operand Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. $ m68k-linux-gcc -O0 -c iso-2022-cn-ext.i In file included from iso-2022-cn-ext.c:654: ../iconv/loop.c: In function 'to_iso2022cn_ext_loop': ../iconv/loop.c:311: warning: pointer targets in passing argument 2 of 'ucs4_to_gb2312' differ in signedness ../iconv/loop.c:311: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l1' differ in signedness ../iconv/loop.c:311: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l2' differ in signedness ../iconv/loop.c:311: warning: pointer targets in passing argument 2 of 'ucs4_to_gb2312' differ in signedness ../iconv/loop.c:311: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l1' differ in signedness ../iconv/loop.c: In function 'to_iso2022cn_ext_loop_single': ../iconv/loop.c:414: warning: pointer targets in passing argument 2 of 'ucs4_to_gb2312' differ in signedness ../iconv/loop.c:414: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l1' differ in signedness ../iconv/loop.c:414: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l2' differ in signedness ../iconv/loop.c:414: warning: pointer targets in passing argument 2 of 'ucs4_to_gb2312' differ in signedness ../iconv/loop.c:414: warning: pointer targets in passing argument 2 of 'ucs4_to_cns11643l1' differ in signedness $ m68k-linux-gcc -v Using built-in specs. Target: m68k-linux Configured with: ../gcc-core-4.0.3/configure --prefix=/Volumes/btc-0.11/gcc-4.0.3-binutils-2.17.50.0.2-glibc-2.3.6 --target=m68k-linux --with-sysroot=/Volumes/btc-0.11/gcc-4.0.3-binutils-2.17.50.0.2-glibc-2.3.6/m68k-linux/sysroot --enable-altivec --with-newlib --disable-multilib --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c --enable-shared Thread model: posix gcc version 4.0.3 -- Summary: ICE while building glibc Product: gcc Version: 4.0.3 Status: UNCONFIRMED Severity: major Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: ft01 at webmastery dot com dot au GCC build triplet: powerpc-apple-darwin8.6.0 GCC host triplet: powerpc-apple-darwin8.6.0 GCC target triplet: m68k-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28092