[Haskell-cafe] Re: [haskell] ANNOUNCE: HNOP 0.1

Ian Lynagh igloo at earth.li
Sat Jul 1 10:05:29 EDT 2006


On Fri, Jun 30, 2006 at 03:45:57PM -0700, mvanier wrote:
> 
> I'm at a loss here.  Somehow, the SplitObjs option doesn't seem to be doing 
> the job.  Any suggestions would be appreciated.

It looks like gcc 4.1 is floating all the

     __asm__("\n__stg_split_marker:");

results to the top of the file, so the splitter sees only a number of
empty sections followed by one large one. Results of

    echo 'module Foo where' > Foo.hs
    for i in `seq 1 10`; do echo "foo$i = 'c'" >> Foo.hs; done
    mkdir Foo_split
    ghc -O -split-objs -c Foo.hs -v -keep-tmp-files

are attached, using

    $ gcc -v
    Using built-in specs.
    Target: i486-linux-gnu
    Configured with: ../src/configure -v --enable-languages=c,c++,java,fortran,objc,obj-c++,ada,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.1-1.4.2.0/jre --enable-mpfr --with-tune=i686 --enable-checking=release i486-linux-gnu
    Thread model: posix
    gcc version 4.1.2 20060613 (prerelease) (Debian 4.1.1-5)

Amd64 doesn't seem to be afflicted.


Thanks
Ian

-------------- next part --------------
igloo at userpc15:~/debug$ ghc -O -split-objs -c Foo.hs -v -keep-tmp-files
Glasgow Haskell Compiler, Version 6.4.2, for Haskell 98, compiled by GHC version 6.4.2
Using package config file: /usr/lib/ghc-6.4.2/package.conf
Hsc static flags: -static -fglobalise-toplev-names
*** Checking old interface for Foo:
*** Parser:
*** Renamer/typechecker:
*** Desugar:
    Result size = 50
*** Simplify:
    Result size = 30
    Result size = 30
*** Specialise:
    Result size = 30
*** Float out (not lambdas, not constants):
    Result size = 30
*** Float inwards:
    Result size = 30
*** Simplify:
    Result size = 30
*** Simplify:
    Result size = 30
*** Simplify:
    Result size = 30
*** Demand analysis:
    Result size = 30
*** Worker Wrapper binds:
    Result size = 30
*** GlomBinds:
*** Simplify:
    Result size = 30
*** Float out (not lambdas, constants):
    Result size = 30
*** Common sub-expression:
    Result size = 21
*** Float inwards:
    Result size = 21
*** Simplify:
    Result size = 21
*** Tidy Core:
    Result size = 21
*** CorePrep:
    Result size = 21
*** Stg2Stg:
*** CodeGen:
*** CodeOutput:
*** C Compiler
gcc -x c /tmp/ghc26801.hc -o /tmp/ghc26801.raw_s -DDONT_WANT_WIN32_DLL_SUPPORT -fno-defer-pop -fomit-frame-pointer -fno-builtin -DSTOLEN_X86_REGS=4 -ffloat-store -fno-strict-aliasing -v -S -Wimplicit -O -D__GLASGOW_HASKELL__=604 -DUSE_SPLIT_MARKERS -I . -I /usr/lib/ghc-6.4.2/include
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,java,fortran,objc,obj-c++,ada,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.1-1.4.2.0/jre --enable-mpfr --with-tune=i686 --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.1.2 20060613 (prerelease) (Debian 4.1.1-5)
 /usr/lib/gcc/i486-linux-gnu/4.1.2/cc1 -quiet -v -I . -I /usr/lib/ghc-6.4.2/include -DDONT_WANT_WIN32_DLL_SUPPORT -DSTOLEN_X86_REGS=4 -D__GLASGOW_HASKELL__=604 -DUSE_SPLIT_MARKERS /tmp/ghc26801.hc -quiet -dumpbase ghc26801.hc -mtune=i686 -auxbase-strip /tmp/ghc26801.raw_s -O -Wimplicit -version -fno-defer-pop -fomit-frame-pointer -fno-builtin -ffloat-store -fno-strict-aliasing -o /tmp/ghc26801.raw_s
ignoring nonexistent directory "/usr/local/include/i486-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../i486-linux-gnu/include"
ignoring nonexistent directory "/usr/include/i486-linux-gnu"
#include "..." search starts here:
#include <...> search starts here:
 .
 /usr/lib/ghc-6.4.2/include
 /usr/local/include
 /usr/lib/gcc/i486-linux-gnu/4.1.2/include
 /usr/include
End of search list.
GNU C version 4.1.2 20060613 (prerelease) (Debian 4.1.1-5) (i486-linux-gnu)
        compiled by GNU C version 4.1.2 20060613 (prerelease) (Debian 4.1.1-5).
GGC heuristics: --param ggc-min-expand=99 --param ggc-min-heapsize=129565
Compiler executable checksum: 3efbb0b5b3119ec825babd3e1cecb910
*** Mangler
/usr/lib/ghc-6.4.2/ghc-asm /tmp/ghc26801.raw_s /tmp/ghc26801.split_s 4
*** Splitter
/usr/lib/ghc-6.4.2/ghc-split /tmp/ghc26801.split_s /tmp/ghc26801.split /tmp/ghc26801.split
*** Assembler
gcc -c -o Foo_split/Foo__1.o /tmp/ghc26801.split__1.s

