This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: bug when upgrading bnu210->bnu211 ?


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]