https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124372
Bug ID: 124372
Summary: Lots of algol68 FAILs on i686-linux
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: algol68
Assignee: algol68 at gcc dot gnu.org
Reporter: jakub at gcc dot gnu.org
Target Milestone: ---
On i686-linux, I'm seeing a lot of FAILs:
FAIL: algol68/execute/assignation-multiple-2.a68 execution test, -O0
FAIL: algol68/execute/assignation-multiple-2.a68 execution test, -O1
FAIL: algol68/execute/assignation-multiple-2.a68 execution test, -O2
FAIL: algol68/execute/assignation-multiple-2.a68 execution test, -O2
-fcheck=bounds
FAIL: algol68/execute/assignation-multiple-2.a68 execution test, -O2
-fcheck=nil
FAIL: algol68/execute/assignation-multiple-2.a68 execution test, -O2
-fomit-frame-pointer -finline-functions
FAIL: algol68/execute/assignation-multiple-2.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/assignation-multiple-2.a68 execution test, -O3 -g
FAIL: algol68/execute/assignation-multiple-2.a68 execution test, -Os
FAIL: algol68/execute/assignation-multiple-2.a68 execution test, -flto
FAIL: algol68/execute/goto-5.a68 execution test, -O0
FAIL: algol68/execute/goto-5.a68 execution test, -O1
FAIL: algol68/execute/goto-5.a68 execution test, -O2
FAIL: algol68/execute/goto-5.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/goto-5.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/goto-5.a68 execution test, -O2 -fomit-frame-pointer
-finline-functions
FAIL: algol68/execute/goto-5.a68 execution test, -O2 -fomit-frame-pointer
-finline-functions -funroll-loops
FAIL: algol68/execute/goto-5.a68 execution test, -O3 -g
FAIL: algol68/execute/goto-5.a68 execution test, -Os
FAIL: algol68/execute/goto-5.a68 execution test, -flto
FAIL: algol68/execute/posix-argc-argv-1.a68 execution test, -O0
FAIL: algol68/execute/posix-argc-argv-1.a68 execution test, -O1
FAIL: algol68/execute/posix-argc-argv-1.a68 execution test, -O2
FAIL: algol68/execute/posix-argc-argv-1.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/posix-argc-argv-1.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/posix-argc-argv-1.a68 execution test, -O2
-fomit-frame-pointer -finline-functions
FAIL: algol68/execute/posix-argc-argv-1.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/posix-argc-argv-1.a68 execution test, -O3 -g
FAIL: algol68/execute/posix-argc-argv-1.a68 execution test, -Os
FAIL: algol68/execute/posix-argc-argv-1.a68 execution test, -flto
FAIL: algol68/execute/posix-exit-1.a68 execution test, -O0
FAIL: algol68/execute/posix-exit-1.a68 execution test, -O2
FAIL: algol68/execute/posix-exit-1.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/posix-exit-1.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/posix-exit-1.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/posix-exit-1.a68 execution test, -Os
FAIL: algol68/execute/posix-exit-1.a68 execution test, -flto
FAIL: algol68/execute/posix-fputc-fputs-1.a68 execution test, -O0
FAIL: algol68/execute/posix-fputc-fputs-1.a68 execution test, -O1
FAIL: algol68/execute/posix-fputc-fputs-1.a68 execution test, -O2
FAIL: algol68/execute/posix-fputc-fputs-1.a68 execution test, -O2
-fcheck=bounds
FAIL: algol68/execute/posix-fputc-fputs-1.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/posix-fputc-fputs-1.a68 execution test, -O2
-fomit-frame-pointer -finline-functions
FAIL: algol68/execute/posix-fputc-fputs-1.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/posix-fputc-fputs-1.a68 execution test, -O3 -g
FAIL: algol68/execute/posix-fputc-fputs-1.a68 execution test, -Os
FAIL: algol68/execute/posix-fputc-fputs-1.a68 execution test, -flto
FAIL: algol68/execute/posix-perror-1.a68 execution test, -O0
FAIL: algol68/execute/posix-perror-1.a68 execution test, -O1
FAIL: algol68/execute/posix-perror-1.a68 execution test, -O2
FAIL: algol68/execute/posix-perror-1.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/posix-perror-1.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/posix-perror-1.a68 execution test, -O2
-fomit-frame-pointer -finline-functions
FAIL: algol68/execute/posix-perror-1.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/posix-perror-1.a68 execution test, -O3 -g
FAIL: algol68/execute/posix-perror-1.a68 execution test, -Os
FAIL: algol68/execute/posix-perror-1.a68 execution test, -flto
FAIL: algol68/execute/posix-putchar-1.a68 execution test, -O0
FAIL: algol68/execute/posix-putchar-1.a68 execution test, -O1
FAIL: algol68/execute/posix-putchar-1.a68 execution test, -O2
FAIL: algol68/execute/posix-putchar-1.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/posix-putchar-1.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/posix-putchar-1.a68 execution test, -O2
-fomit-frame-pointer -finline-functions
FAIL: algol68/execute/posix-putchar-1.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/posix-putchar-1.a68 execution test, -O3 -g
FAIL: algol68/execute/posix-putchar-1.a68 execution test, -Os
FAIL: algol68/execute/posix-putchar-1.a68 execution test, -flto
FAIL: algol68/execute/posix-stride-1.a68 execution test, -O0
FAIL: algol68/execute/posix-stride-1.a68 execution test, -O1
FAIL: algol68/execute/posix-stride-1.a68 execution test, -O2
FAIL: algol68/execute/posix-stride-1.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/posix-stride-1.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/posix-stride-1.a68 execution test, -O2
-fomit-frame-pointer -finline-functions
FAIL: algol68/execute/posix-stride-1.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/posix-stride-1.a68 execution test, -O3 -g
FAIL: algol68/execute/posix-stride-1.a68 execution test, -Os
FAIL: algol68/execute/posix-stride-1.a68 execution test, -flto
FAIL: algol68/execute/procedured-goto-1.a68 execution test, -O0
FAIL: algol68/execute/procedured-goto-1.a68 execution test, -O1
FAIL: algol68/execute/procedured-goto-1.a68 execution test, -O2
FAIL: algol68/execute/procedured-goto-1.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/procedured-goto-1.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/procedured-goto-1.a68 execution test, -O2
-fomit-frame-pointer -finline-functions
FAIL: algol68/execute/procedured-goto-1.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/procedured-goto-1.a68 execution test, -O3 -g
FAIL: algol68/execute/procedured-goto-1.a68 execution test, -Os
FAIL: algol68/execute/procedured-goto-1.a68 execution test, -flto
FAIL: algol68/execute/quine.a68 execution test, -O0
FAIL: algol68/execute/quine.a68 execution test, -O1
FAIL: algol68/execute/quine.a68 execution test, -O2
FAIL: algol68/execute/quine.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/quine.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/quine.a68 execution test, -O2 -fomit-frame-pointer
-finline-functions
FAIL: algol68/execute/quine.a68 execution test, -O2 -fomit-frame-pointer
-finline-functions -funroll-loops
FAIL: algol68/execute/quine.a68 execution test, -O3 -g
FAIL: algol68/execute/quine.a68 execution test, -Os
FAIL: algol68/execute/quine.a68 execution test, -flto
FAIL: algol68/execute/random-1.a68 execution test, -O0
FAIL: algol68/execute/random-1.a68 execution test, -O1
FAIL: algol68/execute/random-1.a68 execution test, -O2
FAIL: algol68/execute/random-1.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/random-1.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/random-1.a68 execution test, -O2 -fomit-frame-pointer
-finline-functions
FAIL: algol68/execute/random-1.a68 execution test, -O2 -fomit-frame-pointer
-finline-functions -funroll-loops
FAIL: algol68/execute/random-1.a68 execution test, -O3 -g
FAIL: algol68/execute/random-1.a68 execution test, -Os
FAIL: algol68/execute/random-1.a68 execution test, -flto
FAIL: algol68/execute/slice-indexing-4.a68 execution test, -O0
FAIL: algol68/execute/slice-indexing-4.a68 execution test, -O1
FAIL: algol68/execute/slice-indexing-4.a68 execution test, -O2
FAIL: algol68/execute/slice-indexing-4.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/slice-indexing-4.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/slice-indexing-4.a68 execution test, -O2
-fomit-frame-pointer -finline-functions
FAIL: algol68/execute/slice-indexing-4.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/slice-indexing-4.a68 execution test, -O3 -g
FAIL: algol68/execute/slice-indexing-4.a68 execution test, -Os
FAIL: algol68/execute/slice-indexing-4.a68 execution test, -flto
FAIL: algol68/execute/string-2.a68 execution test, -O0
FAIL: algol68/execute/string-2.a68 execution test, -O1
FAIL: algol68/execute/string-2.a68 execution test, -O2
FAIL: algol68/execute/string-2.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/string-2.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/string-2.a68 execution test, -O2 -fomit-frame-pointer
-finline-functions
FAIL: algol68/execute/string-2.a68 execution test, -O2 -fomit-frame-pointer
-finline-functions -funroll-loops
FAIL: algol68/execute/string-2.a68 execution test, -O3 -g
FAIL: algol68/execute/string-2.a68 execution test, -Os
FAIL: algol68/execute/string-2.a68 execution test, -flto
FAIL: algol68/execute/widening-bits-2.a68 execution test, -O0
FAIL: algol68/execute/widening-bits-2.a68 execution test, -O1
FAIL: algol68/execute/widening-bits-2.a68 execution test, -O2
FAIL: algol68/execute/widening-bits-2.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/widening-bits-2.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/widening-bits-2.a68 execution test, -O2
-fomit-frame-pointer -finline-functions
FAIL: algol68/execute/widening-bits-2.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/widening-bits-2.a68 execution test, -O3 -g
FAIL: algol68/execute/widening-bits-2.a68 execution test, -Os
FAIL: algol68/execute/widening-bits-2.a68 execution test, -flto
FAIL: algol68/execute/widening-bits-3.a68 execution test, -O0
FAIL: algol68/execute/widening-bits-3.a68 execution test, -O1
FAIL: algol68/execute/widening-bits-3.a68 execution test, -O2
FAIL: algol68/execute/widening-bits-3.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/widening-bits-3.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/widening-bits-3.a68 execution test, -O2
-fomit-frame-pointer -finline-functions
FAIL: algol68/execute/widening-bits-3.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/widening-bits-3.a68 execution test, -O3 -g
FAIL: algol68/execute/widening-bits-3.a68 execution test, -Os
FAIL: algol68/execute/widening-bits-3.a68 execution test, -flto
FAIL: algol68/execute/modules/program-1.a68 execution test, -O0
FAIL: algol68/execute/modules/program-1.a68 execution test, -O1
FAIL: algol68/execute/modules/program-1.a68 execution test, -O2
FAIL: algol68/execute/modules/program-1.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/modules/program-1.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/modules/program-1.a68 execution test, -O2
-fomit-frame-pointer -finline-functions
FAIL: algol68/execute/modules/program-1.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/modules/program-1.a68 execution test, -O3 -g
FAIL: algol68/execute/modules/program-1.a68 execution test, -Os
FAIL: algol68/execute/modules/program-1.a68 execution test, -flto
FAIL: algol68/execute/modules/program-11.a68 execution test, -O0
FAIL: algol68/execute/modules/program-11.a68 execution test, -O1
FAIL: algol68/execute/modules/program-11.a68 execution test, -O2
FAIL: algol68/execute/modules/program-11.a68 execution test, -O2
-fcheck=bounds
FAIL: algol68/execute/modules/program-11.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/modules/program-11.a68 execution test, -O2
-fomit-frame-pointer -finline-functions
FAIL: algol68/execute/modules/program-11.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/modules/program-11.a68 execution test, -O3 -g
FAIL: algol68/execute/modules/program-11.a68 execution test, -Os
FAIL: algol68/execute/modules/program-11.a68 execution test, -flto
FAIL: algol68/execute/modules/program-2.a68 execution test, -O0
FAIL: algol68/execute/modules/program-2.a68 execution test, -O1
FAIL: algol68/execute/modules/program-2.a68 execution test, -O2
FAIL: algol68/execute/modules/program-2.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/modules/program-2.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/modules/program-2.a68 execution test, -O2
-fomit-frame-pointer -finline-functions
FAIL: algol68/execute/modules/program-2.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/modules/program-2.a68 execution test, -O3 -g
FAIL: algol68/execute/modules/program-2.a68 execution test, -Os
FAIL: algol68/execute/modules/program-2.a68 execution test, -flto
FAIL: algol68/execute/modules/program-22.a68 execution test, -O0
FAIL: algol68/execute/modules/program-22.a68 execution test, -O1
FAIL: algol68/execute/modules/program-22.a68 execution test, -O2
FAIL: algol68/execute/modules/program-22.a68 execution test, -O2
-fcheck=bounds
FAIL: algol68/execute/modules/program-22.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/modules/program-22.a68 execution test, -O2
-fomit-frame-pointer -finline-functions
FAIL: algol68/execute/modules/program-22.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/modules/program-22.a68 execution test, -O3 -g
FAIL: algol68/execute/modules/program-22.a68 execution test, -Os
FAIL: algol68/execute/modules/program-22.a68 execution test, -flto
FAIL: algol68/execute/modules/program-8.a68 execution test, -O0
FAIL: algol68/execute/modules/program-8.a68 execution test, -O1
FAIL: algol68/execute/modules/program-8.a68 execution test, -O2
FAIL: algol68/execute/modules/program-8.a68 execution test, -O2 -fcheck=bounds
FAIL: algol68/execute/modules/program-8.a68 execution test, -O2 -fcheck=nil
FAIL: algol68/execute/modules/program-8.a68 execution test, -O2
-fomit-frame-pointer -finline-functions
FAIL: algol68/execute/modules/program-8.a68 execution test, -O2
-fomit-frame-pointer -finline-functions -funroll-loops
FAIL: algol68/execute/modules/program-8.a68 execution test, -O3 -g
FAIL: algol68/execute/modules/program-8.a68 execution test, -Os
FAIL: algol68/execute/modules/program-8.a68 execution test, -flto
I had a brief look at the posix-exit failures. The problem is that it exits
with
a pretty much random value (0 to 252).
In *.optimized dump
const struct void% POSIX_posixexit (signed int param)
{
<bb 2> :
_libga68_posixexit (param_2(D));
return <retval>;
}
POSIX_posixexit:
subl $28, %esp
movl %esp, %eax
subl $8, %esp
pushl 44(%esp)
pushl %eax
call _libga68_posixexit
movl 44(%esp), %eax
addl $40, %esp
ret $4
Dunno what that const struct void* is, but I assume it is empty RECORD_TYPE or
something similar. In any case, it clearly expects that _libga68_posixexit
doesn't return VOID_TYPE, but returns some aggregate (empty? or 32-bit?).
But in the C definition of that function it returns void.
Now, on x86_64 and some other targets empty or say 32-bit structs are returned
in registers, so it doesn't matter much if the caller expects it to return
struct that nothing uses and callee expects it returns void.
But on i686 and various other targets, even such simple structs are returned
through invisible reference, so it in reality doesn't actually call
_libga68_posixexit (param)
but calls _libga68_posixexit (&__result, param).
So the function then exits with low 8 bits of the stack pointer instead of the
actual parameter.