-------------- next part --------------
/* GHC_PACKAGES base-1.0 rts-1.0
*/
#include "Stg.h"
#include "HsBase.h"
__STG_SPLIT_MARKER
EI_(GHCziBase_Czh_static_info);
StgWord Foo_foo10_closure[] = {
(W_)&GHCziBase_Czh_static_info, 0x63U
};
__STG_SPLIT_MARKER
EI_(Foo_foo9_info);
StgWord Foo_foo9_closure[] = {
(W_)&Foo_foo9_info, 0x0, 0x0, 0x0
};

StgWord Foo_foo9_info[] = {
0x20000U, 0x18U
};

EI_(Foo_foo10_closure);
FN_(Foo_foo9_entry) {
FB_
if (((W_)Sp - 0x8U) < (W_)SpLim) goto _c1x8;
Hp=Hp+3;
if ((W_)Hp > (W_)HpLim) goto _c1x8;
Hp[-2] = (W_)&stg_CAF_BLACKHOLE_info;
CALLER_SAVE_R1
CALLER_SAVE_SYSTEM
newCAF((void *)(W_)R1.w);
CALLER_RESTORE_SYSTEM
CALLER_RESTORE_R1
R1.p[1] = (W_)Hp-8;
*R1.p = (W_)&stg_IND_STATIC_info;
Sp[-2] = (W_)&stg_upd_frame_info;
Sp[-1] = (W_)Hp-8;
R1.p = (P_)(W_)&Foo_foo10_closure;
Sp=Sp-2;
JMP_((W_)&stg_upd_frame_info);
_c1x8:
HpAlloc = 0xcU;
JMP_(stg_gc_enter_1);
FE_
}
__STG_SPLIT_MARKER
EI_(Foo_foo8_info);
StgWord Foo_foo8_closure[] = {
(W_)&Foo_foo8_info, 0x0, 0x0, 0x0
};

StgWord Foo_foo8_info[] = {
0x20000U, 0x18U
};

EI_(Foo_foo10_closure);
FN_(Foo_foo8_entry) {
FB_
if (((W_)Sp - 0x8U) < (W_)SpLim) goto _c1xd;
Hp=Hp+3;
if ((W_)Hp > (W_)HpLim) goto _c1xd;
Hp[-2] = (W_)&stg_CAF_BLACKHOLE_info;
CALLER_SAVE_R1
CALLER_SAVE_SYSTEM
newCAF((void *)(W_)R1.w);
CALLER_RESTORE_SYSTEM
CALLER_RESTORE_R1
R1.p[1] = (W_)Hp-8;
*R1.p = (W_)&stg_IND_STATIC_info;
Sp[-2] = (W_)&stg_upd_frame_info;
Sp[-1] = (W_)Hp-8;
R1.p = (P_)(W_)&Foo_foo10_closure;
Sp=Sp-2;
JMP_((W_)&stg_upd_frame_info);
_c1xd:
HpAlloc = 0xcU;
JMP_(stg_gc_enter_1);
FE_
}
__STG_SPLIT_MARKER
EI_(Foo_foo7_info);
StgWord Foo_foo7_closure[] = {
(W_)&Foo_foo7_info, 0x0, 0x0, 0x0
};

StgWord Foo_foo7_info[] = {
0x20000U, 0x18U
};

EI_(Foo_foo10_closure);
FN_(Foo_foo7_entry) {
FB_
if (((W_)Sp - 0x8U) < (W_)SpLim) goto _c1xi;
Hp=Hp+3;
if ((W_)Hp > (W_)HpLim) goto _c1xi;
Hp[-2] = (W_)&stg_CAF_BLACKHOLE_info;
CALLER_SAVE_R1
CALLER_SAVE_SYSTEM
newCAF((void *)(W_)R1.w);
CALLER_RESTORE_SYSTEM
CALLER_RESTORE_R1
R1.p[1] = (W_)Hp-8;
*R1.p = (W_)&stg_IND_STATIC_info;
Sp[-2] = (W_)&stg_upd_frame_info;
Sp[-1] = (W_)Hp-8;
R1.p = (P_)(W_)&Foo_foo10_closure;
Sp=Sp-2;
JMP_((W_)&stg_upd_frame_info);
_c1xi:
HpAlloc = 0xcU;
JMP_(stg_gc_enter_1);
FE_
}
__STG_SPLIT_MARKER
EI_(Foo_foo6_info);
StgWord Foo_foo6_closure[] = {
(W_)&Foo_foo6_info, 0x0, 0x0, 0x0
};

StgWord Foo_foo6_info[] = {
0x20000U, 0x18U
};

