Such chained assignments are legal in ANSI-C, but they are not equivalent to separate assignments.
For a.a=(b.b=3), the a.a= assignment assigns the result of the b.b=3 assignment, and this does not need to be 3.
Well, if b.b happens to be a one bit bitfield, then 3 does not fit into it and a.a gets assigned the cutted (and possibly sign extended) value which was stored in b.b.
Note that if b.b is volatile, we also will get additional code for reading it.
My guess is that your diagnostic message is caused by some condition which was inserted by the compiler to extract the bitfield value. Then the compiler did detects that this condition is known and he issues the diagnostic.
Well, you can raise an service request for not getting this diagnostic in your case, but independently of this, I would not use the chained assignments with bitfields. Well, I personally would not use them at all, it's a not so often seen C construct and therefore may confuse the readers of your code, it does not make the code more efficient, just a few characters shorter.
Daniel
PS: Please try to post complete compilable samples and not just such short snippets where important parts like the used types are missing.