Re: ABI compatibility regression: Return values on x86

2008-01-08 Thread H.J. Lu
On Tue, Jan 08, 2008 at 02:20:38PM +, Andrew Haley wrote: > guarantee, but I didn't read it that way. The core problem is that > the psABI is very badly worded. Bad wording isn't the only problem :-(. That is why there is an ia32 psABI discussion group. You can bring up any ia32 psABI issue

Re: ABI compatibility regression: Return values on x86

2008-01-08 Thread Andrew Haley
H.J. Lu writes: > On Tue, Jan 08, 2008 at 01:57:50PM +, Andrew Haley wrote: > > H.J. Lu writes: > > > On Mon, Jan 07, 2008 at 06:32:08PM +, Andrew Haley wrote: > > > > > > > > So, what now? Can we even agree about what the psABI actually says > > > > about sign-extending result

Re: ABI compatibility regression: Return values on x86

2008-01-08 Thread H.J. Lu
On Tue, Jan 08, 2008 at 01:57:50PM +, Andrew Haley wrote: > H.J. Lu writes: > > On Mon, Jan 07, 2008 at 06:32:08PM +, Andrew Haley wrote: > > > > > > So, what now? Can we even agree about what the psABI actually says > > > about sign-extending result values? Was what we did before co

Re: ABI compatibility regression: Return values on x86

2008-01-08 Thread Andrew Haley
H.J. Lu writes: > On Mon, Jan 07, 2008 at 06:32:08PM +, Andrew Haley wrote: > > > > So, what now? Can we even agree about what the psABI actually says > > about sign-extending result values? Was what we did before correct, > > or what we do now? I don't believe that it doesn't matter.

Re: ABI compatibility regression: Return values on x86

2008-01-07 Thread H.J. Lu
On Mon, Jan 07, 2008 at 06:32:08PM +, Andrew Haley wrote: > > So, what now? Can we even agree about what the psABI actually says > about sign-extending result values? Was what we did before correct, > or what we do now? I don't believe that it doesn't matter. You can follow up with this th

ABI compatibility regression: Return values on x86

2008-01-07 Thread Andrew Haley
gcc (x86) recently changed its behaviour when returning values shorter than int. It used to sign extend, and now it doesn't. short func2( short *size) { return *size; } trunk: func2: pushl %ebp movl%esp, %ebp movl8(%ebp), %eax movzwl (%eax), %eax