> It looks like this patch was for gcc-4.8; the code has changed a little
> since then.

Well, the baseline is:

eric@polaris:~/build/gcc/native> gcc/xgcc -v
Using built-in specs.
COLLECT_GCC=gcc/xgcc
Target: x86_64-suse-linux
Configured with: /home/eric/svn/gcc/configure --build=x86_64-suse-linux --
prefix=/home/eric/install/gcc --enable-languages=c,c++,objc,obj-
c++,java,fortran,ada --enable-checking=yes,rtl --enable-__cxa_atexit --
disable-nls
Thread model: posix
gcc version 4.9.0 20131122 (experimental) [trunk revision 205244] (GCC)

> I'm having a hard time seeing why this change was made:
> 
>         /* Optimize the access just a bit.  */
> -      if (MEM_P (dest)
> -       && (! SLOW_UNALIGNED_ACCESS (mode, MEM_ALIGN (dest))
> -           || MEM_ALIGN (dest) >= GET_MODE_ALIGNMENT (mode))
> -       && bytepos * BITS_PER_UNIT % GET_MODE_ALIGNMENT (mode) == 0
> -       && bytelen == GET_MODE_SIZE (mode))
> +      else if (MEM_P (dest)
> +            && (!SLOW_UNALIGNED_ACCESS (mode, MEM_ALIGN (dest))
> +                || MEM_ALIGN (dest) >= GET_MODE_ALIGNMENT (mode))
> +            && bytepos * BITS_PER_UNIT % GET_MODE_ALIGNMENT (mode) == 0
> +            && bytelen == GET_MODE_SIZE (mode))
>       emit_move_insn (adjust_address (dest, mode, bytepos), tmps[i]);

Because we're adding a call to store_bit_field and don't want to store twice.

-- 
Eric Botcazou

Reply via email to