On 7/8/24 1:25 PM, Patrick O'Neill wrote:
https://gcc.gnu.org/onlinedocs/gccint/Machine-Independent-Predicates.html
| Function: const_int_operand
| This predicate allows any CONST_INT expression that fits in mode.
It is an appropriate choice for an immediate operand that does not allow
a symbol or label.
If I'm reading this right the const_int mode constrains the const_int to
a given mode.
Not super relevant here since mod_s/mod_f is a 6 state enum but it looks
like const_int is at least aware of the mode?
CONST_INTs simply don't have a mode. So I would be leery of that line in
the documentation.
expand pattern insn pattern
operands[1] register -> operands[0] register "=&r"
operands[2] memory -> operands[1] memory "+A"
operands[3] reg_0 -> operands[2] reg_0 "rJ"
operands[4] reg_0 -> operands[3] reg_0 "rJ"
operands[6] const_int -> operands[4] const_int
operands[7] const_int -> operands[5] const_int
Thanks for taking a look - I'll spend some time digging into insn-
recog.cc to get to the bottom of this.
Doing that is a special kind of hell. A few hints :-)
First remove all the #line directives from the generated insn-recog
file, then rebuild just cc1.
If you know the pattern you're trying to match, you can often find it in
the insn-recog* files and work backwards a bit to find a good place for
a breakpoint.
Use a minimal testcase and you can probably put a conditional breakpoint
in the recognizer.
But no matter how you slice it, it's going to be ugly.
Jeff