query about commit 666fdc46bc8489 ("RISC-V: Fix bad insn splits with paradoxical subregs")

Vineet Gupta vineetg@rivosinc.com
Fri Nov 4 22:59:58 GMT 2022


Hi Jakub,

I had a question about the aforementioned commit in RV backend.

(define_split
   [(set (match_operand:GPR 0 "register_operand")
	(and:GPR (match_operand:GPR 1 "register_operand")
                (match_operand:GPR 2 "p2m1_shift_operand")))
+   (clobber (match_operand:GPR 3 "register_operand"))]
   ""
-  [(set (match_dup 0)
+  [(set (match_dup 3)
        (ashift:GPR (match_dup 1) (match_dup 2)))

Is there something specific to this split which warrants this or so any 
split patterns involving shifts have this to avoid the shifting by more 
than SUBREG_REG problem.

Also could you please explain where the clobber itself is allocated ?

This came up when discussing the solution to PR/106602 [1]


Thx,
-Vineet

[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106602


More information about the Gcc mailing list