On Tue, Apr 26, 2011 at 3:39 PM, cirrus75 <cirru...@uol.com.br> wrote:
>
>  Hi,
>
>  Actually, I would like to ask if all this should be tree level optimization 
> or there would be something to do at backend. I am asking because I am trying 
> to write a new backend.

It should be dealt with at the tree level by lowering bitfield accesses.

Richard.

> thanks,
> Alex R. Prado
>
>
> Em 25/04/2011 14:47, Ian Lance Taylor < i...@google.com > escreveu:
> cirrus75  writes:
>
>>  For the fllowing code:
>>
>> typedef struct {
>>  int f1:1;
>>  int f2:1;
>>  int f3:1;
>>  int f4:29;
>> } t1;
>>
>> typedef struct {
>>  int f1:1;
>>  int f2:1;
>>  int f3:30;
>> } t2;
>>
>> t1 s1;
>> t2 s2;
>>
>> void func1(void)
>> {
>>  s1.f1 = s2.f1;
>>  s1.f2 = s2.f2;
>> }
>>
>> we get (x86_64 target):
>>
>>  movzbl  s2(%rip), %edx
>>  movzbl  s1(%rip), %eax
>>  movl    %edx, %ecx
>>  andl    $-4, %eax
>>  andl    $2, %edx
>>  andl    $1, %ecx
>>  orl     %ecx, %eax
>>  orl     %edx, %eax
>>  movb    %al, s1(%rip)
>>  ret
>>
>>
>> Could gcc optimize two or more operations in adjacent bitfields into one 
>> operation ?
>
> This question looks more appropriate for the mailing list
> gcc-h...@gcc.gnu.org rather than the mailing list gcc@gcc.gnu.org.
>
> I agree that this looks like suboptimal code.  Please consider filing a
> missed-optimization bug report.  See http://gcc.gnu.org/bugs/ .  Thanks.
>
> Ian
>
>

Reply via email to