https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118018
Bug ID: 118018
Summary: FAIL: gcc.c-torture/execute/nestfunc-5.c -O1
execution test
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: danglin at gcc dot gnu.org
Target Milestone: ---
Created attachment 59850
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59850&action=edit
Preprocessed source.
spawn -ignore SIGHUP /home/dave/gnu/gcc/objdir/gcc/xgcc
-B/home/dave/gnu/gcc/obj
dir/gcc/
/home/dave/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/nestfunc-5.c
-fdiagnostics-plain-output -O1 -w -lm -o ./nestfunc-5.exe
PASS: gcc.c-torture/execute/nestfunc-5.c -O1 (test for excess errors)
Setting LD_LIBRARY_PATH to
:/home/dave/gnu/gcc/objdir/gcc::/home/dave/gnu/gcc/ob
jdir/gcc:/home/dave/gnu/gcc/objdir/hppa-linux-gnu/libstdc++-v3/src/.libs:/home/d
ave/gnu/gcc/objdir/hppa-linux-gnu/libssp/.libs:/home/dave/gnu/gcc/objdir/hppa-li
nux-gnu/libphobos/src/.libs:/home/dave/gnu/gcc/objdir/hppa-linux-gnu/libgm2/.lib
s:/home/dave/gnu/gcc/objdir/hppa-linux-gnu/libgomp/.libs:/home/dave/gnu/gcc/objd
ir/hppa-linux-gnu/libatomic/.libs:/home/dave/gnu/gcc/objdir/./gcc:/home/dave/gnu
/gcc/objdir/./prev-gcc:/home/dave/gnu/gcc/objdir/hppa-linux-gnu/libstdc++-v3/src
/.libs:/home/dave/gnu/gcc/objdir/hppa-linux-gnu/libssp/.libs:/home/dave/gnu/gcc/
objdir/hppa-linux-gnu/libphobos/src/.libs:/home/dave/gnu/gcc/objdir/hppa-linux-g
nu/libgm2/.libs:/home/dave/gnu/gcc/objdir/hppa-linux-gnu/libgomp/.libs:/home/dav
e/gnu/gcc/objdir/hppa-linux-gnu/libatomic/.libs:/home/dave/gnu/gcc/objdir/./gcc:
/home/dave/gnu/gcc/objdir/./prev-gcc
Execution timeout is: 300
spawn [open ...]
FAIL: gcc.c-torture/execute/nestfunc-5.c -O1 execution test
/home/dave/gnu/gcc/objdir/gcc/cc1 -fpreprocessed ./nestfunc-5.i -quiet -dumpdir
./ -dumpbase nestfunc-5.c -dumpbase-ext .c -march=2.0 -mlra -O1 -w -version
-fdiagnostics-color=never -fdiagnostics-urls=never -fno-diagnostics-show-caret
-fno-diagnostics-show-line-numbers -fdiagnostics-path-format=separate-events
-fdiagnostics-text-art-charset=none -fno-diagnostics-show-event-links -o
./nestfunc-5.s
This only occurs with LRA generating 32-bit PA 2.0 code. With legacy
reload, the frame pointer is eliminated. The test also doesn't fail
when generating PA 1.1 code.
The function recursive is miscompiled:
recursive:
.PROC
.CALLINFO FRAME=192,CALLS,SAVE_RP
.ENTRY
stw %r2,-20(%r30)
ldo 192(%r30),%r30
stw %r26,-36(%r3)
stw %r3,-184(%r30)
With LRA, frame_pointer_needed is not true. As a result, pa_expand_prologue
doesn't generate the instructions to save r3 and copy the incoming stack
pointer to the frame pointer, r3. In the above, r3 is not initialed.
We should have something like the following:
do_goto.0:
.PROC
.CALLINFO FRAME=64,NO_CALLS,SAVE_SP,ENTRY_GR=3
.ENTRY
copy %r3,%r1
copy %r30,%r3
stw,ma %r1,64(%r30)