Re: Preserving the argument spills for GDB

2009-11-12 Thread Jean Christophe Beyler
Of course: mov r6 = InputReg1 mov InputReg1 = InputReg2 mov InputReg2 = tmp should read: mov r6 = InputReg1 mov InputReg1 = InputReg2 mov InputReg2 = r6 Sorry about that. Jc On Thu, Nov 12, 2009 at 12:07 PM, Jean Christophe Beyler wrote: > Dear all, > > As I continue to work on this I have f

Re: Preserving the argument spills for GDB

2009-11-12 Thread Jean Christophe Beyler
Dear all, As I continue to work on this I have found something that is surprising. I wrote this code : int foo (int argc, int argv) { bar (argv, argc); return 0; } On my architecture, this is transformed into the following assembly code: mov r6 = InputReg1 mov InputReg1 = InputReg2 mov I

Re: Preserving the argument spills for GDB

2009-11-09 Thread Jean Christophe Beyler
I actually already did put it as a fixed register using the FIXED_REGISTER macro. However, I have not yet tested the EPILOGUE_USES because it said that : "The stack and frame pointer are already assumed to be used as needed". My current port defines a different FRAME_POINTER_REGNUM from the HARD_F

Re: Preserving the argument spills for GDB

2009-11-09 Thread Ian Lance Taylor
Jean Christophe Beyler writes: > How can I force the prologue to keep this instruction. It is useless > only in the case that there is no function call or no alloca. But I > have a case where there is a function call and it is still removed. Make the hard frame pointer register a fixed register,

Re: Preserving the argument spills for GDB

2009-11-09 Thread Jean Christophe Beyler
Yes I understand. I'm trying to give multiple options to the users in order to either have this enabled or not actually. I'm running into one issue. In order for this to work, it would be better if I could keep the top of the frame and the stack pointer in two separate registers. This way, whateve

Re: Preserving the argument spills for GDB

2009-11-04 Thread Ian Lance Taylor
Jean Christophe Beyler writes: >> You can force your writes to the stack to not be removed by making >> them use UNSPEC_VOLATILE.  You would write special define_insns for >> this. > > Is there an architecture port that has done this already ? No, because, when given the choice, gcc prefers fast

Re: Preserving the argument spills for GDB

2009-11-04 Thread Nathan Froyd
On Wed, Nov 04, 2009 at 11:24:34AM -0500, Jean Christophe Beyler wrote: > However, I've been going through the first step : running GDB, setting > a break-point and doing a continue to see what I get and try to get > the information right for O3 too. > > In O0, I get: > Breakpoint @@ 1, foo (a=4,

Re: Preserving the argument spills for GDB

2009-11-04 Thread Jean Christophe Beyler
> You can force your writes to the stack to not be removed by making > them use UNSPEC_VOLATILE.  You would write special define_insns for > this. Is there an architecture port that has done this already ? > Not to miss the obvious, note that this will hurt optimization. > However, if you need to

Re: Preserving the argument spills for GDB

2009-11-03 Thread Ian Lance Taylor
Jean Christophe Beyler writes: > I've been working on handling the Debugging information for the use of > GDB on my port. Though I definitely know that, when compiling in -O3, > some information is lost and the debugger can't always have all the > information, I'd like to at least keep the values

Re: Preserving the argument spills for GDB

2009-11-03 Thread Jean Christophe Beyler
I will try to add more details about my issue. Another way of putting this is : For my architecture there is: - A certain number of input registers which allow calls without going on the stack - There is not automatically a frame pointer on the stack either What is needed, from the GCC side, to