EI_(Foo_foo10_closure);
FN_(Foo_foo6_entry) {
FB_
if (((W_)Sp - 0x8U) < (W_)SpLim) goto _c1xn;
Hp=Hp+3;
if ((W_)Hp > (W_)HpLim) goto _c1xn;
Hp[-2] = (W_)&stg_CAF_BLACKHOLE_info;
CALLER_SAVE_R1
CALLER_SAVE_SYSTEM
newCAF((void *)(W_)R1.w);
CALLER_RESTORE_SYSTEM
CALLER_RESTORE_R1
R1.p[1] = (W_)Hp-8;
*R1.p = (W_)&stg_IND_STATIC_info;
Sp[-2] = (W_)&stg_upd_frame_info;
Sp[-1] = (W_)Hp-8;
R1.p = (P_)(W_)&Foo_foo10_closure;
Sp=Sp-2;
JMP_((W_)&stg_upd_frame_info);
_c1xn:
HpAlloc = 0xcU;
JMP_(stg_gc_enter_1);
FE_
}
__STG_SPLIT_MARKER
EI_(Foo_foo5_info);
StgWord Foo_foo5_closure[] = {
(W_)&Foo_foo5_info, 0x0, 0x0, 0x0
};

StgWord Foo_foo5_info[] = {
0x20000U, 0x18U
};

EI_(Foo_foo10_closure);
FN_(Foo_foo5_entry) {
FB_
if (((W_)Sp - 0x8U) < (W_)SpLim) goto _c1xs;
Hp=Hp+3;
if ((W_)Hp > (W_)HpLim) goto _c1xs;
Hp[-2] = (W_)&stg_CAF_BLACKHOLE_info;
CALLER_SAVE_R1
CALLER_SAVE_SYSTEM
newCAF((void *)(W_)R1.w);
CALLER_RESTORE_SYSTEM
CALLER_RESTORE_R1
R1.p[1] = (W_)Hp-8;
*R1.p = (W_)&stg_IND_STATIC_info;
Sp[-2] = (W_)&stg_upd_frame_info;
Sp[-1] = (W_)Hp-8;
R1.p = (P_)(W_)&Foo_foo10_closure;
Sp=Sp-2;
JMP_((W_)&stg_upd_frame_info);
_c1xs:
HpAlloc = 0xcU;
JMP_(stg_gc_enter_1);
FE_
}
__STG_SPLIT_MARKER
EI_(Foo_foo4_info);
StgWord Foo_foo4_closure[] = {
(W_)&Foo_foo4_info, 0x0, 0x0, 0x0
};

StgWord Foo_foo4_info[] = {
0x20000U, 0x18U
};

EI_(Foo_foo10_closure);
FN_(Foo_foo4_entry) {
FB_
if (((W_)Sp - 0x8U) < (W_)SpLim) goto _c1xx;
Hp=Hp+3;
if ((W_)Hp > (W_)HpLim) goto _c1xx;
Hp[-2] = (W_)&stg_CAF_BLACKHOLE_info;
CALLER_SAVE_R1
CALLER_SAVE_SYSTEM
newCAF((void *)(W_)R1.w);
CALLER_RESTORE_SYSTEM
CALLER_RESTORE_R1
R1.p[1] = (W_)Hp-8;
*R1.p = (W_)&stg_IND_STATIC_info;
Sp[-2] = (W_)&stg_upd_frame_info;
Sp[-1] = (W_)Hp-8;
R1.p = (P_)(W_)&Foo_foo10_closure;
Sp=Sp-2;
JMP_((W_)&stg_upd_frame_info);
_c1xx:
HpAlloc = 0xcU;
JMP_(stg_gc_enter_1);
FE_
}
__STG_SPLIT_MARKER
EI_(Foo_foo3_info);
StgWord Foo_foo3_closure[] = {
(W_)&Foo_foo3_info, 0x0, 0x0, 0x0
};

StgWord Foo_foo3_info[] = {
0x20000U, 0x18U
};

EI_(Foo_foo10_closure);
FN_(Foo_foo3_entry) {
FB_
if (((W_)Sp - 0x8U) < (W_)SpLim) goto _c1xC;
Hp=Hp+3;
if ((W_)Hp > (W_)HpLim) goto _c1xC;
Hp[-2] = (W_)&stg_CAF_BLACKHOLE_info;
CALLER_SAVE_R1
CALLER_SAVE_SYSTEM
newCAF((void *)(W_)R1.w);
CALLER_RESTORE_SYSTEM
CALLER_RESTORE_R1
R1.p[1] = (W_)Hp-8;
*R1.p = (W_)&stg_IND_STATIC_info;
Sp[-2] = (W_)&stg_upd_frame_info;
Sp[-1] = (W_)Hp-8;
R1.p = (P_)(W_)&Foo_foo10_closure;
Sp=Sp-2;
JMP_((W_)&stg_upd_frame_info);
_c1xC:
HpAlloc = 0xcU;
JMP_(stg_gc_enter_1);
FE_
}
__STG_SPLIT_MARKER
EI_(Foo_foo2_info);
StgWord Foo_foo2_closure[] = {
(W_)&Foo_foo2_info, 0x0, 0x0, 0x0
};

StgWord Foo_foo2_info[] = {
0x20000U, 0x18U
};

