public inbox for linux-ia64@vger.kernel.org
 help / color / mirror / Atom feed
* [Linux-ia64] as & .restore sp directive
@ 2003-05-11 17:50 Ronald Veldema
  2003-05-11 18:10 ` David Mosberger
  2003-05-12 13:32 ` Ronald Veldema
  0 siblings, 2 replies; 3+ messages in thread
From: Ronald Veldema @ 2003-05-11 17:50 UTC (permalink / raw)
  To: linux-ia64

Hi all,
    my java compiler now compiles quite a bit of java.*
and so Am looking at the unwind info that I need to emit.
I now have a problem with the .restore directive.
It looks like I can only emit it once or as dies.

Given:

if (condition) {
    ...;
    return;
} else {
    ...;
    return;
}

I emit two function trailers (restoring b0, resetting sp, etc.)
and in doing so I also emit two ".restore sp" directives
and as dies with:

out.s: Assembler messages:
out.s:79: Error: Epilogue count of 4294967296 exceeds number of nested 
prologues (0)

Adding two .prologue statements or two ".restore sp, 1"
won't work. Any ideas ?


R.



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Linux-ia64] as & .restore sp directive
  2003-05-11 17:50 [Linux-ia64] as & .restore sp directive Ronald Veldema
@ 2003-05-11 18:10 ` David Mosberger
  2003-05-12 13:32 ` Ronald Veldema
  1 sibling, 0 replies; 3+ messages in thread
From: David Mosberger @ 2003-05-11 18:10 UTC (permalink / raw)
  To: linux-ia64

>>>>> On Sun, 11 May 2003 19:50:17 +0200, Ronald Veldema <veldema@cs.fau.de> said:

  Ronald> Hi all, my java compiler now compiles quite a bit of java.*
  Ronald> and so Am looking at the unwind info that I need to emit.  I
  Ronald> now have a problem with the .restore directive.  It looks
  Ronald> like I can only emit it once or as dies.

  Ronald> Given:

  Ronald> if (condition) { ...; return; } else { ...; return; }

  Ronald> I emit two function trailers (restoring b0, resetting sp,
  Ronald> etc.)  and in doing so I also emit two ".restore sp"
  Ronald> directives and as dies with:

  Ronald> out.s: Assembler messages: out.s:79: Error: Epilogue count
  Ronald> of 4294967296 exceeds number of nested prologues (0)

  Ronald> Adding two .prologue statements or two ".restore sp, 1"
  Ronald> won't work. Any ideas ?

Looks like you need to upgrade the assembler.  This is a known bug in
earlier versions (sorry, I don't recall when exactly this was fixed).

	--david


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Linux-ia64] as & .restore sp directive
  2003-05-11 17:50 [Linux-ia64] as & .restore sp directive Ronald Veldema
  2003-05-11 18:10 ` David Mosberger
@ 2003-05-12 13:32 ` Ronald Veldema
  1 sibling, 0 replies; 3+ messages in thread
From: Ronald Veldema @ 2003-05-12 13:32 UTC (permalink / raw)
  To: linux-ia64

I know, that is what gcc does as well.
It just looks inefficient to add extra jumps, esp. if we don't need them...
R.

CH Gowri Kumar wrote:

>>Adding two .prologue statements or two ".restore sp, 1"
>>won't work. Any ideas ?
>>    
>>
>How about doing it this way?
>if()
>{
>	....
>	goto RETURN;
>}
>else
>{
>	....
>	goto RETURN;
>}
>RETURN:
>	.restore sp 
>	mov r12 = r2
>	br.ret.sptk.many b0
>	.endp
>
>This way I feel you can put all the necessary things (restoring sp, 
>returning etc..) at one place, instead of duplicating the same code.
>
>Regards,
>Gowri Kumar
>
>  
>




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2003-05-12 13:32 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-05-11 17:50 [Linux-ia64] as & .restore sp directive Ronald Veldema
2003-05-11 18:10 ` David Mosberger
2003-05-12 13:32 ` Ronald Veldema

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox