This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/71509] Bitfield causes load hit store with larger store than load
- From: "anton at samba dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Mon, 26 Sep 2016 00:58:59 +0000
- Subject: [Bug middle-end/71509] Bitfield causes load hit store with larger store than load
- Auto-submitted: auto-generated
- References: <bug-71509-4@http.gcc.gnu.org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71509
--- Comment #4 from Anton Blanchard <anton at samba dot org> ---
Created attachment 39683
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=39683&action=edit
Another bitop LHS test case
Here's another issue found in the Linux kernel. Seems like this should be a
single lwz/stw since the union of counter and the bitops completely overlap.
The half word store followed by word load is going to prevent it from store
forwarding.
0000000000000000 <set_page_slub_counters>:
0: 00 00 03 81 lwz r8,0(r3)
4: 20 00 89 78 clrldi r9,r4,32
8: c2 0f 2a 79 rldicl r10,r9,33,31
c: 00 f8 48 51 rlwimi r8,r10,31,0,0
10: 5e 00 2a 55 rlwinm r10,r9,0,1,15
14: 00 00 03 91 stw r8,0(r3)
18: 00 00 83 b0 sth r4,0(r3)
1c: 00 00 42 60 ori r2,r2,0
20: 00 00 23 81 lwz r9,0(r3)
24: 00 04 29 55 rlwinm r9,r9,0,16,0
28: 78 53 29 7d or r9,r9,r10
2c: 00 00 23 91 stw r9,0(r3)
30: 20 00 80 4e blr