EI_(Foo_foo10_closure);
FN_(Foo_foo2_entry) {
FB_
if (((W_)Sp - 0x8U) < (W_)SpLim) goto _c1xH;
Hp=Hp+3;
if ((W_)Hp > (W_)HpLim) goto _c1xH;
Hp[-2] = (W_)&stg_CAF_BLACKHOLE_info;
CALLER_SAVE_R1
CALLER_SAVE_SYSTEM
newCAF((void *)(W_)R1.w);
CALLER_RESTORE_SYSTEM
CALLER_RESTORE_R1
R1.p[1] = (W_)Hp-8;
*R1.p = (W_)&stg_IND_STATIC_info;
Sp[-2] = (W_)&stg_upd_frame_info;
Sp[-1] = (W_)Hp-8;
R1.p = (P_)(W_)&Foo_foo10_closure;
Sp=Sp-2;
JMP_((W_)&stg_upd_frame_info);
_c1xH:
HpAlloc = 0xcU;
JMP_(stg_gc_enter_1);
FE_
}
__STG_SPLIT_MARKER
EI_(Foo_foo1_info);
StgWord Foo_foo1_closure[] = {
(W_)&Foo_foo1_info, 0x0, 0x0, 0x0
};

StgWord Foo_foo1_info[] = {
0x20000U, 0x18U
};

EI_(Foo_foo10_closure);
FN_(Foo_foo1_entry) {
FB_
if (((W_)Sp - 0x8U) < (W_)SpLim) goto _c1xM;
Hp=Hp+3;
if ((W_)Hp > (W_)HpLim) goto _c1xM;
Hp[-2] = (W_)&stg_CAF_BLACKHOLE_info;
CALLER_SAVE_R1
CALLER_SAVE_SYSTEM
newCAF((void *)(W_)R1.w);
CALLER_RESTORE_SYSTEM
CALLER_RESTORE_R1
R1.p[1] = (W_)Hp-8;
*R1.p = (W_)&stg_IND_STATIC_info;
Sp[-2] = (W_)&stg_upd_frame_info;
Sp[-1] = (W_)Hp-8;
R1.p = (P_)(W_)&Foo_foo10_closure;
Sp=Sp-2;
JMP_((W_)&stg_upd_frame_info);
_c1xM:
HpAlloc = 0xcU;
JMP_(stg_gc_enter_1);
FE_
}
__STG_SPLIT_MARKER
static StgWord _module_registered[] = {
0x0
};


EF_(__stginit_Prelude_);
FN_(__stginit_Foo_) {
FB_
if (0x0 != (*((P_)(W_)&_module_registered))) goto _c1xO;
goto _c1xQ;
_c1xO:
Sp=Sp+1;
JMP_(Sp[-1]);
_c1xQ:
*((P_)(W_)&_module_registered) = 0x1U;
Sp=Sp-1;
*Sp = (W_)&__stginit_Prelude_;
goto _c1xO;
FE_
}


EF_(__stginit_Foo_);
FN_(__stginit_Foo) {
FB_
JMP_((W_)&__stginit_Foo_);
FE_
}
-------------- next part --------------
	.file	"ghc26801.hc"
#APP
	
__stg_split_marker:
	
__stg_split_marker:
	
__stg_split_marker:
	
__stg_split_marker:
	
__stg_split_marker:
	
__stg_split_marker:
	
__stg_split_marker:
	
__stg_split_marker:
	
__stg_split_marker:
	
__stg_split_marker:
	
__stg_split_marker:
#NO_APP
	.text
.globl __stginit_Foo
	.type	__stginit_Foo, @function
__stginit_Foo:
	subl	$12, %esp
#APP
	--- BEGIN ---
#NO_APP
	call	__DISCARD__
	call	__DISCARD__
	movl	$__stginit_Foo_, %eax
	jmp	*%eax
	.size	__stginit_Foo, .-__stginit_Foo
.globl __stginit_Foo_
	.type	__stginit_Foo_, @function
__stginit_Foo_:
	subl	$12, %esp
#APP
	--- BEGIN ---
#NO_APP
	call	__DISCARD__
	cmpl	$0, _module_registered
	je	.L4
.L5:
	addl	$4, %ebp
	call	__DISCARD__
	jmp	*-4(%ebp)
.L4:
	movl	$1, _module_registered
	leal	-4(%ebp), %eax
	movl	%eax, %ebp
	movl	$__stginit_Prelude_, (%eax)
	jmp	.L5
	.size	__stginit_Foo_, .-__stginit_Foo_
.globl Foo_foo1_entry
	.type	Foo_foo1_entry, @function
Foo_foo1_entry:
	subl	$12, %esp
#APP
	--- BEGIN ---
#NO_APP
	call	__DISCARD__
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L8
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L8
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	call	__DISCARD__
	movl	$stg_upd_frame_info, %eax
.L11:
	jmp	*%eax
.L8:
	movl	$12, 108(%edx)
	call	__DISCARD__
	movl	-8(%ebx), %eax
	jmp	.L11
	.size	Foo_foo1_entry, .-Foo_foo1_entry
.globl Foo_foo2_entry
	.type	Foo_foo2_entry, @function
Foo_foo2_entry:
	subl	$12, %esp
