[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Gm2] build failure
From: |
Waldek Hebisch |
Subject: |
Re: [Gm2] build failure |
Date: |
Thu, 10 Nov 2005 00:03:57 +0100 (CET) |
Gaius Mulley wrote:
> John B Wallace Jr <address@hidden> writes:
>
> > The build of the latest CVS sources (03 November 2005) failed on my system
> > (SUSE Linux 9.3 / Athlon 64):
> >
> > ./xgm2 -Wnil -Wcase -Wbounds -Wreturn -g -funbounded-by-reference
> > -Wverbose-unbounded -Wpim -Wpedantic-param-names -Wextended-opaque
> > -Wpedantic-cast -c -B./stage1/gm2
> > -I../../gcc-3.3.6/gcc/gm2/ulm-lib-gm2/std:../../gcc-3.3.6/gcc/gm2/ulm-lib-gm2/sys:../../gcc-3.3.6/gcc/gm2/gm2-libs
> > ../../gcc-3.3.6/gcc/gm2/ulm-lib-gm2/std/TimeIO.mod
> > -o gm2/ulm-lib-gm2/std/TimeIO.o
> > ../../gcc-3.3.6/gcc/gm2/ulm-lib-gm2/std/TimeIO.mod: In function `RdTime':
> > ../../gcc-3.3.6/gcc/gm2/ulm-lib-gm2/std/TimeIO.mod:367: internal compiler
> > error: in classify_argument, at config/i386/i386.c:1883
> > Please report this crash to the GNU Modula-2 mailing list <address@hidden>
> > make[1]: *** [gm2/ulm-lib-gm2/std/TimeIO.o] Error 1
> > make[1]: Leaving directory `/home/john/gm2/host-build/gcc'
> > make: *** [all-gcc] Error 2
> >
>
> Hi John,
>
> any chance you can email me the complete log, please. (Together with
> the ./configure command),
>
this looks like the problem Gnu Pascal had: in 3.3.x series amd64 backend
was unable to pass sets as arguments to functions/procedures. Namely,
amd64 backend wants to pass arguments in register, and makes decision
based on types. Unknown type gives the message above. 3.4.x series
contains code to handle sets, but for 3.3.x Gnu Pascal still have to
patch the backend.
BTW. Set support in the backend is semi-broken: Gnu Pascal have a
sizeable patch to the set code quite. Part of the patch is because
Gnu Pascal want somewhat different represatation of sets (using
fullwords) then provided by the backend, but the rest is due to bugs.
I have tried to get fixes to set code into the mainline, but
the part that chages functionality is outside.
If GM2 wants to use backed set then coordinating with Gnu Pascal
seems desirable -- it is nice to have common representation and
common calling convention.
*** gcc/config/i386/i386.c.orig Tue May 18 07:07:52 2004
--- gcc/config/i386/i386.c Sun Oct 24 11:26:55 2004
***************
*** 1879,1884 ****
--- 1879,1909 ----
}
}
}
+ else if (TREE_CODE (type) == SET_TYPE)
+ {
+ if (bytes <= 4)
+ {
+ classes[0] = X86_64_INTEGERSI_CLASS;
+ return 1;
+ }
+ else if (bytes <= 8)
+ {
+ classes[0] = X86_64_INTEGER_CLASS;
+ return 1;
+ }
+ else if (bytes <= 12)
+ {
+ classes[0] = X86_64_INTEGER_CLASS;
+ classes[1] = X86_64_INTEGERSI_CLASS;
+ return 2;
+ }
+ else
+ {
+ classes[0] = X86_64_INTEGER_CLASS;
+ classes[1] = X86_64_INTEGER_CLASS;
+ return 2;
+ }
+ }
else
abort ();
--
Waldek Hebisch
address@hidden