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.

Reply via email to