This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: pa.md bugfix
- To: law at redhat dot com
- Subject: Re: pa.md bugfix
- From: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- Date: Wed, 24 Jan 2001 13:06:08 -0500 (EST)
- Cc: gcc-patches at gcc dot gnu dot org, gcc-bugs at gcc dot gnu dot org
> > If +O3 is used, rename registers may use the PIC register if we don't
> > have a use in the return.
> No, the PIC register is fixed. What we recently removed was the _copy_ of
> the PIC register we had stuffed away in a fixed call-saved register.
>
> Also remember that "return" is only used in a leaf function -- ie, no
> calls and thus nothing clobbers %r19.
There is a problem with the patch with respect rename registers, although not
not the one I thought would occur. It relates to having the use for r19
present in the return for non PIC code. This causes a failure in
verify_local_live_at_start.
Building with -O3 with the source from early this morning, I find the
following failure:
stage1/xgcc -Bstage1/ -B/usr/local/hppa1.1-hp-hpux10.20/bin/ -c -DIN_GCC -g -O3 -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -DHAVE_CONFIG_H -I. -Icp -I../../gcc -I../../gcc/cp -I../../gcc/config -I../../gcc/../include ../../gcc/cp/spew.c -o cp/spew.o
../../gcc/cp/spew.c: In function `yyungetc':
../../gcc/cp/spew.c:889: Internal compiler error in print_rtl_and_abort, at flow
.c:6592
Here is the debug trace:
(gdb) bt
#0 print_rtl_and_abort () at ../../gcc/flow.c:6592
#1 0x28466c in verify_local_live_at_start (new_live_at_start=0x7b03b408,
bb=0x40104100) at ../../gcc/flow.c:3015
#2 0x284b9c in update_life_info (blocks=0x0, extent=UPDATE_LIFE_LOCAL,
prop_flags=5) at ../../gcc/flow.c:3106
#3 0x321340 in regrename_optimize () at ../../gcc/regrename.c:347
#4 0xd6224 in rest_of_compilation (decl=0x7ac3bd68) at ../../gcc/toplev.c:3556
#5 0x6ba04 in c_expand_body (fndecl=0x7ac3bd68, nested_p=0)
at ../../gcc/c-decl.c:6705
#6 0x6b4c4 in finish_function (nested=0) at ../../gcc/c-decl.c:6626
#7 0x3e474 in yyparse_1 () at c-parse.y:323
#8 0x483c8 in yyparse () at ../../gcc/c-lex.c:157
#9 0xd3574 in compile_file (name=0x4008bd0c "spew.i")
at ../../gcc/toplev.c:2379
#10 0xd9cb8 in main (argc=5, argv=0x7b03a7a4) at ../../gcc/toplev.c:4879
#11 0x7af1e6cc in ?? () from /usr/lib/libc.1
(gdb) up
#1 0x28466c in verify_local_live_at_start (new_live_at_start=0x7b03b408,
bb=0x40104100) at ../../gcc/flow.c:3015
(gdb) p debug_regset (new_live_at_start)
19 [%r19] 22 [%r22] 24 [%r24] 30 [%r30]
$2 = void
(gdb) p debug_regset (bb->global_live_at_start)
22 [%r22] 24 [%r24] 30 [%r30]
I think we can't have the use for r19 when generating non PIC code.
Dave
--
J. David Anglin dave.anglin@nrc.ca
National Research Council of Canada (613) 990-0752 (FAX: 952-6605)