Nathalie Jarosz wrote:
I have change of system: from linux, I am on a Unix workstation and when
I
compile program which used to work under linux, the following message appears: "Internal compiler error in 'emit_library_call_value', at calls.c:3198"
What does it mean?
Exactly what it said: you just found bug in GPC itself (calls.c is part of GPC). In such cases you REALLY must supply all details:
- What type of unix you are using (CPU version, OS version, etc).
Sun Microsystems Inc. SunOS 5.7
- What type of GPC you are using (built against GCC v..., GPC v...,
etc).
gpc version 19991030 based on 2.95.2 19991024
- Sample code to get internal error.
?
Here is the routine which is involved:
function travel(djk:real;md:mat;A:minitable;Ak:real;ns,j:integer):real; {probability of an individual leaving patch j to reach patch k} const alpha = 4.910; zim = 0.263; lambda = 0.175; var Sj,t : real; begin Sj:=connect(md,A,ns,j); t:=(exp(-alpha*djk)*pow2(Ak,zim))/((lambda/Sj)+Sj); travel:=t; end;
This is exactly the same GPC bug that Clyde Meli has just reported. As I wrote last night, this bug has been fixed meanwhile. According to the `Fixed Bugs' section in the To-Do list http://agnes.dida.physik.uni-essen.de/~gnu-pascal/todo.html:
20000503: Sparc: division by reals (fjf237.pas, matt1.pas) or `Round (real_constant)' (chaput1.pas) make the compiler crash <199911040915.KAA11168@@humulus.daimi.au.dk>
(Sparc is the processor used in Sun's machines.)
Until there is a new GPC release with this bug fixed, you can work around by type-casting the constants to Real:
const alpha = Real (4.910); zim = Real (0.263); lambda = Real (0.175);
Frank