On Thu, Jul 28, 2011 at 5:44 AM, Uros Bizjak <ubiz...@gmail.com> wrote: > On Thu, Jul 28, 2011 at 8:30 AM, Uros Bizjak <ubiz...@gmail.com> wrote: > >>> We should only expand strlen to Pmode. Otherwise, we got >>> >>> [hjl@gnu-6 ilp32-38]$ cat x.i >>> char one[50] = "ijk"; >>> int >>> main (void) >>> { >>> return __builtin_strlen (one) != 3; >>> } >>> [hjl@gnu-6 ilp32-38]$ /export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc >>> -B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -S -o x.s -mx32 -O2 x.i >>> x.i: In function ‘main’: >>> x.i:5:27: internal compiler error: in emit_move_insn, at expr.c:3333 >>> Please submit a full bug report, >>> with preprocessed source if appropriate. >>> See <http://gcc.gnu.org/bugs.html> for instructions. >>> >>> OK for trunk? >>> >>> 2011-07-27 H.J. Lu <hongjiu...@intel.com> >>> >>> PR target/47364 >>> * config/i386/i386.md (strlen<mode>): Replace SWI48x with P. >> >> OK. > > Please also backport this fix to release branches. >
I checked it into GCC 4.6. GCC 4.5 is very different and I didn't change it. Thanks. -- H.J.