Hi All,
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 ?
regards,
Alex R. Prado