#APP
	--- BEGIN ---
#NO_APP
	call	__DISCARD__
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L14
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L14
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	call	__DISCARD__
	movl	$stg_upd_frame_info, %eax
.L17:
	jmp	*%eax
.L14:
	movl	$12, 108(%edx)
	call	__DISCARD__
	movl	-8(%ebx), %eax
	jmp	.L17
	.size	Foo_foo2_entry, .-Foo_foo2_entry
.globl Foo_foo3_entry
	.type	Foo_foo3_entry, @function
Foo_foo3_entry:
	subl	$12, %esp
#APP
	--- BEGIN ---
#NO_APP
	call	__DISCARD__
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L20
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L20
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	call	__DISCARD__
	movl	$stg_upd_frame_info, %eax
.L23:
	jmp	*%eax
.L20:
	movl	$12, 108(%edx)
	call	__DISCARD__
	movl	-8(%ebx), %eax
	jmp	.L23
	.size	Foo_foo3_entry, .-Foo_foo3_entry
.globl Foo_foo4_entry
	.type	Foo_foo4_entry, @function
Foo_foo4_entry:
	subl	$12, %esp
#APP
	--- BEGIN ---
#NO_APP
	call	__DISCARD__
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L26
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L26
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	call	__DISCARD__
	movl	$stg_upd_frame_info, %eax
.L29:
	jmp	*%eax
.L26:
	movl	$12, 108(%edx)
	call	__DISCARD__
	movl	-8(%ebx), %eax
	jmp	.L29
	.size	Foo_foo4_entry, .-Foo_foo4_entry
.globl Foo_foo5_entry
	.type	Foo_foo5_entry, @function
Foo_foo5_entry:
	subl	$12, %esp
#APP
	--- BEGIN ---
#NO_APP
	call	__DISCARD__
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L32
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L32
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	call	__DISCARD__
	movl	$stg_upd_frame_info, %eax
.L35:
	jmp	*%eax
.L32:
	movl	$12, 108(%edx)
	call	__DISCARD__
	movl	-8(%ebx), %eax
	jmp	.L35
	.size	Foo_foo5_entry, .-Foo_foo5_entry
.globl Foo_foo6_entry
	.type	Foo_foo6_entry, @function
Foo_foo6_entry:
	subl	$12, %esp
#APP
	--- BEGIN ---
#NO_APP
	call	__DISCARD__
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L38
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L38
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	call	__DISCARD__
	movl	$stg_upd_frame_info, %eax
.L41:
	jmp	*%eax
.L38:
	movl	$12, 108(%edx)
	call	__DISCARD__
	movl	-8(%ebx), %eax
	jmp	.L41
	.size	Foo_foo6_entry, .-Foo_foo6_entry
.globl Foo_foo7_entry
	.type	Foo_foo7_entry, @function
Foo_foo7_entry:
	subl	$12, %esp
#APP
	--- BEGIN ---
#NO_APP
	call	__DISCARD__
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L44
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L44
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	call	__DISCARD__
	movl	$stg_upd_frame_info, %eax
.L47:
	jmp	*%eax
.L44:
	movl	$12, 108(%edx)
	call	__DISCARD__
	movl	-8(%ebx), %eax
	jmp	.L47
	.size	Foo_foo7_entry, .-Foo_foo7_entry
.globl Foo_foo8_entry
	.type	Foo_foo8_entry, @function
Foo_foo8_entry:
	subl	$12, %esp
#APP
	--- BEGIN ---
#NO_APP
	call	__DISCARD__
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L50
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L50
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	call	__DISCARD__
	movl	$stg_upd_frame_info, %eax
.L53:
	jmp	*%eax
.L50:
	movl	$12, 108(%edx)
	call	__DISCARD__
	movl	-8(%ebx), %eax
	jmp	.L53
	.size	Foo_foo8_entry, .-Foo_foo8_entry
.globl Foo_foo9_entry
	.type	Foo_foo9_entry, @function
Foo_foo9_entry:
	subl	$12, %esp
#APP
	--- BEGIN ---
#NO_APP
	call	__DISCARD__
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L56
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L56
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	call	__DISCARD__
	movl	$stg_upd_frame_info, %eax
.L59:
	jmp	*%eax
.L56:
	movl	$12, 108(%edx)
	call	__DISCARD__
	movl	-8(%ebx), %eax
	jmp	.L59
	.size	Foo_foo9_entry, .-Foo_foo9_entry
.globl Foo_foo10_closure
	.data
	.align 4
	.type	Foo_foo10_closure, @object
	.size	Foo_foo10_closure, 8
Foo_foo10_closure:
	.long	GHCziBase_Czh_static_info
	.long	99
.globl Foo_foo9_closure
	.align 4
	.type	Foo_foo9_closure, @object
	.size	Foo_foo9_closure, 16
Foo_foo9_closure:
	.long	Foo_foo9_info
	.long	0
	.long	0
	.long	0
.globl Foo_foo9_info
	.align 4
	.type	Foo_foo9_info, @object
	.size	Foo_foo9_info, 8
Foo_foo9_info:
	.long	131072
	.long	24
