https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113180
Bug ID: 113180 Summary: MIPS: bitops on an long long struct uses ins instead dins Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: syq at gcc dot gnu.org Target Milestone: --- ``` struct yy { int x:32; int a:12; int b:12; int c:4; int d:4; }; struct yy xx (struct yy a, long long b) { a.d = b; return a; } ``` One DINS is enough for this ops, while currently the result is: ``` dsra $2,$4,32 daddiu $sp,$sp,-32 ins $2,$5,28,4 sd $4,16($sp) sw $2,20($sp) ld $3,16($sp) move $2,$0 sll $4,$3,0 dext $4,$4,0,32 dins $2,$4,0,32 dsrl $3,$3,32 dins $2,$3,32,32 jr $31 daddiu $sp,$sp,32 ```