[Bug rtl-optimization/48696] Horrible bitfield code generation on x86
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Apr 20 12:15:00 GMT 2011
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48696
--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-04-20 12:15:14 UTC ---
(In reply to comment #4)
> (In reply to comment #3)
> > So something changed between 4.0.3 and 4.0.4? Or maybe a typo?
>
> I only have 32bit compilers for both and see, for 4.0.3:
>
> show_bug:
> pushl %ebp
> movl %esp, %ebp
> movl 8(%ebp), %edx
> movl (%edx), %eax
> andl $-64, %eax
> movl %eax, (%edx)
> shrl $6, %eax
> popl %ebp
> movzwl %ax, %eax
> ret
>
> and for 4.0.4:
>
> show_bug:
> pushl %ebp
> movl %esp, %ebp
> movl 8(%ebp), %eax
> andb $-64, (%eax)
> movl (%eax), %eax
> leave
> shrl $6, %eax
> movzwl %ax, %eax
> ret
Actually the 4.0.4 compiler is x86_64, the code with -m32. The 4.0.3
compiler is i586.
/space/rguenther/install/gcc-4.0.3/libexec/gcc/i686-pc-linux-gnu/4.0.3/cc1
-quiet -v t.c -quiet -dumpbase t.c -m32 -mtune=pentiumpro -auxbase t -O2
-version -o t.s
/space/rguenther/install/gcc-4.0.4/libexec/gcc/x86_64-unknown-linux-gnu/4.0.4/cc1
-quiet -v t.c -quiet -dumpbase t.c -m32 -mtune=k8 -auxbase t -O2 -version -o
t.s
but no -march/tune combination makes the bug vanish for the 4.0.4 compiler
(maybe a HWI dependent "optimization")
More information about the Gcc-bugs
mailing list