We are developing this feature for x86_64 I want to see which registers are being used by the current function for returning a value or as arguments. I traverse the rtl looking for clobbered registers, but I don't know how to find which registers are arguments from the current function and which are used for storing the return value. How do you suggest to do this?
Thanks 2016-03-04 9:23 GMT-03:00 Segher Boessenkool <seg...@kernel.crashing.org>: > On Tue, Mar 01, 2016 at 10:27:00AM +0100, Richard Biener wrote: >> > We were thinking on making a function attribute that ensures that non >> > necessary registers, or stack frames used by the function will be >> > correctly cleared before returning. >> > We think in implementing for x86_64 as a first work. >> > For this we are trying to modify the epilogue generation. Here we should >> > have the information of which registers this function used, and the size >> > of the stack frame to clean. The downside of this is that will be >> > architecture dependent. >> > Do you think this is a good idea? Do you suggest something else? >> >> I think you can't avoid doing architecture specific changes here. >> Note that on x86_64 you probably want to force >> -maccumulate-outgoing-args >> to avoid the use of push/pop and have the stack frame freeing fully in >> the epilogue. > > You'll also need to disable shrink-wrapping for that function. > > > Segher