On May 18, 2018 8:03:05 PM GMT+02:00, Paul Koning <paulkon...@comcast.net> wrote: >Gents, > >In some targets, like pdp11 and vax, most instructions can reference >data in memory directly. > >So when I have "if (x < y) ..." I would expect something like this: > > cmpw x, y > bgeq 1f > ... > >What I actually see, with -O2 and/or -Os, is: > > movw x, r0 > movw y, r1 > cmpw r0, r1 > bgeq 1f > ... > >which is both longer and slower. I can't tell why this happens, or how >to stop it. The machine description has "general_operand" so it >doesn't seem to be the place that forces things into registers.
I would expect combine to merge the load and arithmetic and thus it is eventually the target costing that makes that not succeed. Richard. > paul