.globl Foo_foo8_closure
	.align 4
	.type	Foo_foo8_closure, @object
	.size	Foo_foo8_closure, 16
Foo_foo8_closure:
	.long	Foo_foo8_info
	.long	0
	.long	0
	.long	0
.globl Foo_foo8_info
	.align 4
	.type	Foo_foo8_info, @object
	.size	Foo_foo8_info, 8
Foo_foo8_info:
	.long	131072
	.long	24
.globl Foo_foo7_closure
	.align 4
	.type	Foo_foo7_closure, @object
	.size	Foo_foo7_closure, 16
Foo_foo7_closure:
	.long	Foo_foo7_info
	.long	0
	.long	0
	.long	0
.globl Foo_foo7_info
	.align 4
	.type	Foo_foo7_info, @object
	.size	Foo_foo7_info, 8
Foo_foo7_info:
	.long	131072
	.long	24
.globl Foo_foo6_closure
	.align 4
	.type	Foo_foo6_closure, @object
	.size	Foo_foo6_closure, 16
Foo_foo6_closure:
	.long	Foo_foo6_info
	.long	0
	.long	0
	.long	0
.globl Foo_foo6_info
	.align 4
	.type	Foo_foo6_info, @object
	.size	Foo_foo6_info, 8
Foo_foo6_info:
	.long	131072
	.long	24
.globl Foo_foo5_closure
	.align 4
	.type	Foo_foo5_closure, @object
	.size	Foo_foo5_closure, 16
Foo_foo5_closure:
	.long	Foo_foo5_info
	.long	0
	.long	0
	.long	0
.globl Foo_foo5_info
	.align 4
	.type	Foo_foo5_info, @object
	.size	Foo_foo5_info, 8
Foo_foo5_info:
	.long	131072
	.long	24
.globl Foo_foo4_closure
	.align 4
	.type	Foo_foo4_closure, @object
	.size	Foo_foo4_closure, 16
Foo_foo4_closure:
	.long	Foo_foo4_info
	.long	0
	.long	0
	.long	0
.globl Foo_foo4_info
	.align 4
	.type	Foo_foo4_info, @object
	.size	Foo_foo4_info, 8
Foo_foo4_info:
	.long	131072
	.long	24
.globl Foo_foo3_closure
	.align 4
	.type	Foo_foo3_closure, @object
	.size	Foo_foo3_closure, 16
Foo_foo3_closure:
	.long	Foo_foo3_info
	.long	0
	.long	0
	.long	0
.globl Foo_foo3_info
	.align 4
	.type	Foo_foo3_info, @object
	.size	Foo_foo3_info, 8
Foo_foo3_info:
	.long	131072
	.long	24
.globl Foo_foo2_closure
	.align 4
	.type	Foo_foo2_closure, @object
	.size	Foo_foo2_closure, 16
Foo_foo2_closure:
	.long	Foo_foo2_info
	.long	0
	.long	0
	.long	0
.globl Foo_foo2_info
	.align 4
	.type	Foo_foo2_info, @object
	.size	Foo_foo2_info, 8
Foo_foo2_info:
	.long	131072
	.long	24
.globl Foo_foo1_closure
	.align 4
	.type	Foo_foo1_closure, @object
	.size	Foo_foo1_closure, 16
Foo_foo1_closure:
	.long	Foo_foo1_info
	.long	0
	.long	0
	.long	0
.globl Foo_foo1_info
	.align 4
	.type	Foo_foo1_info, @object
	.size	Foo_foo1_info, 8
Foo_foo1_info:
	.long	131072
	.long	24
	.local	_module_registered
	.comm	_module_registered,4,4
	.ident	"GCC: (GNU) 4.1.2 20060613 (prerelease) (Debian 4.1.1-5)"
	.section	.note.GNU-stack,"", at progbits
-------------- next part --------------
.text
	.align 4
	.file	"ghc26801.hc"
	
___stg_split_marker:
___stg_split_marker:
___stg_split_marker:
___stg_split_marker:
___stg_split_marker:
___stg_split_marker:
___stg_split_marker:
___stg_split_marker:
___stg_split_marker:
___stg_split_marker:
___stg_split_marker:
.text
	.align 4
.globl __stginit_Foo
	.type	__stginit_Foo, @function
__stginit_Foo:
	movl	$__stginit_Foo_, %eax
	jmp	*%eax
	.size	__stginit_Foo, .-__stginit_Foo
.text
	.align 4
.globl __stginit_Foo_
	.type	__stginit_Foo_, @function
__stginit_Foo_:
	cmpl	$0, _module_registered
	je	.L4
.L5:
	addl	$4, %ebp
	jmp	*-4(%ebp)
.L4:
	movl	$1, _module_registered
	leal	-4(%ebp), %eax
	movl	%eax, %ebp
	movl	$__stginit_Prelude_, (%eax)
	jmp	.L5
	.size	__stginit_Foo_, .-__stginit_Foo_
.data
	.align 4
.globl Foo_foo1_closure
	.type	Foo_foo1_closure, @object
	.size	Foo_foo1_closure, 16
