Jakub Jelinek <ja...@redhat.com> writes: > The lower subreg pass apparently relies on recog_memoized being performed > on all insns in the first pass (analysis), then it replaces some > of the regs with concat and then again on each insn performs recog_memoized > + extract_insn. This works, because recog_memoized then does nothing, just > returns the memoized number, and extract insn extracts the operands > (which may be now CONCATNs) and then adjusts the insns.
Interesting. For 4.8, it might be worth trying to remove the calls to recog_memoized in the second pass -- or at least replace them with an assert -- just to emphasise what the assumption is. I'll probably never get round to it though. > 2012-02-04 Jakub Jelinek <ja...@redhat.com> > > PR rtl-optimization/52113 > * lower-subreg.c (decompose_multiword_subregs): Call recog_memoized > even for decomposable shift/zext insns. > > * gcc.target/avr/pr52113.c: New test. OK, thanks. Richard