simonmar:
> > simonmar:
> >> Regardless of the gcc bug, that sequence of ifs looks really dumb. 
> >> Can we see the STG fragment that gives rise to this code?
> 
> Ok, update and try now.  I've cleaned up that code a bit, so hopefully
> gcc won't gag on it.

The test program goes through now:

        manzano$ ~/head/i386-unknown-openbsd/ghc/compiler/stage1/ghc-inplace
                        -fvia-C -c -keep-tmp-files -no-recomp T.hs
        mk_switch
            %MO_U_Conv I16 I32(I16[I32[R1] + (-2)]) n_tags:  18 dense:  18
        mk_switch
            %MO_U_Conv I16 I32(I16[I32[R1] + (-2)]) n_tags:  18 dense:  8
        mk_switch _c1Eo n_tags:  9 dense:  8

Generating:
        _c1Eo = (W_)((*((StgWord16*)((*R1.p) + (-0x2)))));
        if (_c1Eo > 0x8) goto _c1Et;
        switch (_c1Eo) {
            case 0x0: goto _c1Ev;
            case 0x1: goto _c1Ex;
            case 0x2: goto _c1Ez;
            case 0x3: goto _c1EB;
            case 0x4: goto _c1Et;
            case 0x5: goto _c1ED;
            case 0x6: goto _c1EF;
            case 0x7: goto _c1EH;
            case 0x8: goto _c1EJ;
        }

which gcc2 deals with nicely. However, MachOp.hs still falls over:

        ../../ghc/compiler/stage1/ghc-inplace -H16m -O   -istage2/utils  
-istage2/basicTypes  -istage2/types  -istage2/hsSyn  -istage2/prelude  -istage2/rename 
 -istage2/typecheck  -istage2/deSugar  -istage2/coreSyn  -istage2/specialise  
