https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97417
jiawei <jiawei at iscas dot ac.cn> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jiawei at iscas dot ac.cn --- Comment #2 from jiawei <jiawei at iscas dot ac.cn> --- (In reply to Jim Wilson from comment #1) > Comparing with the ARM port, I see that in the ARM port, the movqi pattern > emits > (insn 8 7 9 2 (set (reg:SI 117) > (zero_extend:SI (mem/v/c:QI (reg/f:SI 115) [1 active+0 S1 A8]))) > "tmp.c\ > ":7:7 -1 > (nil)) > (insn 9 8 10 2 (set (reg:QI 116) > (subreg:QI (reg:SI 117) 0)) "tmp.c":7:7 -1 > (nil)) > and then later it combines the subreg operation with the following > zero_extend and cancels them out. > > Whereas in the RISC-V port, the movqi pattern emits > (insn 9 7 10 2 (set (reg:QI 76) > (mem/v/c:QI (lo_sum:DI (reg:DI 74) > (symbol_ref:DI ("active") [flags 0xc4] <var_decl > 0x7f9f0310312\ > 0 active>)) [1 active+0 S1 A8])) "tmp.c":7:7 -1 > (nil)) > and then combine refuses to combine the following zero-extend with this insn > as the memory operation is volatile. > > So it seems we need to rewrite the RISC-V port to make movqi and movhi zero > extend to si/di mode and then subreg. That probably will require cascading > changes to avoid code size and performance regressions. > > Looks like a tractable small to medium size project, but will need to wait > for a volunteer to work on it. Hi Jim, My name is Jiawei Chen. I am from the PLCT Lab. I had recurrented this bug, and want to try to help fixing this bug. What should I modify,is there any suggestions?