Foo_foo1_closure:
	.long	Foo_foo1_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo1_info, @object
	.size	Foo_foo1_info, 8
	.long	131072
	.long	24
.globl Foo_foo1_info
Foo_foo1_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L8
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L8
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L11:
	jmp	*%eax
.L8:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L11
.data
	.align 4
.globl Foo_foo2_closure
	.type	Foo_foo2_closure, @object
	.size	Foo_foo2_closure, 16
Foo_foo2_closure:
	.long	Foo_foo2_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo2_info, @object
	.size	Foo_foo2_info, 8
	.long	131072
	.long	24
.globl Foo_foo2_info
Foo_foo2_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L14
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L14
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L17:
	jmp	*%eax
.L14:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L17
.data
	.align 4
.globl Foo_foo3_closure
	.type	Foo_foo3_closure, @object
	.size	Foo_foo3_closure, 16
Foo_foo3_closure:
	.long	Foo_foo3_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo3_info, @object
	.size	Foo_foo3_info, 8
	.long	131072
	.long	24
.globl Foo_foo3_info
Foo_foo3_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L20
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L20
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L23:
	jmp	*%eax
.L20:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L23
.data
	.align 4
.globl Foo_foo4_closure
	.type	Foo_foo4_closure, @object
	.size	Foo_foo4_closure, 16
Foo_foo4_closure:
	.long	Foo_foo4_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo4_info, @object
	.size	Foo_foo4_info, 8
	.long	131072
	.long	24
.globl Foo_foo4_info
Foo_foo4_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L26
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L26
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L29:
	jmp	*%eax
.L26:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L29
.data
	.align 4
.globl Foo_foo5_closure
	.type	Foo_foo5_closure, @object
	.size	Foo_foo5_closure, 16
Foo_foo5_closure:
	.long	Foo_foo5_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo5_info, @object
	.size	Foo_foo5_info, 8
	.long	131072
	.long	24
.globl Foo_foo5_info
Foo_foo5_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L32
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L32
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L35:
	jmp	*%eax
.L32:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L35
.data
	.align 4
.globl Foo_foo6_closure
	.type	Foo_foo6_closure, @object
	.size	Foo_foo6_closure, 16
Foo_foo6_closure:
	.long	Foo_foo6_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo6_info, @object
	.size	Foo_foo6_info, 8
	.long	131072
	.long	24
.globl Foo_foo6_info
Foo_foo6_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L38
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L38
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L41:
	jmp	*%eax
.L38:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L41
.data
	.align 4
.globl Foo_foo7_closure
	.type	Foo_foo7_closure, @object
	.size	Foo_foo7_closure, 16
Foo_foo7_closure:
	.long	Foo_foo7_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo7_info, @object
	.size	Foo_foo7_info, 8
	.long	131072
	.long	24
.globl Foo_foo7_info
Foo_foo7_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L44
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L44
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L47:
	jmp	*%eax
.L44:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L47
.data
	.align 4
.globl Foo_foo8_closure
	.type	Foo_foo8_closure, @object
	.size	Foo_foo8_closure, 16
Foo_foo8_closure:
	.long	Foo_foo8_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo8_info, @object
	.size	Foo_foo8_info, 8
	.long	131072
	.long	24
.globl Foo_foo8_info
Foo_foo8_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L50
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L50
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L53:
	jmp	*%eax
.L50:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L53
.data
	.align 4
.globl Foo_foo9_closure
	.type	Foo_foo9_closure, @object
	.size	Foo_foo9_closure, 16
Foo_foo9_closure:
	.long	Foo_foo9_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo9_info, @object
	.size	Foo_foo9_info, 8
	.long	131072
	.long	24
.globl Foo_foo9_info
Foo_foo9_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L56
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L56
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L59:
	jmp	*%eax
.L56:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L59
.data
	.align 4
.globl Foo_foo10_closure
	.type	Foo_foo10_closure, @object
	.size	Foo_foo10_closure, 8
Foo_foo10_closure:
	.long	GHCziBase_Czh_static_info
	.long	99
.data
	.align 4
	.local	_module_registered
	.comm	_module_registered,4,4
-------------- next part --------------
.text
	.align 4
.text
	.align 4
	.file	"ghc26801.hc"
	
.text
	.align 4
.text
	.align 4
.globl __stginit_Foo
	.type	__stginit_Foo, @function
__stginit_Foo:
	movl	$__stginit_Foo_, %eax
	jmp	*%eax
	.size	__stginit_Foo, .-__stginit_Foo
.text
	.align 4
.globl __stginit_Foo_
	.type	__stginit_Foo_, @function
__stginit_Foo_:
	cmpl	$0, _module_registered
	je	.L4
.L5:
	addl	$4, %ebp
	jmp	*-4(%ebp)
.L4:
	movl	$1, _module_registered
	leal	-4(%ebp), %eax
	movl	%eax, %ebp
	movl	$__stginit_Prelude_, (%eax)
	jmp	.L5
	.size	__stginit_Foo_, .-__stginit_Foo_
.data
	.align 4
.globl Foo_foo1_closure
	.type	Foo_foo1_closure, @object
	.size	Foo_foo1_closure, 16