-istage2/simplCore  -istage2/stranal  -istage2/stgSyn  -istage2/simplStg  
-istage2/codeGen  -istage2/main  -istage2/profiling  -istage2/parser  
-istage2/cprAnalysis  -istage2/compMan  -istage2/ndpFlatten  -istage2/cbits  
-istage2/iface  -istage2/cmm  -istage2/nativeGen  -istage2/ghci -DGHCI -package 
template-haskell -package unix -package readline  -cpp -fglasgow-exts -fno-generics 
-Rghc-timing -I. -IcodeGen -InativeGen -Iparser -recomp -Rghc-timing -O -dcore-lint 
-H24m -DDEBUG -H16M '-#include "hschooks.h"'    -c cmm/MachOp.hs -o 
stage2/cmm/MachOp.o  -ohi stage2/cmm/MachOp.hi
        mk_switch
            %MO_U_Conv I16 I32(I16[I32[R1] + (-2)]) n_tags:  29 dense:  29
        mk_switch _c5lO n_tags:  2 dense:  2
        mk_switch _c5lT n_tags:  2 dense:  2
        mk_switch _c5lY n_tags:  2 dense:  2
        mk_switch _c5m3 n_tags:  2 dense:  2
        mk_switch _c5m8 n_tags:  2 dense:  2
        mk_switch _c5md n_tags:  2 dense:  2
        mk_switch _c5mi n_tags:  2 dense:  2
        mk_switch _c5mn n_tags:  2 dense:  2
        mk_switch _c5ms n_tags:  2 dense:  2
        mk_switch _c5mx n_tags:  2 dense:  2
        mk_switch _c5mC n_tags:  2 dense:  2
        mk_switch _c5mH n_tags:  2 dense:  2
        mk_switch _c5mM n_tags:  2 dense:  2
        mk_switch _c5mR n_tags:  2 dense:  2
        mk_switch _c5mW n_tags:  2 dense:  2
        mk_switch _c5n1 n_tags:  2 dense:  2
        mk_switch _c5n6 n_tags:  2 dense:  2
        mk_switch _c5nb n_tags:  2 dense:  2
        mk_switch _c5ng n_tags:  2 dense:  2
        mk_switch _c5nl n_tags:  2 dense:  2
        mk_switch _c5nq n_tags:  2 dense:  2
        mk_switch _c5nv n_tags:  2 dense:  2
        mk_switch _c5nA n_tags:  2 dense:  2
        mk_switch _c5nF n_tags:  2 dense:  2
        mk_switch _c5nK n_tags:  2 dense:  2
        mk_switch _c5nP n_tags:  2 dense:  2
        mk_switch _c5nU n_tags:  2 dense:  2
        mk_switch _c5nZ n_tags:  2 dense:  2
        mk_switch _c5o4 n_tags:  2 dense:  2
        mk_switch
            %MO_U_Conv I16 I32(I16[I32[R1] + (-2)]) n_tags:  26 dense:  26
        mk_switch
            %MO_U_Conv I16 I32(I16[I32[R1] + (-2)]) n_tags:  29 dense:  29
        mk_switch
            %MO_U_Conv I16 I32(I16[I32[R1] + (-2)]) n_tags:  29 dense:  29
        mk_switch
            %MO_U_Conv I16 I32(I16[I32[R1] + (-2)]) n_tags:  29 dense:  10
        mk_switch _c5H3 n_tags:  14 dense:  5
        mk_switch _c5H3 n_tags:  5 dense:  5
        mk_switch _c5H3 n_tags:  15 dense:  5
        mk_switch _c5H3 n_tags:  3 dense:  3
        mk_switch _c5H3 n_tags:  12 dense:  2
        mk_switch _c5H3 n_tags:  10 dense:  2
        mk_switch _c5H3 n_tags:  2 dense:  2
        mk_switch
            %MO_U_Conv I16 I32(I16[I32[R1] + (-2)]) n_tags:  29 dense:  10
        mk_switch _c5IS n_tags:  14 dense:  5
        mk_switch _c5IS n_tags:  5 dense:  5
        mk_switch _c5IS n_tags:  15 dense:  5
        mk_switch _c5IS n_tags:  3 dense:  3
        mk_switch _c5IS n_tags:  12 dense:  2
        mk_switch _c5IS n_tags:  10 dense:  2
        mk_switch _c5IS n_tags:  2 dense:  2
        mk_switch
            %MO_U_Conv I16 I32(I16[I32[R1] + (-2)]) n_tags:  29 dense:  5
        mk_switch _c5Jo n_tags:  23 dense:  5
        mk_switch _c5Jo n_tags:  3 dense:  3
        mk_switch _c5Jo n_tags:  20 dense:  2
        mk_switch _c5Jo n_tags:  5 dense:  2
        mk_switch
            %MO_U_Conv I16 I32(I16[I32[R1] + (-2)]) n_tags:  29 dense:  9
        mk_switch _c5JI n_tags:  24 dense:  5
        mk_switch _c5JI n_tags:  18 dense:  5
        mk_switch _c5JI n_tags:  3 dense:  3
        mk_switch _c5JI n_tags:  15 dense:  2
        mk_switch _c5JI n_tags:  5 dense:  2
        mk_switch _c5JI n_tags:  5 dense:  4
        mk_switch _c5Mc n_tags:  2 dense:  2
        mk_switch _c5Mi n_tags:  2 dense:  2
        mk_switch _c5Mo n_tags:  2 dense:  2
        mk_switch _c5Mu n_tags:  2 dense:  2
        mk_switch _c5MA n_tags:  2 dense:  2
        mk_switch _c5MG n_tags:  2 dense:  2
        mk_switch _c5MM n_tags:  2 dense:  2
        mk_switch _c5MS n_tags:  2 dense:  2
        mk_switch
            %MO_U_Conv I16 I32(I16[I32[R1] + (-2)]) n_tags:  29 dense:  29
        mk_switch _c5W8 n_tags:  2 dense:  2
        /tmp/ghc31130.hc: In function `s5ey_ret':
        /tmp/ghc31130.hc:10886: Internal compiler error in `build_insn_chain', at 
global.c:1756
        Please submit a full bug report.
        See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

