On Fri, 10 Feb 2012, Richard Henderson wrote: > Seeing as how Uros is starting to go down the path of cleaning up the > flags handling for x86, I thought I'd go ahead and knock up the idea > that I've been tossing around to help automate the process of building > patterns that match both clobbering the flags and setting the flags to > a comparison.
Sometimes the destination too unless there's overlap, but I don't know how often that matters. > This is far from complete, but it at least shows the direction. Yes, nice! > What I know is missing off the top of my head are: > (2) Can't be usefully used with define_insn_and_split, and no way to tell. > This problem should simply be documented in the .texi file as user error. Not sure I see the problem or the impact of the absence. Would it help if there was a way to match_dup the clobber/set? Maybe as a match_op_flags, the same as match_flags but with the first argument being an assigning operand number. You probably wouldn't want to use this very often.) > (3) Can't be used for x86 add patterns, as the "clobber" version wants the > freedom to use "lea" and the "set flags" version cannot. And there are > different sets of constraints if lea may be used or not. Other targets too, but as it's warty for x86 I hope eventually this'll see improvement... > Comments? Er... very interesting! (The kind of patch you want to play around with to have any further insightful comments.) So I can use match_{operand,whatever} in the second, optional operand to match_flags? No, wait, no use to have anything but a match_dup, hm. I don't see where it'd make sense to have anything else but the default, absent argument. Example? brgds, H-P