On Thu, May 08, 2014 at 10:15:06AM -0700, Mike Stump wrote: > So, I was wondering about patterns like: > > (define_insn_and_split "*setcc_di_1" > [(set (match_operand:DI 0 "register_operand" "=q") > (match_operator:DI 1 "ix86_comparison_operator" > [(reg FLAGS_REG) (const_int 0)]))] > "TARGET_64BIT && !TARGET_PARTIAL_REG_STALL" > "#" > "&& reload_completed" > [(set (match_dup 2) (match_dup 1)) > (set (match_dup 0) (zero_extend:DI (match_dup 2)))] > { > PUT_MODE (operands[1], QImode); > > operands[2] = gen_lowpart (QImode, operands[0]); > > }) > > on the x86. X86 is an always LRA port, and with LRA it seems > reload_completed is always 0, and so that disables these splitters?
No. reload_completed flag is set after reload or LRA has completed, see lra.c. It is only reload_in_progress flag that is never true for LRA, where it has lra_in_progress instead. Jakub