* Re: bug when upgrading bnu210->bnu211 ?
2001-06-23 21:55 ` Mark E.
@ 2001-06-25 2:11 ` Maurice Lombardi
2001-06-25 10:52 ` Mark E.
0 siblings, 1 reply; 6+ messages in thread
From: Maurice Lombardi @ 2001-06-25 2:11 UTC (permalink / raw)
To: djgpp; +Cc: binutils
Mark E. wrote:
> On Sat, 23 Jun 2001 21:51:30 +0200, you wrote:
>
>
>> C:\djgpp\b\gnu\gcc-2.953\gcc\p\test>gpc -g -O3 --autobuild fay.pas
>> c:/djgpp/tmp\ccdaaaaa: Assembler messages:
>> c:/djgpp/tmp\ccdaaaaa:934: Fatal error: C_EFCN symbol out of scope
>
>
> Please post the assembly file generated by compiling fay.pas (in other words use -S
> and then post fay.s) and we'll be in a better position to help you. It's possible
> binutils 2.11 is catching an problem with gpc, or it's possible that binutils 2.11 is
> the problem. But from the information you've provided so far, it's impossible to
> tell.
>
> Mark
Here it is, compiled with
gpc -g -S -O3 fay.pas
---------------------------------------------------------------------------------------
.text
.def _.0fake; .scl 10; .type 010; .size 12; .endef
.def _Capacity; .val 0; .scl 8; .type 016; .endef
.def _length; .val 4; .scl 8; .type 016; .endef
.def __p_schema_; .val 8; .scl 8; .dim 1; .size 1; .type 060; .endef
.def .eos; .val 12; .scl 102; .tag _.0fake; .size 12; .endef
.def _.1fake; .scl 10; .type 010; .size 36; .endef
.def _Datevalid; .val 0; .scl 8; .type 014; .endef
.def _Timevalid; .val 1; .scl 8; .type 014; .endef
.def _Year; .val 4; .scl 8; .type 04; .endef
.def _Month; .val 8; .scl 8; .type 04; .endef
.def _Day; .val 12; .scl 8; .type 04; .endef
.def _Dayofweek; .val 16; .scl 8; .type 04; .endef
.def _Hour; .val 20; .scl 8; .type 04; .endef
.def _Minute; .val 24; .scl 8; .type 04; .endef
.def _Second; .val 28; .scl 8; .type 04; .endef
.def _Microsecond; .val 32; .scl 8; .type 04; .endef
.def .eos; .val 36; .scl 102; .tag _.1fake; .size 36; .endef
.def _.2fake; .scl 10; .type 010; .size 2060; .endef
.def _Capacity; .val 0; .scl 8; .type 016; .endef
.def _length; .val 4; .scl 8; .type 016; .endef
.def __p_schema_; .val 8; .scl 8; .dim 2049; .size 2049; .type 060; .endef
.def .eos; .val 2060; .scl 102; .tag _.2fake; .size 2060; .endef
.def _.3fake; .scl 10; .type 010; .size 2140; .endef
.def _Bound; .val 0; .scl 8; .type 014; .endef
.def _Force; .val 1; .scl 8; .type 014; .endef
.def _Extensions_valid; .val 2; .scl 8; .type 014; .endef
.def _Readable; .val 3; .scl 8; .type 014; .endef
.def _Writable; .val 4; .scl 8; .type 014; .endef
.def _Executable; .val 5; .scl 8; .type 014; .endef
.def _Existing; .val 6; .scl 8; .type 014; .endef
.def _Directory; .val 7; .scl 8; .type 014; .endef
.def _Special; .val 8; .scl 8; .type 014; .endef
.def _Symlink; .val 9; .scl 8; .type 014; .endef
.def _Size; .val 12; .scl 8; .type 05; .endef
.def _Accesstime; .val 20; .scl 8; .type 05; .endef
.def _Modificationtime; .val 28; .scl 8; .type 05; .endef
.def _Changetime; .val 36; .scl 8; .type 05; .endef
.def _User; .val 44; .scl 8; .type 04; .endef
.def _Group; .val 48; .scl 8; .type 04; .endef
.def _Mode; .val 52; .scl 8; .type 04; .endef
.def _Device; .val 56; .scl 8; .type 04; .endef
.def _Inode; .val 60; .scl 8; .type 04; .endef
.def _Links; .val 64; .scl 8; .type 04; .endef
.def _Textbinary; .val 68; .scl 8; .type 014; .endef
.def _Handle; .val 72; .scl 8; .type 04; .endef
.def _Closeflag; .val 76; .scl 8; .type 014; .endef
.def _Name; .val 80; .scl 8; .tag _.2fake; .size 2060; .type 010; .endef
.def .eos; .val 2140; .scl 102; .tag _.3fake; .size 2140; .endef
.file "fay.pas"
gcc2_compiled.:
___gnu_compiled_pascal:
.def _Integer; .scl 13; .type 04; .endef
.def _Node; .scl 13; .type 016; .endef
.def _Debug; .val _Debug; .scl 3; .type 014; .endef
.lcomm _Debug,4
LC0:
.ascii " to TakeUSCC\0"
LC1:
.ascii "YieldUSCC passes\0"
LC2:
.ascii "stacking \0"
LC3:
.ascii "Doing successors of \0"
LC4:
.ascii " is an SCC root\0"
LC5:
.ascii "Now checking if \0"
LC6:
.ascii " T=\0"
LC7:
.ascii " is an SCC root; SP=\0"
LC8:
.ascii " out to TakeUSCC\0"
LC9:
.ascii "Yield SCC should pass \0"
.p2align 2
.def _Dousuccessor; .val _Dousuccessor.8; .scl 3; .type 041; .endef
_Dousuccessor.8:
.def .bf; .val .; .scl 101; .line 45; .endef
.def _W; .val 8; .scl 9; .type 016; .endef
.def _W; .val 7; .scl 4; .type 016; .endef
pushl %ebp
movl %esp,%ebp
subl $12,%esp
pushl %edi
pushl %esi
pushl %ebx
movl 8(%ebp),%edi
movl %ecx,-4(%ebp)
movl %ecx,%esi
.ln 2
addl $-12,%esp
.ln 1
movl -4(%esi),%ebx
.ln 2
pushl %edi
movl %ebx,%ecx
call _Search.5
.ln 3
movl -8(%esi),%eax
addl $16,%esp
movl -18008(%ebx),%edx
movl (%eax),%eax
movl (%edx,%edi,4),%ecx
cmpl (%edx,%eax,4),%ecx
jge L6
movl %ecx,(%edx,%eax,4)
L6:
.ln 4
movl -18012(%ebx),%edx
addl $-8,%esp
pushl %edi
movl -8(%esi),%eax
movl (%eax),%eax
pushl %eax
movl 12(%edx),%eax
call *%eax
leal -24(%ebp),%esp
popl %ebx
popl %esi
popl %edi
movl %ebp,%esp
popl %ebp
ret
.def .ef; .val .; .scl 101; .line 4; .endef
.def _Dousuccessor; .val .; .scl -1; .endef
.p2align 2
.def _Eachumember; .val _Eachumember.11; .scl 3; .type 041; .endef
_Eachumember.11:
.def .bf; .val .; .scl 101; .line 53; .endef
.def _P; .val 8; .scl 9; .type 0221; .endef
.def _I; .val 3; .scl 4; .type 04; .endef
.def .bb; .val .; .scl 100; .line 1; .endef
.def ___for_lower_0__; .val 2; .scl 4; .type 04; .endef
.def ___for_upper_1__; .val 7; .scl 4; .type 04; .endef
pushl %ebp
movl %esp,%ebp
subl $12,%esp
pushl %edi
pushl %esi
pushl %ebx
movl %ecx,-4(%ebp)
movl -4(%ecx),%eax
.ln 2
movl -12(%ecx),%edi
movl -18016(%eax),%edx
cmpl %edi,%edx
jl L8
movl %edx,%ebx
leal -18004(%eax),%esi
jmp L9
.p2align 4,,7
L12:
decl %ebx
L9:
.ln 3
movl (%esi,%ebx,4),%eax
addl $-12,%esp
pushl %eax
movl 8(%ebp),%eax
call *%eax
.ln 2
addl $16,%esp
cmpl %edi,%ebx
jg L12
L8:
leal -24(%ebp),%esp
popl %ebx
popl %esi
popl %edi
movl %ebp,%esp
popl %ebp
ret
.ln 4
.def .eb; .val .; .scl 100; .line 4; .endef
.def .ef; .val .; .scl 101; .line 4; .endef
.def _Eachumember; .val .; .scl -1; .endef
.p2align 2
.def _Search; .val _Search.5; .scl 3; .type 041; .endef
_Search.5:
.def .bf; .val .; .scl 101; .line 43; .endef
.def _V; .val 8; .scl 9; .type 016; .endef
.def _I; .val 3; .scl 4; .type 04; .endef
.def _T; .val -12; .scl 1; .type 04; .endef
pushl %ebp
movl %esp,%ebp
subl $60,%esp
leal 8(%ebp),%eax
movl $_Dousuccessor.8-10,%edx
pushl %edi
pushl %esi
pushl %ebx
movl %ecx,-4(%ebp)
movl %ecx,-48(%ebp)
movl %eax,-8(%ebp)
leal -44(%ebp),%eax
movb $185,(%eax)
movl %ebp,1(%eax)
movb $233,5(%eax)
subl %eax,%edx
movl %edx,6(%eax)
leal -28(%ebp),%eax
movl $_Eachumember.11-10,%edx
movb $185,(%eax)
movl %ebp,1(%eax)
movb $233,5(%eax)
subl %eax,%edx
movl %edx,6(%eax)
.ln 23
movl -48(%ebp),%ecx
movl 8(%ebp),%edx
movl -18008(%ecx),%eax
cmpl $0,(%eax,%edx,4)
jne L17
.def .bb; .val .; .scl 100; .line 23; .endef
.ln 24
cmpb $0,_Debug
je L18
addl $-12,%esp
pushl $22
pushl %edx
pushl $8
pushl $9
pushl $LC2
pushl $17
pushl $3
pushl $384
pushl $__p_stdout
call __p_write
addl $48,%esp
cmpl $0,__p_InOutRes
je L18
call __p_check_inoutres
L18:
.ln 25
movl -48(%ebp),%esi
.ln 26
movl %esi,%ebx
addl $-18004,%ebx
.ln 27
movl %ebx,%edi
.ln 25
movl -18016(%esi),%eax
incl %eax
movl %eax,-18016(%esi)
.ln 26
movl 8(%ebp),%ecx
movl %ecx,(%ebx,%eax,4)
movl -18008(%esi),%edx
movl -18016(%esi),%eax
movl %eax,(%edx,%ecx,4)
.ln 27
cmpb $0,_Debug
je L20
addl $-12,%esp
pushl $22
movl 8(%ebp),%eax
pushl %eax
pushl $8
pushl $20
pushl $LC3
pushl $17
pushl $3
pushl $384
pushl $__p_stdout
call __p_write
addl $48,%esp
cmpl $0,__p_InOutRes
je L20
call __p_check_inoutres
L20:
.ln 28
movl -48(%ebp),%eax
addl $-8,%esp
movl -18012(%eax),%edx
leal -41(%ebp),%eax
andb $252,%al
pushl %eax
movl 8(%ebp),%eax
pushl %eax
movl 8(%edx),%eax
call *%eax
.ln 29
addl $16,%esp
cmpb $0,_Debug
je L22
pushl $22
pushl $15
pushl $LC4
pushl $17
movl 8(%ebp),%eax
pushl %eax
pushl $8
pushl $16
pushl $LC5
pushl $17
pushl $4
pushl $384
pushl $__p_stdout
call __p_write
addl $48,%esp
cmpl $0,__p_InOutRes
je L22
call __p_check_inoutres
L22:
.ln 30
movl -48(%ebp),%ecx
movl 8(%ebp),%edx
movl -18008(%ecx),%eax
movl (%eax,%edx,4),%eax
cmpl (%edi,%eax,4),%edx
jne L17
.def .bb; .val .; .scl 100; .line 30; .endef
.def ___for_lower_2__; .val 0; .scl 4; .type 04; .endef
.def ___for_upper_3__; .val 6; .scl 4; .type 04; .endef
.ln 31
movl %eax,-12(%ebp)
.ln 32
cmpb $0,_Debug
je L25
pushl $22
pushl %eax
pushl $3
pushl $3
pushl $LC6
pushl $17
movl -18016(%ecx),%eax
pushl %eax
pushl $3
pushl $20
pushl $LC7
pushl $17
pushl %edx
pushl $8
pushl $6
pushl $384
pushl $__p_stdout
call __p_write
addl $64,%esp
cmpl $0,__p_InOutRes
je L25
call __p_check_inoutres
L25:
.ln 33
movl -48(%ebp),%esi
movl -18016(%esi),%eax
movl -12(%ebp),%esi
cmpl %esi,%eax
jl L27
movl %eax,%ebx
movl %edi,-52(%ebp)
jmp L28
.p2align 4,,7
L31:
decl %ebx
L28:
movl -52(%ebp),%edi
movl -48(%ebp),%eax
movl (%edi,%ebx,4),%ecx
movl -18008(%eax),%edx
movl -18020(%eax),%eax
movl %eax,(%edx,%ecx,4)
cmpl %esi,%ebx
jg L31
L27:
.ln 34
movl -48(%ebp),%edx
movl -12(%ebp),%eax
cmpl %eax,-18016(%edx)
je L33
.ln 35
cmpb $0,_Debug
je L34
pushl $22
pushl $16
pushl $LC8
pushl $17
movl 8(%ebp),%eax
pushl %eax
pushl $8
pushl $22
pushl $LC9
pushl $17
pushl $4
pushl $384
pushl $__p_stdout
call __p_write
addl $48,%esp
cmpl $0,__p_InOutRes
je L34
call __p_check_inoutres
L34:
.ln 17
.def .bb; .val .; .scl 100; .line 17; .endef
.def .bb; .val .; .scl 100; .line 17; .endef
.def .bb; .val .; .scl 100; .line 17; .endef
movl -4(%ebp),%esi
movl %ebp,%ebx
.ln 18
cmpb $0,_Debug
je L36
pushl $22
pushl $12
pushl $LC0
pushl $17
movl -8(%ebp),%eax
movl (%eax),%eax
pushl %eax
pushl $8
pushl $16
pushl $LC1
pushl $17
pushl $4
pushl $384
pushl $__p_stdout
call __p_write
addl $48,%esp
cmpl $0,__p_InOutRes
je L36
call __p_check_inoutres
L36:
.ln 19
movl -18012(%esi),%edx
addl $-8,%esp
leal -28(%ebx),%eax
pushl %eax
movl -8(%ebx),%eax
movl (%eax),%eax
pushl %eax
movl 16(%edx),%eax
call *%eax
.ln 20
.def .eb; .val .; .scl 100; .line 20; .endef
.def .eb; .val .; .scl 100; .line 20; .endef
.def .eb; .val .; .scl 100; .line 20; .endef
L33:
.ln 38
movl -12(%ebp),%esi
movl -48(%ebp),%ecx
decl %esi
movl %esi,-18016(%ecx)
.ln 39
.def .eb; .val .; .scl 100; .line 39; .endef
.ln 40
.def .eb; .val .; .scl 100; .line 40; .endef
L17:
leal -72(%ebp),%esp
popl %ebx
popl %esi
popl %edi
movl %ebp,%esp
popl %ebp
ret
.ln 41
.def .ef; .val .; .scl 101; .line 41; .endef
.def _Search; .val .; .scl -1; .endef
.p2align 2
.def _P; .val _P.2; .scl 3; .type 041; .endef
_P.2:
.def .bf; .val .; .scl 101; .line 40; .endef
.def _T; .val 8; .scl 9; .type 016; .endef
.def _T; .val 2; .scl 4; .type 016; .endef
pushl %ebp
movl %esp,%ebp
subl $24,%esp
movl 8(%ebp),%edx
movl %ecx,-4(%ebp)
movl -18008(%ecx),%eax
movl $0,(%eax,%edx,4)
movl %ebp,%esp
popl %ebp
ret
.def .ef; .val .; .scl 101; .line 1; .endef
.def _P; .val .; .scl -1; .endef
.p2align 2
.def _Eachuscc; .val _Eachuscc; .scl 2; .type 041; .endef
.globl _Eachuscc
_Eachuscc:
.def .bf; .val .; .scl 101; .line 34; .endef
.def _Eachunode; .val 8; .scl 9; .type 0221; .endef
.def _Eachunodeutousearch; .val 12; .scl 9; .type 0221; .endef
.def _R; .val 16; .scl 9; .type 0221; .endef
.def _Propagate; .val 20; .scl 9; .type 0221; .endef
.def _Takeuscc; .val 24; .scl 9; .type 0221; .endef
.def _Lastunode; .val 28; .scl 9; .type 04; .endef
.def _Eachunode; .val 3; .scl 4; .type 0221; .endef
.def _Eachunodeutousearch; .val 6; .scl 4; .type 0221; .endef
.def _Lastunode; .val 1; .scl 4; .type 04; .endef
.def _A; .scl 13; .dim 4501; .size 18004; .type 064; .endef
.def _N; .val -18008; .scl 1; .dim 4501; .size 4; .type 0324; .endef
.def _Sp; .val -18016; .scl 1; .type 04; .endef
.def _Stack; .val -18004; .scl 1; .dim 4501; .size 18004; .type 076; .endef
.def _Infinity; .val -18020; .scl 1; .type 04; .endef
pushl %ebp
movl %esp,%ebp
subl $18064,%esp
leal 8(%ebp),%eax
movl $_Search.5-10,%edx
pushl %esi
pushl %ebx
movl 8(%ebp),%ebx
movl 12(%ebp),%esi
movl 28(%ebp),%ecx
movl %eax,-18012(%ebp)
leal -18052(%ebp),%eax
movb $185,(%eax)
movl %ebp,1(%eax)
movb $233,5(%eax)
subl %eax,%edx
movl %edx,6(%eax)
leal -18036(%ebp),%eax
movl $_P.2-10,%edx
movb $185,(%eax)
movl %ebp,1(%eax)
movb $233,5(%eax)
subl %eax,%edx
movl %edx,6(%eax)
.ln 52
incl %ecx
movl %ecx,-18020(%ebp)
addl $-12,%esp
pushl $18004
call __p_new
movl %eax,-18008(%ebp)
.ln 53
addl $-12,%esp
leal -18036(%ebp),%eax
pushl %eax
call *%ebx
.ln 54
movl $0,-18016(%ebp)
.ln 55
addl $32,%esp
addl $-12,%esp
leal -18052(%ebp),%eax
pushl %eax
call *%esi
.ln 56
movl -18008(%ebp),%eax
addl $-12,%esp
pushl %eax
call __p_dispose
leal -18072(%ebp),%esp
popl %ebx
popl %esi
movl %ebp,%esp
popl %ebp
ret
.ln 57
.def .ef; .val .; .scl 101; .line 57; .endef
.def _Eachuscc; .val .; .scl -1; .endef
LC10:
.ascii " from YieldUSCC\0"
LC11:
.ascii "TakeUSCC receives V=\0"
LC12:
.ascii "The SCC's constituents are:\0"
.p2align 2
.def _P; .val _P.37; .scl 3; .type 041; .endef
_P.37:
.def .bf; .val .; .scl 101; .line 112; .endef
.def _T; .val 8; .scl 9; .type 016; .endef
.def _T; .val 0; .scl 4; .type 016; .endef
.def .bb; .val .; .scl 100; .line 1; .endef
pushl %ebp
movl %esp,%ebp
subl $24,%esp
movl 8(%ebp),%eax
movl %ecx,-4(%ebp)
addl $-12,%esp
pushl %eax
pushl $8
pushl $1
pushl $384
pushl $__p_stdout
call __p_write
addl $32,%esp
cmpl $0,__p_InOutRes
je L52
call __p_check_inoutres
L52:
movl %ebp,%esp
popl %ebp
ret
.def .eb; .val .; .scl 100; .line 1; .endef
.def .ef; .val .; .scl 101; .line 1; .endef
.def _P; .val .; .scl -1; .endef
.p2align 2
.def _Takeuscc; .val _Takeuscc.34; .scl 3; .type 041; .endef
_Takeuscc.34:
.def .bf; .val .; .scl 101; .line 112; .endef
.def _Root; .val 8; .scl 9; .type 016; .endef
.def _Each; .val 12; .scl 9; .type 0221; .endef
.def _Root; .val 0; .scl 4; .type 016; .endef
.def _Each; .val 3; .scl 4; .type 0221; .endef
.def .bb; .val .; .scl 100; .line 1; .endef
pushl %ebp
movl %esp,%ebp
subl $36,%esp
leal -20(%ebp),%edx
pushl %ebx
movl 8(%ebp),%eax
movl 12(%ebp),%ebx
movl %ecx,-4(%ebp)
movl $_P.37-10,%ecx
movb $185,(%edx)
movl %ebp,1(%edx)
movb $233,5(%edx)
subl %edx,%ecx
movl %ecx,6(%edx)
.ln 3
pushl $22
pushl $15
pushl $LC10
pushl $17
pushl %eax
pushl $8
pushl $20
pushl $LC11
pushl $17
pushl $4
pushl $384
pushl $__p_stdout
call __p_write
addl $48,%esp
cmpl $0,__p_InOutRes
je L53
call __p_check_inoutres
L53:
.ln 4
addl $-4,%esp
pushl $22
pushl $27
pushl $LC12
pushl $17
pushl $2
pushl $384
pushl $__p_stdout
call __p_write
addl $32,%esp
cmpl $0,__p_InOutRes
je L54
call __p_check_inoutres
L54:
.ln 5
addl $-12,%esp
leal -17(%ebp),%eax
andb $252,%al
pushl %eax
call *%ebx
pushl $22
pushl $1
pushl $384
pushl $__p_stdout
call __p_write
addl $32,%esp
cmpl $0,__p_InOutRes
je L55
call __p_check_inoutres
L55:
movl -40(%ebp),%ebx
movl %ebp,%esp
popl %ebp
ret
.ln 6
.def .eb; .val .; .scl 100; .line 6; .endef
.def .ef; .val .; .scl 101; .line 6; .endef
.def _Takeuscc; .val .; .scl -1; .endef
.p2align 2
.def _Eachunodeutousearch; .val _Eachunodeutousearch.22; .scl 3; .type 041; .endef
_Eachunodeutousearch.22:
.def .bf; .val .; .scl 101; .line 95; .endef
.def _Search; .val 8; .scl 9; .type 0221; .endef
.def _Search; .val 0; .scl 4; .type 0221; .endef
pushl %ebp
movl %esp,%ebp
subl $24,%esp
movl 8(%ebp),%eax
movl %ecx,-4(%ebp)
.ln 2
addl $-12,%esp
pushl $1
call *%eax
movl %ebp,%esp
popl %ebp
ret
.def .ef; .val .; .scl 101; .line 2; .endef
.def _Eachunodeutousearch; .val .; .scl -1; .endef
.p2align 2
.def _Eachunode; .val _Eachunode.25; .scl 3; .type 041; .endef
_Eachunode.25:
.def .bf; .val .; .scl 101; .line 99; .endef
.def _P; .val 8; .scl 9; .type 0221; .endef
.def _P; .val 3; .scl 4; .type 0221; .endef
pushl %ebp
movl %esp,%ebp
subl $20,%esp
pushl %ebx
movl 8(%ebp),%ebx
movl %ecx,-4(%ebp)
addl $-12,%esp
pushl $1
call *%ebx
addl $-12,%esp
pushl $2
call *%ebx
movl -24(%ebp),%ebx
movl %ebp,%esp
popl %ebp
ret
.def .ef; .val .; .scl 101; .line 1; .endef
.def _Eachunode; .val .; .scl -1; .endef
.p2align 2
.def _R; .val _R.28; .scl 3; .type 041; .endef
_R.28:
.def .bf; .val .; .scl 101; .line 102; .endef
.def _V; .val 8; .scl 9; .type 016; .endef
.def _P; .val 12; .scl 9; .type 0221; .endef
.def _V; .val 0; .scl 4; .type 016; .endef
.def _P; .val 2; .scl 4; .type 0221; .endef
pushl %ebp
movl %esp,%ebp
subl $24,%esp
movl 8(%ebp),%eax
movl 12(%ebp),%edx
movl %ecx,-4(%ebp)
cmpl $1,%eax
je L45
cmpl $2,%eax
je L46
jmp L44
.p2align 4,,7
L45:
.ln 5
addl $-12,%esp
pushl $2
call *%edx
jmp L44
.p2align 4,,7
L46:
.ln 6
addl $-12,%esp
pushl $1
call *%edx
.def _case_4; .val L44; .scl 6; .type 00; .endef
L44:
movl %ebp,%esp
popl %ebp
ret
.def .ef; .val .; .scl 101; .line 6; .endef
.def _R; .val .; .scl -1; .endef
.p2align 2
.def _Propagate; .val _Propagate.31; .scl 3; .type 041; .endef
_Propagate.31:
.def .bf; .val .; .scl 101; .line 110; .endef
.def _V; .val 8; .scl 9; .type 016; .endef
.def _W; .val 12; .scl 9; .type 016; .endef
pushl %ebp
movl %esp,%ebp
subl $24,%esp
movl %ecx,-4(%ebp)
movl %ebp,%esp
popl %ebp
ret
.def .ef; .val .; .scl 101; .line 1; .endef
.def _Propagate; .val .; .scl -1; .endef
.p2align 2
.def _Q; .val _Q.19; .scl 3; .type 041; .endef
_Q.19:
.def .bf; .val .; .scl 101; .line 94; .endef
pushl %ebp
movl %esp,%ebp
subl $104,%esp
movl %ecx,-4(%ebp)
leal -84(%ebp),%eax
movl $_Eachunode.25-10,%edx
movb $185,(%eax)
movl %ebp,1(%eax)
movb $233,5(%eax)
subl %eax,%edx
movl %edx,6(%eax)
leal -68(%ebp),%eax
movl $_Eachunodeutousearch.22-10,%edx
movb $185,(%eax)
movl %ebp,1(%eax)
movb $233,5(%eax)
subl %eax,%edx
movl %edx,6(%eax)
leal -52(%ebp),%eax
movl $_R.28-10,%edx
movb $185,(%eax)
movl %ebp,1(%eax)
movb $233,5(%eax)
subl %eax,%edx
movl %edx,6(%eax)
leal -36(%ebp),%eax
movl $_Propagate.31-10,%edx
movb $185,(%eax)
movl %ebp,1(%eax)
movb $233,5(%eax)
subl %eax,%edx
movl %edx,6(%eax)
leal -20(%ebp),%eax
movl $_Takeuscc.34-10,%edx
movb $185,(%eax)
movl %ebp,1(%eax)
movb $233,5(%eax)
subl %eax,%edx
movl %edx,6(%eax)
.ln 26
addl $-8,%esp
pushl $2
pushl %eax
leal -36(%ebp),%eax
pushl %eax
leal -52(%ebp),%eax
pushl %eax
leal -68(%ebp),%eax
pushl %eax
leal -84(%ebp),%eax
pushl %eax
call _Eachuscc
movl %ebp,%esp
popl %ebp
ret
.ln 27
.def .ef; .val .; .scl 101; .line 27; .endef
.def _Q; .val .; .scl -1; .endef
.p2align 2
.def _Outer; .val _Outer; .scl 2; .type 041; .endef
.globl _Outer
_Outer:
.def .bf; .val .; .scl 101; .line 93; .endef
.def .bb; .val .; .scl 100; .line 1; .endef
pushl %ebp
movl %esp,%ebp
subl $8,%esp
.ln 32
movl %ebp,%ecx
call _Q.19
movl %ebp,%esp
popl %ebp
ret
.ln 33
.def .eb; .val .; .scl 100; .line 33; .endef
.ln 37
.def .ef; .val .; .scl 101; .line 37; .endef
.def _Outer; .val .; .scl -1; .endef
.p2align 2
.def _pascal_main_program; .val _pascal_main_program; .scl 2; .type 041; .endef
.globl _pascal_main_program
_pascal_main_program:
.def .bf; .val .; .scl 101; .line 131; .endef
pushl %ebp
movl %esp,%ebp
subl $8,%esp
.ln 2
movb $1,_Debug
.ln 3
call _Outer
movl %ebp,%esp
popl %ebp
ret
.def .ef; .val .; .scl 101; .line 3; .endef
.def _pascal_main_program; .val .; .scl -1; .endef
.data
_ctor_run_condition_5.47:
.byte 1
.text
.p2align 2
.def _init_pascal_main_program; .val _init_pascal_main_program; .scl 2; .type 041; .endef
.globl _init_pascal_main_program
_init_pascal_main_program:
.def .bf; .val .; .scl 101; .line 134; .endef
.def _ctor_run_condition_5; .val _ctor_run_condition_5.47; .scl 3; .type 014; .endef
pushl %ebp
movl %esp,%ebp
subl $8,%esp
cmpb $0,_ctor_run_condition_5.47
je L60
movb $0,_ctor_run_condition_5.47
addl $-12,%esp
pushl $_fini_pascal_main_program
call __p_atexit
L60:
movl %ebp,%esp
popl %ebp
ret
.def .ef; .val .; .scl 101; .line 1; .endef
.def _init_pascal_main_program; .val .; .scl -1; .endef
.p2align 2
.def _fini_pascal_main_program; .val _fini_pascal_main_program; .scl 2; .type 041; .endef
.globl _fini_pascal_main_program
_fini_pascal_main_program:
.def .bf; .val .; .scl 101; .line 134; .endef
pushl %ebp
movl %esp,%ebp
movl %ebp,%esp
popl %ebp
ret
.def .ef; .val .; .scl 101; .line 1; .endef
.def _fini_pascal_main_program; .val .; .scl -1; .endef
.p2align 2
.def _main; .val _main; .scl 2; .type 044; .endef
.globl _main
_main:
.def .bf; .val .; .scl 101; .line 134; .endef
.def _argc; .val 8; .scl 9; .type 04; .endef
.def _argv; .val 12; .scl 9; .type 0120; .endef
.def _envp; .val 16; .scl 9; .type 0120; .endef
.def _argc; .val 1; .scl 4; .type 04; .endef
.def _argv; .val 2; .scl 4; .type 0120; .endef
.def _envp; .val 0; .scl 4; .type 0120; .endef
pushl %ebp
movl %esp,%ebp
subl $8,%esp
movl 8(%ebp),%ecx
movl 12(%ebp),%edx
movl 16(%ebp),%eax
addl $-4,%esp
pushl %eax
pushl %edx
pushl %ecx
call __p_initialize
call _init_pascal_main_program
call _pascal_main_program
call __p_finalize
xorl %eax,%eax
movl %ebp,%esp
popl %ebp
ret
.def .ef; .val .; .scl 101; .line 1; .endef
.def _main; .val .; .scl -1; .endef
------------------------------------------------------------------------------------
For reference here is fay.pas (comments deleted at begin and end)
-------------------------------------------------------------------------------------
program fay(output);
type integer = -32767..32768; node = 0..4500;
var Debug: boolean;
procedure EachUSCC( { of relation R }
{ Pass in an iterator to generate the nodes to be searched,
the relation on the nodes, a procedure to do information
propagation when V R W is discovered, a procedure
to take each SCC found, and a procedure to yield each
node in the graph.
We require that the nodes be of a scalar type so that
an array may be indexed by them. Also passed in is the
upper bound of the node type. }
procedure EachUnode(procedure P(T:node)); { Yields each node in graph }
procedure EachUnodeUtoUsearch(procedure SearchU(V:node));
procedure R(V:node; procedure DoUsuccessor(W:node));
procedure Propagate(V,W:node); { called when V R W is discovered }
procedure TakeUSCC(Root:node; procedure Each(procedure P(T:node)));
LastUnode: integer
);
type
A = array[node] of integer; { range 0..Infinity (below) }
var N: ^A; SP: integer;
Stack: array[node {1..LastUnode}] of node;
Infinity: integer; { LastUnode+1 }
procedure P(T:node); begin N^[T] := 0; end;
procedure Search(V:node);
var I,T:integer;
procedure DoUsuccessor(W:node);
begin
Search(W);
if N^[W] < N^[V] then N^[V] := N^[W];
Propagate(V,W);
end;
{ EachUmember is yielded by EachUSCC when an SCC has been found. }
procedure EachUmember(procedure P(TU:node));
var I:integer;
begin { yield each member of current SCC }
for I := SP downto T do P(Stack[I]);
end;
procedure YieldUSCC;
begin
if Debug then writeln('YieldUSCC passes',V,' to TakeUSCC');
TakeUSCC(V,EachUmember);
end;
begin
if N^[V] = 0 then begin { stack the node }
if Debug then writeln('stacking ',V);
SP := SP+1;
Stack[SP] := V; N^[V] := SP;
if Debug then writeln('Doing successors of ',V);
R(V,DoUsuccessor);
if Debug then writeln('Now checking if ',V,' is an SCC root');
if V = Stack[N^[V]] then begin { V is root of an SCC }
T := N^[V];
if Debug then writeln(V,' is an SCC root; SP=',SP,' T=',T);
for I := SP downto T do N^[Stack[I]] := Infinity;
if SP <> T then begin
if Debug then writeln('Yield SCC should pass ',V,' out to TakeUSCC');
YieldUSCC;
end;
SP := T-1;
end;
end;
end;
begin
Infinity := LastUnode+1;
new(N); EachUnode(P);
SP := 0;
EachUnodeUtoUsearch(Search);
dispose(N);
end;
procedure Outer; { needed to produce bug in Berkeley Pascal compiler }
procedure q;
procedure EachUnodeUtoUsearch(procedure Search(T:node));
begin
Search(1);
end;
procedure EachUnode(procedure P(T:node));
begin P(1); P(2);
end;
procedure R(V:node; procedure P(W:node));
begin
{ Defines graph with edges 1->2 and 2->1 }
{ Thus, the graph contains one SCC: [1,2] }
case V of
1: P(2);
2: P(1);
end;
end;
procedure Propagate(V,W:node); begin end;
procedure TakeUSCC(Root:node; procedure Each(procedure P(T:node)));
procedure P(T:node); begin write(T); end;
begin
writeln('TakeUSCC receives V=',Root,' from YieldUSCC');
writeln('The SCC''s constituents are:');
Each(P); writeln;
end;
begin
EachUSCC(EachUnode,EachUnodeUtoUsearch,R,Propagate,TakeUSCC,2);
end;
procedure Doit;
begin
q;
end;
begin
Doit;
end;
begin
Debug := true;
Outer;
end.
------------------------------------------------------------------------------------
Thanks for fast reply !
Maurice
--
Maurice Lombardi
Laboratoire de Spectrometrie Physique,
Universite Joseph Fourier de Grenoble, BP87
38402 Saint Martin d'Heres Cedex FRANCE
Tel: 33 (0)4 76 51 47 51
Fax: 33 (0)4 76 51 45 44
mailto:Maurice.Lombardi@ujf-grenoble.fr
^ permalink raw reply [flat|nested] 6+ messages in thread