https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63200
Bug ID: 63200 Summary: [5.0 Regression] FAIL: gcc.dg/tls/opt-11.c execution test Product: gcc Version: 5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: danglin at gcc dot gnu.org Host: hppa-unknown-linux-gnu Target: hppa-unknown-linux-gnu Build: hppa-unknown-linux-gnu Executing on host: /home/dave/gnu/gcc/objdir/gcc/xgcc -B/home/dave/gnu/gcc/objdi r/gcc/ /home/dave/gnu/gcc/gcc/gcc/testsuite/gcc.dg/tls/opt-11.c -fno-diagnostic s-show-caret -fdiagnostics-color=never -ansi -pedantic-errors -lm -o ./op t-11.exe (timeout = 300) spawn /home/dave/gnu/gcc/objdir/gcc/xgcc -B/home/dave/gnu/gcc/objdir/gcc/ /home/ dave/gnu/gcc/gcc/gcc/testsuite/gcc.dg/tls/opt-11.c -fno-diagnostics-show-caret - fdiagnostics-color=never -ansi -pedantic-errors -lm -o ./opt-11.exe PASS: gcc.dg/tls/opt-11.c (test for excess errors) Setting LD_LIBRARY_PATH to :/home/dave/gnu/gcc/objdir/gcc:/home/dave/gnu/gcc/obj dir/hppa-linux-gnu/./libatomic/.libs::/home/dave/gnu/gcc/objdir/gcc:/home/dave/g nu/gcc/objdir/hppa-linux-gnu/./libatomic/.libs:/home/dave/gnu/gcc/objdir/hppa-li nux-gnu/libstdc++-v3/src/.libs:/home/dave/gnu/gcc/objdir/hppa-linux-gnu/libssp/. libs:/home/dave/gnu/gcc/objdir/hppa-linux-gnu/libgomp/.libs:/home/dave/gnu/gcc/o bjdir/hppa-linux-gnu/libatomic/.libs:/home/dave/gnu/gcc/objdir/./gcc:/home/dave/ gnu/gcc/objdir/./prev-gcc spawn [open ...] FAIL: gcc.dg/tls/opt-11.c execution test (gdb) c Continuing. Program received signal SIGSEGV, Segmentation fault. 0x000106e0 in main () at /home/dave/gnu/gcc/gcc/gcc/testsuite/gcc.dg/tls/opt-11.c:33 33 if (p[0] != 6 || p[1] != 0 || p[2] != 8) p is in register %ret0 and it has wierd value: (gdb) p/x $ret0 $3 = 0xffffff4c The function foo no longer returns tls address: foo: .PROC .CALLINFO FRAME=64,NO_CALLS,SAVE_SP,ENTRY_GR=3 .ENTRY copy %r3,%r1 .cfi_register 3, 1 copy %r30,%r3 .cfi_def_cfa_register 3 stwm %r1,64(%r30) .cfi_offset 3, 0 .loc 1 23 0 ldil L'a-$global$+48,%r28 ldo R'a-$global$+48(%r28),%r28 .loc 1 24 0 ldo 64(%r3),%r30 ldwm -64(%r30),%r3 bv,n %r0(%r2) .EXIT .PROCEND 4.9 code for foo looks like: foo: .PROC .CALLINFO FRAME=64,NO_CALLS,SAVE_SP,ENTRY_GR=3 .ENTRY copy %r3,%r1 copy %r30,%r3 stwm %r1,64(%r30) mfctl %cr27,%r28 addil LR'a-$tls_leoff$,%r28 ldo RR'a-$tls_leoff$(%r1),%r28 ldo 48(%r28),%r28 ldo 64(%r3),%r30 ldwm -64(%r30),%r3 bv,n %r0(%r2) .EXIT .PROCEND