i386 ESP adjustments opt.
Fri Apr 7 03:12:00 GMT 2000
> > + ;; Convert epilogue deallocator to pop.
> > + (define_peephole2
> > + [(match_scratch:SI 0 "r")
> > + (parallel [(set (reg:SI 7) (plus:SI (reg:SI 7) (const_int 4)))
> > + (set (reg:SI 6) (reg:SI 6))
> > + (clobber (reg:CC 17))])]
> > + "optimize_size || !TARGET_ADD_ESP_4"
> > + [(parallel [(set (match_dup 0) (mem:SI (reg:SI 7)))
> > + (set (reg:SI 7) (plus:SI (reg:SI 7) (const_int 4)))])]
> > + "")
> Um, this seems distinctly non-safe. You've lost the tie between
> esp and ebp. Were you intending a blockage as you used for the
> two pop cases?
Huh, you are right. I've probably took some older version of my patch, since I
remember, I've solved the problem originaly by adding new push and pop patterns
with the (set (reg:SI 6) (reg:SI 6)) and use them for the expanders.
Perhaps this is more sensible solution, how many optimizations we may
miss by the blockage appearing in the rtl chain?
More information about the Gcc-patches