The problem C code appears to be:
                
        IF_(s5ey_ret) {
                W_ _c5JI;
                FB_
                _c5JI = (W_)((*((StgWord16*)((*R1.p) + (-0x2)))));
                if (_c5JI < 0x5) goto _c5JT;
                if (_c5JI > 0x16) goto _c5JU;
                if (_c5JI < 0x14) goto _c5JV;
                switch (_c5JI-20) {
                    case 0xe: goto _c5JW;
                    case 0x1: goto _c5JX;
                    case 0x2: goto _c5JY;
                }
        ...
                switch (_c5JI) {
                    case 0x0: goto _c5JZ;
                    case 0x1: goto _c5JU;
                    case 0x2: goto _c5K0;
                    case 0x3: goto _c5K1;
                    case 0x4: goto _c5K2;
                }

I've constructed another test case (based on isCommutableMachOp in MachOp.hs)
that fails. The difference to the original test is more gaps between
constructors.
        module M where

        f a = case a of
                A -> True
                C -> True
                D -> True
                E -> True
                F -> True
                J -> True
                U -> True
                V -> True
                W -> True

        data D= A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z

failing with:
        mk_switch
            %MO_U_Conv I16 I32(I16[I32[R1] + (-2)]) n_tags:  26 dense:  26
        mk_switch
            %MO_U_Conv I16 I32(I16[I32[R1] + (-2)]) n_tags:  26 dense:  9
        mk_switch _c1Uq n_tags:  21 dense:  5
        mk_switch _c1Uq n_tags:  6 dense:  3
        mk_switch _c1Uq n_tags:  3 dense:  3
        mk_switch _c1Uq n_tags:  15 dense:  2
        mk_switch _c1Uq n_tags:  5 dense:  2
        mk_switch _c1Uq n_tags:  5 dense:  4
        /tmp/ghc3752.hc: In function `s1Ug_ret':
        /tmp/ghc3752.hc:1244: Internal compiler error in `build_insn_chain', at 
global.c:1756
        Please submit a full bug report.
        See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.

Problem .hc code:
        IF_(s1Ug_ret) {
                W_ _c1Uq;
                FB_
                _c1Uq = (W_)((*((StgWord16*)((*R1.p) + (-0x2)))));
                if (_c1Uq < 0x5) goto _c1UF;
                if (_c1Uq < 0x14) goto _c1UG;
                if (_c1Uq > 0x16) goto _c1UH;
                switch (_c1Uq-20) {
                    case 0x0: goto _c1UI;
                    case 0x1: goto _c1UJ;
                    case 0x2: goto _c1UK;
                }
        ...
            _c1UF:
                switch (_c1Uq) {
                    case 0x0: goto _c1UL;
                    case 0x1: goto _c1UH;
                    case 0x2: goto _c1UM;
                    case 0x3: goto _c1UN;
                    case 0x4: goto _c1UO;
                }

And the STG code for the test case (MachOp.hs is a bit big):

==================== STG syntax: ====================
M.$gfromD =
    \r [ds]
   case ds of wild {
     M.Z ->
         let { sat_s1Lx = NO_CCS GHC.Base.Inr! [GHC.Base.Unit]; } in
         let { sat_s1Lz = NO_CCS GHC.Base.Inr! [sat_s1Lx]; } in
         let { sat_s1LB = NO_CCS GHC.Base.Inr! [sat_s1Lz]; } in
         let { sat_s1LD = NO_CCS GHC.Base.Inr! [sat_s1LB]; } in  GHC.Base.Inr 
[sat_s1LD];
     M.Y ->
         let { sat_s1LF = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1LH = NO_CCS GHC.Base.Inr! [sat_s1LF]; } in
         let { sat_s1LJ = NO_CCS GHC.Base.Inr! [sat_s1LH]; } in
         let { sat_s1LL = NO_CCS GHC.Base.Inr! [sat_s1LJ]; } in  GHC.Base.Inr 
[sat_s1LL];
     M.X ->
         let { sat_s1LN = NO_CCS GHC.Base.Inr! [GHC.Base.Unit]; } in
         let { sat_s1LP = NO_CCS GHC.Base.Inl! [sat_s1LN]; } in
         let { sat_s1LR = NO_CCS GHC.Base.Inr! [sat_s1LP]; } in
         let { sat_s1LT = NO_CCS GHC.Base.Inr! [sat_s1LR]; } in  GHC.Base.Inr 
[sat_s1LT];
     M.W ->
         let { sat_s1LV = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1LX = NO_CCS GHC.Base.Inl! [sat_s1LV]; } in
         let { sat_s1LZ = NO_CCS GHC.Base.Inr! [sat_s1LX]; } in
         let { sat_s1M1 = NO_CCS GHC.Base.Inr! [sat_s1LZ]; } in  GHC.Base.Inr 
[sat_s1M1];
     M.V ->
         let { sat_s1M3 = NO_CCS GHC.Base.Inr! [GHC.Base.Unit]; } in
         let { sat_s1M5 = NO_CCS GHC.Base.Inr! [sat_s1M3]; } in
         let { sat_s1M7 = NO_CCS GHC.Base.Inl! [sat_s1M5]; } in
         let { sat_s1M9 = NO_CCS GHC.Base.Inr! [sat_s1M7]; } in  GHC.Base.Inr 
[sat_s1M9];
     M.U ->
         let { sat_s1Mb = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1Md = NO_CCS GHC.Base.Inr! [sat_s1Mb]; } in
         let { sat_s1Mf = NO_CCS GHC.Base.Inl! [sat_s1Md]; } in
         let { sat_s1Mh = NO_CCS GHC.Base.Inr! [sat_s1Mf]; } in  GHC.Base.Inr 
[sat_s1Mh];
     M.T ->
         let { sat_s1Mj = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1Ml = NO_CCS GHC.Base.Inl! [sat_s1Mj]; } in
         let { sat_s1Mn = NO_CCS GHC.Base.Inr! [sat_s1Ml]; } in  GHC.Base.Inr 
[sat_s1Mn];
     M.S ->
         let { sat_s1Mp = NO_CCS GHC.Base.Inr! [GHC.Base.Unit]; } in
         let { sat_s1Mr = NO_CCS GHC.Base.Inr! [sat_s1Mp]; } in
         let { sat_s1Mt = NO_CCS GHC.Base.Inr! [sat_s1Mr]; } in
         let { sat_s1Mv = NO_CCS GHC.Base.Inl! [sat_s1Mt]; } in  GHC.Base.Inr 
[sat_s1Mv];
     M.R ->
         let { sat_s1Mx = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1Mz = NO_CCS GHC.Base.Inr! [sat_s1Mx]; } in
         let { sat_s1MB = NO_CCS GHC.Base.Inr! [sat_s1Mz]; } in
         let { sat_s1MD = NO_CCS GHC.Base.Inl! [sat_s1MB]; } in  GHC.Base.Inr 
[sat_s1MD];
     M.Q ->
         let { sat_s1MF = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1MH = NO_CCS GHC.Base.Inr! [sat_s1MF]; } in
         let { sat_s1MJ = NO_CCS GHC.Base.Inl! [sat_s1MH]; } in  GHC.Base.Inr 
[sat_s1MJ];
     M.P ->
         let { sat_s1ML = NO_CCS GHC.Base.Inr! [GHC.Base.Unit]; } in
         let { sat_s1MN = NO_CCS GHC.Base.Inr! [sat_s1ML]; } in
         let { sat_s1MP = NO_CCS GHC.Base.Inl! [sat_s1MN]; } in
         let { sat_s1MR = NO_CCS GHC.Base.Inl! [sat_s1MP]; } in  GHC.Base.Inr 
[sat_s1MR];
     M.O ->
         let { sat_s1MT = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1MV = NO_CCS GHC.Base.Inr! [sat_s1MT]; } in
         let { sat_s1MX = NO_CCS GHC.Base.Inl! [sat_s1MV]; } in
         let { sat_s1MZ = NO_CCS GHC.Base.Inl! [sat_s1MX]; } in  GHC.Base.Inr 
[sat_s1MZ];
     M.N ->
         let { sat_s1N1 = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1N3 = NO_CCS GHC.Base.Inl! [sat_s1N1]; } in
         let { sat_s1N5 = NO_CCS GHC.Base.Inl! [sat_s1N3]; } in  GHC.Base.Inr 
[sat_s1N5];
     M.M ->
         let { sat_s1N7 = NO_CCS GHC.Base.Inr! [GHC.Base.Unit]; } in
         let { sat_s1N9 = NO_CCS GHC.Base.Inr! [sat_s1N7]; } in
         let { sat_s1Nb = NO_CCS GHC.Base.Inr! [sat_s1N9]; } in
         let { sat_s1Nd = NO_CCS GHC.Base.Inr! [sat_s1Nb]; } in  GHC.Base.Inl 
[sat_s1Nd];
     M.L ->
         let { sat_s1Nf = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1Nh = NO_CCS GHC.Base.Inr! [sat_s1Nf]; } in
         let { sat_s1Nj = NO_CCS GHC.Base.Inr! [sat_s1Nh]; } in
         let { sat_s1Nl = NO_CCS GHC.Base.Inr! [sat_s1Nj]; } in  GHC.Base.Inl 
[sat_s1Nl];
     M.K ->
         let { sat_s1Nn = NO_CCS GHC.Base.Inr! [GHC.Base.Unit]; } in
         let { sat_s1Np = NO_CCS GHC.Base.Inl! [sat_s1Nn]; } in
         let { sat_s1Nr = NO_CCS GHC.Base.Inr! [sat_s1Np]; } in
         let { sat_s1Nt = NO_CCS GHC.Base.Inr! [sat_s1Nr]; } in  GHC.Base.Inl 
[sat_s1Nt];
     M.J ->
         let { sat_s1Nv = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1Nx = NO_CCS GHC.Base.Inl! [sat_s1Nv]; } in
         let { sat_s1Nz = NO_CCS GHC.Base.Inr! [sat_s1Nx]; } in
         let { sat_s1NB = NO_CCS GHC.Base.Inr! [sat_s1Nz]; } in  GHC.Base.Inl 
[sat_s1NB];
     M.I ->
         let { sat_s1ND = NO_CCS GHC.Base.Inr! [GHC.Base.Unit]; } in
         let { sat_s1NF = NO_CCS GHC.Base.Inr! [sat_s1ND]; } in
         let { sat_s1NH = NO_CCS GHC.Base.Inl! [sat_s1NF]; } in
         let { sat_s1NJ = NO_CCS GHC.Base.Inr! [sat_s1NH]; } in  GHC.Base.Inl 
[sat_s1NJ];
     M.H ->
         let { sat_s1NL = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1NN = NO_CCS GHC.Base.Inr! [sat_s1NL]; } in
         let { sat_s1NP = NO_CCS GHC.Base.Inl! [sat_s1NN]; } in
         let { sat_s1NR = NO_CCS GHC.Base.Inr! [sat_s1NP]; } in  GHC.Base.Inl 
[sat_s1NR];
     M.G ->
         let { sat_s1NT = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1NV = NO_CCS GHC.Base.Inl! [sat_s1NT]; } in
         let { sat_s1NX = NO_CCS GHC.Base.Inr! [sat_s1NV]; } in  GHC.Base.Inl 
[sat_s1NX];
     M.F ->
         let { sat_s1NZ = NO_CCS GHC.Base.Inr! [GHC.Base.Unit]; } in
         let { sat_s1O1 = NO_CCS GHC.Base.Inr! [sat_s1NZ]; } in
         let { sat_s1O3 = NO_CCS GHC.Base.Inr! [sat_s1O1]; } in
         let { sat_s1O5 = NO_CCS GHC.Base.Inl! [sat_s1O3]; } in  GHC.Base.Inl 
[sat_s1O5];
     M.E ->
         let { sat_s1O7 = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1O9 = NO_CCS GHC.Base.Inr! [sat_s1O7]; } in
         let { sat_s1Ob = NO_CCS GHC.Base.Inr! [sat_s1O9]; } in
         let { sat_s1Od = NO_CCS GHC.Base.Inl! [sat_s1Ob]; } in  GHC.Base.Inl 
[sat_s1Od];
     M.D ->
         let { sat_s1Of = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1Oh = NO_CCS GHC.Base.Inr! [sat_s1Of]; } in
         let { sat_s1Oj = NO_CCS GHC.Base.Inl! [sat_s1Oh]; } in  GHC.Base.Inl 
[sat_s1Oj];
     M.C ->
         let { sat_s1Ol = NO_CCS GHC.Base.Inr! [GHC.Base.Unit]; } in
         let { sat_s1On = NO_CCS GHC.Base.Inr! [sat_s1Ol]; } in
         let { sat_s1Op = NO_CCS GHC.Base.Inl! [sat_s1On]; } in
         let { sat_s1Or = NO_CCS GHC.Base.Inl! [sat_s1Op]; } in  GHC.Base.Inl 
[sat_s1Or];
     M.B ->
         let { sat_s1Ot = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1Ov = NO_CCS GHC.Base.Inr! [sat_s1Ot]; } in
         let { sat_s1Ox = NO_CCS GHC.Base.Inl! [sat_s1Ov]; } in
         let { sat_s1Oz = NO_CCS GHC.Base.Inl! [sat_s1Ox]; } in  GHC.Base.Inl 
[sat_s1Oz];
     M.A ->
         let { sat_s1OB = NO_CCS GHC.Base.Inl! [GHC.Base.Unit]; } in
         let { sat_s1OD = NO_CCS GHC.Base.Inl! [sat_s1OB]; } in
         let { sat_s1OF = NO_CCS GHC.Base.Inl! [sat_s1OD]; } in  GHC.Base.Inl 
[sat_s1OF];
   };
SRT(M.$gfromD): []
M.$gtoD =
    \r [g1]
   case g1 of wild {
     GHC.Base.Inl g2 ->
         case g2 of wild1 {
      GHC.Base.Inl g3 ->
          case g3 of wild2 {
            GHC.Base.Inl g4 ->
           case g4 of wild3 {
             GHC.Base.Inl g5 -> M.A [];
             GHC.Base.Inr g5 ->
            case g5 of wild4 {
              GHC.Base.Inl g6 -> M.B [];
              GHC.Base.Inr g6 -> M.C [];
            };
           };
            GHC.Base.Inr g4 ->
           case g4 of wild3 {
             GHC.Base.Inl g5 -> M.D [];
             GHC.Base.Inr g5 ->
            case g5 of wild4 {
              GHC.Base.Inl g6 -> M.E [];
              GHC.Base.Inr g6 -> M.F [];
            };
           };
          };
      GHC.Base.Inr g3 ->
          case g3 of wild2 {
            GHC.Base.Inl g4 ->
           case g4 of wild3 {
             GHC.Base.Inl g5 -> M.G [];
             GHC.Base.Inr g5 ->
            case g5 of wild4 {
              GHC.Base.Inl g6 -> M.H [];
              GHC.Base.Inr g6 -> M.I [];
            };
           };
            GHC.Base.Inr g4 ->
           case g4 of wild3 {
             GHC.Base.Inl g5 ->
            case g5 of wild4 {
              GHC.Base.Inl g6 -> M.J [];
              GHC.Base.Inr g6 -> M.K [];
            };
             GHC.Base.Inr g5 ->
            case g5 of wild4 {
              GHC.Base.Inl g6 -> M.L [];
              GHC.Base.Inr g6 -> M.M [];
            };
           };
          };
         };
     GHC.Base.Inr g2 ->
         case g2 of wild1 {
      GHC.Base.Inl g3 ->
          case g3 of wild2 {
            GHC.Base.Inl g4 ->
           case g4 of wild3 {
             GHC.Base.Inl g5 -> M.N [];
             GHC.Base.Inr g5 ->
            case g5 of wild4 {
              GHC.Base.Inl g6 -> M.O [];
              GHC.Base.Inr g6 -> M.P [];
            };
           };
            GHC.Base.Inr g4 ->
           case g4 of wild3 {
             GHC.Base.Inl g5 -> M.Q [];
             GHC.Base.Inr g5 ->
            case g5 of wild4 {
              GHC.Base.Inl g6 -> M.R [];
              GHC.Base.Inr g6 -> M.S [];
            };
           };
          };
      GHC.Base.Inr g3 ->
          case g3 of wild2 {
            GHC.Base.Inl g4 ->
           case g4 of wild3 {
             GHC.Base.Inl g5 -> M.T [];
             GHC.Base.Inr g5 ->
            case g5 of wild4 {
              GHC.Base.Inl g6 -> M.U [];
              GHC.Base.Inr g6 -> M.V [];
            };
           };
            GHC.Base.Inr g4 ->
           case g4 of wild3 {
             GHC.Base.Inl g5 ->
            case g5 of wild4 {
              GHC.Base.Inl g6 -> M.W [];
              GHC.Base.Inr g6 -> M.X [];
            };
             GHC.Base.Inr g5 ->
            case g5 of wild4 {
              GHC.Base.Inl g6 -> M.Y [];
              GHC.Base.Inr g6 -> M.Z [];
            };
           };
          };
         };
   };
SRT(M.$gtoD): []

M.f =
    \r srt:(0,*bitmap*) [a]
   case a of wild {
     __DEFAULT -> GHC.Err.patError "T.hs:(3,6)-(12,16)|case";
     M.W -> GHC.Base.True [];
     M.V -> GHC.Base.True [];
     M.U -> GHC.Base.True [];
     M.J -> GHC.Base.True [];
     M.F -> GHC.Base.True [];
     M.E -> GHC.Base.True [];
     M.D -> GHC.Base.True [];
     M.C -> GHC.Base.True [];
     M.A -> GHC.Base.True [];
   };

SRT(M.f): [GHC.Err.patError]
M.A = NO_CCS M.A! [];
SRT(M.A): []
M.B = NO_CCS M.B! [];
SRT(M.B): []
M.C = NO_CCS M.C! [];
SRT(M.C): []
M.D = NO_CCS M.D! [];
SRT(M.D): []
M.E = NO_CCS M.E! [];
SRT(M.E): []
M.F = NO_CCS M.F! [];
SRT(M.F): []
M.G = NO_CCS M.G! [];
SRT(M.G): []
M.H = NO_CCS M.H! [];
SRT(M.H): []
M.I = NO_CCS M.I! [];
SRT(M.I): []
M.J = NO_CCS M.J! [];
SRT(M.J): []
M.K = NO_CCS M.K! [];
SRT(M.K): []
M.L = NO_CCS M.L! [];
SRT(M.L): []
M.M = NO_CCS M.M! [];
SRT(M.M): []
M.N = NO_CCS M.N! [];
SRT(M.N): []
M.O = NO_CCS M.O! [];
SRT(M.O): []
M.P = NO_CCS M.P! [];
SRT(M.P): []
M.Q = NO_CCS M.Q! [];
SRT(M.Q): []
M.R = NO_CCS M.R! [];
SRT(M.R): []
M.S = NO_CCS M.S! [];
SRT(M.S): []
M.T = NO_CCS M.T! [];
SRT(M.T): []
M.U = NO_CCS M.U! [];
SRT(M.U): []
M.V = NO_CCS M.V! [];
SRT(M.V): []
M.W = NO_CCS M.W! [];
SRT(M.W): []
M.X = NO_CCS M.X! [];
SRT(M.X): []
M.Y = NO_CCS M.Y! [];
SRT(M.Y): []
M.Z = NO_CCS M.Z! [];
SRT(M.Z): []
_______________________________________________
Cvs-ghc mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to