This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Without TERing these two instructions expand won't see both memory references at the same time, and hence generate separate load and store instruction, instead of a mem-mem move if that's supported on your target (I assume so, otherwise you wouldn't have noticed).
The question is, why doesn't combine merge the two separate load and store insns again into one?
The situation is a bit more complex. When we see (set (mem:HI (reg:HI 0)) (mem:HI (reg:HI 1)))
we have a rule that expands this to 4 insn (set (reg:QI AL) (mem:QI (plus (reg:HI 1) (const_int 1)))) (set (reg:QI AH) (mem:QI (reg:HI 1))) (set (mem:QI (plus (reg:HI 0) (const_int 1))) (reg:QI AL)) (set (mem:QI (reg:HI 0)) (reg:QI AH))
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |