This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: pa.md bugfix


>   > 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)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]