egcs-1.1b alpha-dec-osf3.2 internal error in change_address()

Fergus Henderson fjh@cs.mu.OZ.AU
Fri Apr 30 23:15:00 GMT 1999


On 07-Apr-1999, Richard Henderson <rth@cygnus.com> wrote:
> However, I can't replicate this failure with egcs-1.1.2 or current cvs.
> I am testing from alpha-linux, but that shouldn't matter.  Can you 
> replicate this moving up to the current release?

Yes.  I can duplicate the bug with egcs-1.1.2.
Using egcs-1.1.2 I can also duplicate all of Hans-Peter Nilsson's
efforts with gdb.

I also tried compiling a trivial example `void foo() {}' without
optimization, and it appears that the frame pointer is not eliminated
in that function.  I set a breakpoint in alpha_emit_epilogue() and
printed out the value of `frame_pointer_needed'; it was 1. 
It generates the following code (note the use of $15):

	bash$ cat foo.c
	void foo() {
	}

	bash$ ./cc1 -quiet < foo.c
		.verstamp 3 11
		.set noreorder
		.set volatile
		.set noat
		.file	1 "stdin"
	.text
		.align 5
		.globl foo
		.ent foo
	foo:
		.frame $15,16,$26,0
		.mask 0x4008000,-16
	$foo..ng:
		subq $30,16,$30
		stq $26,0($30)
		stq $15,8($30)
		bis $30,$30,$15
		.prologue 0
	$L1:
		bis $15,$15,$30
		ldq $26,0($30)
		ldq $15,8($30)
		addq $30,16,$30
		ret $31,($26),1
		.end foo

-- 
Fergus Henderson <fjh@cs.mu.oz.au>  |  "I have always known that the pursuit
WWW: < http://www.cs.mu.oz.au/~fjh >  |  of excellence is a lethal habit"
PGP: finger fjh@128.250.37.3        |     -- the last words of T. S. Garp.



More information about the Gcc-bugs mailing list