Foo_foo1_closure:
	.long	Foo_foo1_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo1_info, @object
	.size	Foo_foo1_info, 8
	.long	131072
	.long	24
.globl Foo_foo1_info
Foo_foo1_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L8
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L8
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L11:
	jmp	*%eax
.L8:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L11
.data
	.align 4
.globl Foo_foo2_closure
	.type	Foo_foo2_closure, @object
	.size	Foo_foo2_closure, 16
Foo_foo2_closure:
	.long	Foo_foo2_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo2_info, @object
	.size	Foo_foo2_info, 8
	.long	131072
	.long	24
.globl Foo_foo2_info
Foo_foo2_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L14
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L14
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L17:
	jmp	*%eax
.L14:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L17
.data
	.align 4
.globl Foo_foo3_closure
	.type	Foo_foo3_closure, @object
	.size	Foo_foo3_closure, 16
Foo_foo3_closure:
	.long	Foo_foo3_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo3_info, @object
	.size	Foo_foo3_info, 8
	.long	131072
	.long	24
.globl Foo_foo3_info
Foo_foo3_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L20
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L20
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L23:
	jmp	*%eax
.L20:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L23
.data
	.align 4
.globl Foo_foo4_closure
	.type	Foo_foo4_closure, @object
	.size	Foo_foo4_closure, 16
Foo_foo4_closure:
	.long	Foo_foo4_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo4_info, @object
	.size	Foo_foo4_info, 8
	.long	131072
	.long	24
.globl Foo_foo4_info
Foo_foo4_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L26
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L26
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L29:
	jmp	*%eax
.L26:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L29
.data
	.align 4
.globl Foo_foo5_closure
	.type	Foo_foo5_closure, @object
	.size	Foo_foo5_closure, 16
Foo_foo5_closure:
	.long	Foo_foo5_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo5_info, @object
	.size	Foo_foo5_info, 8
	.long	131072
	.long	24
.globl Foo_foo5_info
Foo_foo5_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L32
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L32
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L35:
	jmp	*%eax
.L32:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L35
.data
	.align 4
.globl Foo_foo6_closure
	.type	Foo_foo6_closure, @object
	.size	Foo_foo6_closure, 16
Foo_foo6_closure:
	.long	Foo_foo6_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo6_info, @object
	.size	Foo_foo6_info, 8
	.long	131072
	.long	24
.globl Foo_foo6_info
Foo_foo6_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L38
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L38
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L41:
	jmp	*%eax
.L38:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L41
.data
	.align 4
.globl Foo_foo7_closure
	.type	Foo_foo7_closure, @object
	.size	Foo_foo7_closure, 16
Foo_foo7_closure:
	.long	Foo_foo7_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo7_info, @object
	.size	Foo_foo7_info, 8
	.long	131072
	.long	24
.globl Foo_foo7_info
Foo_foo7_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L44
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L44
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L47:
	jmp	*%eax
.L44:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L47
.data
	.align 4
.globl Foo_foo8_closure
	.type	Foo_foo8_closure, @object
	.size	Foo_foo8_closure, 16
Foo_foo8_closure:
	.long	Foo_foo8_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo8_info, @object
	.size	Foo_foo8_info, 8
	.long	131072
	.long	24
.globl Foo_foo8_info
Foo_foo8_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L50
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L50
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L53:
	jmp	*%eax
.L50:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L53
.data
	.align 4
.globl Foo_foo9_closure
	.type	Foo_foo9_closure, @object
	.size	Foo_foo9_closure, 16
Foo_foo9_closure:
	.long	Foo_foo9_info
	.long	0
	.long	0
	.long	0
.text
	.align 4
	.type	Foo_foo9_info, @object
	.size	Foo_foo9_info, 8
	.long	131072
	.long	24
.globl Foo_foo9_info
Foo_foo9_info:
.text
	movl	%ebx, %edx
	leal	-8(%ebp), %eax
	cmpl	84(%ebx), %eax
	jb	.L56
	leal	12(%edi), %eax
	movl	%eax, %edi
	cmpl	92(%ebx), %eax
	ja	.L56
	movl	$stg_CAF_BLACKHOLE_info, -8(%eax)
	movl	%esi, (%esp)
	call	newCAF
	leal	-8(%edi), %eax
	movl	%eax, 4(%esi)
	movl	$stg_IND_STATIC_info, (%esi)
	movl	$stg_upd_frame_info, -8(%ebp)
	movl	%eax, -4(%ebp)
	movl	$Foo_foo10_closure, %esi
	subl	$8, %ebp
	movl	$stg_upd_frame_info, %eax
.L59:
	jmp	*%eax
.L56:
	movl	$12, 108(%edx)
	movl	-8(%ebx), %eax
	jmp .L59
.data
	.align 4
.globl Foo_foo10_closure
	.type	Foo_foo10_closure, @object
	.size	Foo_foo10_closure, 8
Foo_foo10_closure:
	.long	GHCziBase_Czh_static_info
	.long	99
.data
	.align 4
	.local	_module_registered
	.comm	_module_registered,4,4
-------------- next part --------------
1


More information about the Haskell-Cafe mailing list