This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


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

Higher level RTL issues



As promised, here's an example where optimizations done on the SSA form
ultimately result in having two SSA names for the same original temporary
are live at the same time.

As I've mentioned before, when that happens it is not possible to simply
throw away the SSA names and use the original variable/temporary names.

This is not a trivial example.  I recommend you start by first taking
the info from blah.cfg and scribble out of CFG for this function.

Note carefully the loop at starting at block 23 and the backedges from
blocks 9, 16, 19, 20, 21 and 22 to block 23.


I've saved the RTL just before we convert into SSA in j.c.pressa.  Mostly
so that we can recover the original register #s from the RTL.  j.c.04.ssa
shows how we convert into SSA form without applying dominator based
optimizations.

We're concerned with the assignments and uses of two registers.

(reg 344) Defs:
  insn 209, bb5	  SSA reg 344
  insn 338, bb9	  SSA reg 607
  insn 407, bb16  SSA reg 614
  insn 458, bb18  SSA reg 617	Note this occurs after the def at insn 438

(reg 344) Uses:
  insn 312, bb8
  insn 317, bb8
  insn 438, bb18  
  insn 550, bb24

(reg 444) Defs:
  insn 305, bb8

(reg 444) Uses:
  insn 311, bb8

  
The PHI node at the start of bb23 looks like:

(insn 765 744 276 (set (reg:DI 603)
        (phi[
                (reg:DI 617)
                (const_int 22 [0x16])
                (reg:DI 617)
                (const_int 21 [0x15])
                (reg:DI 617)
                (const_int 20 [0x14])
                (reg:DI 617)
                (const_int 19 [0x13])
                (reg:DI 614)
                (const_int 16 [0x10])
                (reg:DI 607)
                (const_int 9 [0x9])
                (reg/v:DI 344)
                (const_int 7 [0x7])
            ] )) -1 (nil)
    (nil))

Verification that this makes sense is left to the reader.  Basically
(reg 344) reaches from outside the loop.  The rest reach from inside the loop.
The lifetimes of regs 344, 607, 614, 617 and 603 are disjoint.


There is no PHI node related to the definition of (reg 444) as (reg 444) is
only assigned to once in the original RTL.

Those are the key items from the translation from normal into SSA form.  If
we made no transformations to the code we could throw away the SSA register
numbers and just use the original register numbers.

Now look in j.c.04.ssa for insn 305 in block 8 and insn 458 in block 18.
They should look like:

(insn 305 303 307 (set (reg:DI 444)
        (sign_extend:DI (reg/v:SI 343))) -1 (nil)
    (nil))


(insn 458 456 461 (set (reg:DI 617)
        (sign_extend:DI (reg/v:SI 343))) -1 (nil)
    (nil))


>From the CFG we know that block 8 dominates block 18 and thus insn 305 
dominates insn 458.  Since we're in SSA form we know that (reg 343) is
only assigned to once and its set dominates its uses.  Therefore, we
know that insn 458 is redundant and with a little work can be removed.

Armed with that information, let's pretend that we're doing dominator
optimizations as Morgan has described while translating from normal
form into SSA form.

When we encounter insn 305, we record that (sign_extend:DI (reg:SI 343))
can be found in (reg:DI 444).  We proceed to follow paths through the
dominator tree and eventually reach block 18 with insn 458.  Remember
block 8 (which contained insn 305) dominates block 18, so entries we
added to the hash table for block 8 are still available.

When we reach insn 458, we lookup (sign_extend:DI (reg:SI 343)) and we
get (reg:DI 444).  Cool.  That means insn 458 is redundant.  Delete it.
Do some manipulation of our renaming stacks to arrange for uses of 
(reg:DI 617) to be rewritten as (reg:DI 444).  The only uses of 
(reg:DI 617) are at insn 765.



After finishing the translation into SSA form the PHI node at the start
of block 23 would look like:

(insn 765 744 276 (set (reg:DI 603)
        (phi[
                (reg:DI 444)
                (const_int 22 [0x16])
                (reg:DI 444)
                (const_int 21 [0x15])
                (reg:DI 444)
                (const_int 20 [0x14])
                (reg:DI 444)
                (const_int 19 [0x13])
                (reg:DI 614)
                (const_int 16 [0x10])
                (reg:DI 607)
                (const_int 9 [0x9])
                (reg/v:DI 344)
                (const_int 7 [0x7])
            ] )) -1 (nil)
    (nil))


So far so good?  If you want, you can verify that the changes we made were
all valid and we're still in SSA form.

However, note carefully that SSA name (reg:DI 444) is live at the same time
as SSA name (reg:DI 603).  Specifically they are both live starting after
insn 305 in block 8.  

This happened because redundancy elimination extended the lifetime of one
register in order to eliminate a redundancy.


So, how do you turn this back into normal form?  Well, for the camp that
reflects the SSA names in the IR, it's the standard SSA->normal translation
and everything just works.

So how is this done when SSA names are not reflected in the IR?  I have
ideas, but I'd like to hear from someone with more experience in the
non-rewriting camp.  You certainly can't do the naive thing and drop the
SSA names in favor of the original names.

FWIW, k.c.04.ssa is the same as j.c.04.ssa, except that dominator opts were
applied during translation into SSA form.  It may or may not be useful to
folks that want to poke around at this issue.


(note 2 0 3 NOTE_INSN_DELETED)

(note 3 2 5 NOTE_INSN_FUNCTION_BEG)

(note 5 3 715 0x2000000000779980 NOTE_INSN_BLOCK_BEG)

(note 715 5 10 [bb 0] NOTE_INSN_BASIC_BLOCK)

(insn 10 715 18 (set (reg/v:DI 342)
        (const_int 0 [0x0])) -1 (nil)
    (nil))

(insn 18 10 20 (parallel[ 
            (set (reg/f:DI 348)
                (symbol_ref:DI ("nomagic")))
            (clobber (reg:DI 349))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("nomagic"))
        (nil)))

(insn 20 18 21 (set (reg:SI 350)
        (mem/f:SI (reg/f:DI 348) 6)) -1 (nil)
    (nil))

(insn 21 20 22 (set (reg:BI 351)
        (ne:BI (reg:SI 350)
            (const_int 0 [0x0]))) -1 (nil)
    (nil))

(jump_insn 22 21 23 (set (pc)
        (if_then_else (ne (reg:BI 351)
                (const_int 0 [0x0]))
            (label_ref 120)
            (pc))) -1 (nil)
    (nil))

(note 23 22 717 0x2000000000779480 NOTE_INSN_BLOCK_BEG)

(note 717 23 38 [bb 1] NOTE_INSN_BASIC_BLOCK)

(insn 38 717 39 (parallel[ 
            (set (reg/f:DI 356)
                (symbol_ref:DI ("magic_header")))
            (clobber (reg:DI 357))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("magic_header"))
        (nil)))

(insn 39 38 41 (set (reg:DI 359)
        (zero_extend:DI (mem/s:QI (reg/f:DI 356) 0))) -1 (nil)
    (nil))

(insn 41 39 43 (set (reg:SI 358)
        (subreg:SI (reg:DI 359) 0)) -1 (nil)
    (nil))

(insn 43 41 45 (set (reg:SI 120 out0)
        (reg:SI 358)) -1 (nil)
    (nil))

(insn 45 43 46 (set (reg:DI 360)
        (reg:DI 1 r1)) -1 (nil)
    (nil))

(call_insn 46 45 48 (parallel[ 
            (set (reg:SI 8 r8)
                (call (mem:DI (symbol_ref/v:DI ("putbyte")) 0)
                    (const_int 1 [0x1])))
            (use (unspec[ 
                        (reg:DI 1 r1)
                    ]  9))
            (clobber (reg:DI 320 b0))
        ] ) -1 (nil)
    (nil)
    (expr_list (use (reg:SI 120 out0))
        (nil)))

(insn 48 46 49 (set (reg:DI 1 r1)
        (reg:DI 360)) -1 (nil)
    (nil))

(note 49 48 65 NOTE_INSN_DELETED)

(insn 65 49 67 (parallel[ 
            (set (reg/f:DI 367)
                (symbol_ref:DI ("magic_header")))
            (clobber (reg:DI 368))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("magic_header"))
        (nil)))

(insn 67 65 68 (set (reg/f:DI 369)
        (reg/f:DI 367)) -1 (nil)
    (nil))

(insn 68 67 69 (set (reg/f:DI 370)
        (plus:DI (reg/f:DI 367)
            (const_int 1 [0x1]))) -1 (nil)
    (nil))

(insn 69 68 71 (set (reg:DI 372)
        (zero_extend:DI (mem/s:QI (reg/f:DI 370) 0))) -1 (nil)
    (nil))

(insn 71 69 73 (set (reg:SI 371)
        (subreg:SI (reg:DI 372) 0)) -1 (nil)
    (nil))

(insn 73 71 75 (set (reg:SI 120 out0)
        (reg:SI 371)) -1 (nil)
    (nil))

(insn 75 73 76 (set (reg:DI 360)
        (reg:DI 1 r1)) -1 (nil)
    (nil))

(call_insn 76 75 78 (parallel[ 
            (set (reg:SI 8 r8)
                (call (mem:DI (symbol_ref/v:DI ("putbyte")) 0)
                    (const_int 1 [0x1])))
            (use (unspec[ 
                        (reg:DI 1 r1)
                    ]  9))
            (clobber (reg:DI 320 b0))
        ] ) -1 (nil)
    (nil)
    (expr_list (use (reg:SI 120 out0))
        (nil)))

(insn 78 76 79 (set (reg:DI 1 r1)
        (reg:DI 360)) -1 (nil)
    (nil))

(note 79 78 100 NOTE_INSN_DELETED)

(insn 100 79 102 (parallel[ 
            (set (reg/f:DI 382)
                (symbol_ref:DI ("maxbits")))
            (clobber (reg:DI 383))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("maxbits"))
        (nil)))

(insn 102 100 104 (parallel[ 
            (set (reg/f:DI 384)
                (symbol_ref:DI ("block_compress")))
            (clobber (reg:DI 385))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("block_compress"))
        (nil)))

(insn 104 102 106 (set (reg:QI 386)
        (mem/f:QI (reg/f:DI 382) 6)) -1 (nil)
    (nil))

(insn 106 104 107 (set (reg:QI 387)
        (mem/f:QI (reg/f:DI 384) 6)) -1 (nil)
    (nil))

(insn 107 106 108 (set (reg:DI 388)
        (ior:DI (subreg:DI (reg:QI 386) 0)
            (subreg:DI (reg:QI 387) 0))) -1 (nil)
    (nil))

(insn 108 107 110 (set (reg:DI 390)
        (sign_extend:DI (subreg:QI (reg:DI 388) 0))) -1 (nil)
    (nil))

(insn 110 108 112 (set (reg:SI 389)
        (subreg:SI (reg:DI 390) 0)) -1 (nil)
    (nil))

(insn 112 110 114 (set (reg:SI 120 out0)
        (reg:SI 389)) -1 (nil)
    (nil))

(insn 114 112 115 (set (reg:DI 360)
        (reg:DI 1 r1)) -1 (nil)
    (nil))

(call_insn 115 114 117 (parallel[ 
            (set (reg:SI 8 r8)
                (call (mem:DI (symbol_ref/v:DI ("putbyte")) 0)
                    (const_int 1 [0x1])))
            (use (unspec[ 
                        (reg:DI 1 r1)
                    ]  9))
            (clobber (reg:DI 320 b0))
        ] ) -1 (nil)
    (nil)
    (expr_list (use (reg:SI 120 out0))
        (nil)))

(insn 117 115 118 (set (reg:DI 1 r1)
        (reg:DI 360)) -1 (nil)
    (nil))

(note 118 117 716 NOTE_INSN_DELETED)

(insn 716 118 119 (use (const_int 0 [0x0])) -1 (nil)
    (nil))

(note 119 716 120 0x2000000000779480 NOTE_INSN_BLOCK_END)

(code_label 120 119 718 27 "" "" [1 uses])

(note 718 120 123 [bb 2] NOTE_INSN_BASIC_BLOCK)

(insn 123 718 125 (parallel[ 
            (set (reg/f:DI 391)
                (symbol_ref:DI ("@offset")))
            (clobber (reg:DI 392))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("@offset"))
        (nil)))

(insn 125 123 128 (set (mem/f:SI (reg/f:DI 391) 6)
        (const_int 0 [0x0])) -1 (nil)
    (nil))

(insn 128 125 130 (parallel[ 
            (set (reg/f:DI 393)
                (symbol_ref:DI ("bytes_out")))
            (clobber (reg:DI 394))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("bytes_out"))
        (nil)))

(insn 130 128 131 (set (reg:DI 395)
        (const_int 3 [0x3])) -1 (nil)
    (expr_list:REG_EQUAL (const_int 3 [0x3])
        (nil)))

(insn 131 130 134 (set (mem/f:DI (reg/f:DI 393) 10)
        (reg:DI 395)) -1 (nil)
    (nil))

(insn 134 131 136 (parallel[ 
            (set (reg/f:DI 396)
                (symbol_ref:DI ("out_count")))
            (clobber (reg:DI 397))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("out_count"))
        (nil)))

(insn 136 134 139 (set (mem/f:DI (reg/f:DI 396) 10)
        (const_int 0 [0x0])) -1 (nil)
    (nil))

(insn 139 136 141 (parallel[ 
            (set (reg/f:DI 398)
                (symbol_ref:DI ("clear_flg")))
            (clobber (reg:DI 399))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("clear_flg"))
        (nil)))

(insn 141 139 144 (set (mem/f:SI (reg/f:DI 398) 6)
        (const_int 0 [0x0])) -1 (nil)
    (nil))

(insn 144 141 146 (parallel[ 
            (set (reg/f:DI 400)
                (symbol_ref:DI ("ratio")))
            (clobber (reg:DI 401))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("ratio"))
        (nil)))

(insn 146 144 149 (set (mem/f:DI (reg/f:DI 400) 10)
        (const_int 0 [0x0])) -1 (nil)
    (nil))

(insn 149 146 151 (parallel[ 
            (set (reg/f:DI 402)
                (symbol_ref:DI ("in_count")))
            (clobber (reg:DI 403))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("in_count"))
        (nil)))

(insn 151 149 152 (set (reg:DI 404)
        (const_int 1 [0x1])) -1 (nil)
    (expr_list:REG_EQUAL (const_int 1 [0x1])
        (nil)))

(insn 152 151 155 (set (mem/f:DI (reg/f:DI 402) 10)
        (reg:DI 404)) -1 (nil)
    (nil))

(insn 155 152 157 (parallel[ 
            (set (reg/f:DI 405)
                (symbol_ref:DI ("checkpoint")))
            (clobber (reg:DI 406))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("checkpoint"))
        (nil)))

(insn 157 155 158 (set (reg:DI 407)
        (const_int 10000 [0x2710])) -1 (nil)
    (expr_list:REG_EQUAL (const_int 10000 [0x2710])
        (nil)))

(insn 158 157 161 (set (mem/f:DI (reg/f:DI 405) 10)
        (reg:DI 407)) -1 (nil)
    (nil))

(insn 161 158 163 (parallel[ 
            (set (reg/f:DI 408)
                (symbol_ref:DI ("maxcode")))
            (clobber (reg:DI 409))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("maxcode"))
        (nil)))

(insn 163 161 165 (parallel[ 
            (set (reg/f:DI 410)
                (symbol_ref:DI ("n_bits")))
            (clobber (reg:DI 411))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("n_bits"))
        (nil)))

(insn 165 163 166 (set (reg:SI 412)
        (const_int 9 [0x9])) -1 (nil)
    (expr_list:REG_EQUAL (const_int 9 [0x9])
        (nil)))

(insn 166 165 168 (set (mem/f:SI (reg/f:DI 410) 6)
        (reg:SI 412)) -1 (nil)
    (nil))

(insn 168 166 170 (set (reg:SI 414)
        (const_int 1 [0x1])) -1 (nil)
    (nil))

(insn 170 168 171 (set (reg:SI 413)
        (ashift:SI (reg:SI 414)
            (const_int 9 [0x9]))) -1 (nil)
    (nil))

(insn 171 170 172 (set (reg:SI 415)
        (plus:SI (reg:SI 413)
            (const_int -1 [0xffffffffffffffff]))) -1 (nil)
    (nil))

(insn 172 171 174 (set (reg:DI 416)
        (sign_extend:DI (reg:SI 415))) -1 (nil)
    (nil))

(insn 174 172 177 (set (mem/f:DI (reg/f:DI 408) 10)
        (reg:DI 416)) -1 (nil)
    (nil))

(insn 177 174 179 (parallel[ 
            (set (reg/f:DI 417)
                (symbol_ref:DI ("free_ent")))
            (clobber (reg:DI 418))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("free_ent"))
        (nil)))

(insn 179 177 181 (parallel[ 
            (set (reg/f:DI 419)
                (symbol_ref:DI ("block_compress")))
            (clobber (reg:DI 420))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("block_compress"))
        (nil)))

(insn 181 179 182 (set (reg:SI 421)
        (mem/f:SI (reg/f:DI 419) 6)) -1 (nil)
    (nil))

(insn 182 181 183 (set (reg:BI 422)
        (eq:BI (reg:SI 421)
            (const_int 0 [0x0]))) -1 (nil)
    (nil))

(jump_insn 183 182 719 (set (pc)
        (if_then_else (ne (reg:BI 422)
                (const_int 0 [0x0]))
            (label_ref 189)
            (pc))) -1 (nil)
    (nil))

(note 719 183 185 [bb 3] NOTE_INSN_BASIC_BLOCK)

(insn 185 719 186 (set (reg:DI 423)
        (const_int 257 [0x101])) -1 (nil)
    (expr_list:REG_EQUAL (const_int 257 [0x101])
        (nil)))

(insn 186 185 187 (set (mem/f:DI (reg/f:DI 417) 10)
        (reg:DI 423)) -1 (nil)
    (nil))

(jump_insn 187 186 188 (set (pc)
        (label_ref 193)) -1 (nil)
    (nil))

(barrier 188 187 189)

(code_label 189 188 720 28 "" "" [1 uses])

(note 720 189 191 [bb 4] NOTE_INSN_BASIC_BLOCK)

(insn 191 720 192 (set (reg:DI 424)
        (const_int 256 [0x100])) -1 (nil)
    (expr_list:REG_EQUAL (const_int 256 [0x100])
        (nil)))

(insn 192 191 193 (set (mem/f:DI (reg/f:DI 417) 10)
        (reg:DI 424)) -1 (nil)
    (nil))

(code_label 193 192 721 29 "" "" [1 uses])

(note 721 193 202 [bb 5] NOTE_INSN_BASIC_BLOCK)

(insn 202 721 203 (set (reg:DI 360)
        (reg:DI 1 r1)) -1 (nil)
    (nil))

(call_insn 203 202 205 (parallel[ 
            (set (reg:SI 8 r8)
                (call (mem:DI (symbol_ref/v:DI ("getbyte")) 0)
                    (const_int 0 [0x0])))
            (use (unspec[ 
                        (reg:DI 1 r1)
                    ]  9))
            (clobber (reg:DI 320 b0))
        ] ) -1 (nil)
    (nil)
    (nil))

(insn 205 203 207 (set (reg:DI 1 r1)
        (reg:DI 360)) -1 (nil)
    (nil))

(insn 207 205 208 (set (reg:SI 425)
        (reg:SI 8 r8)) -1 (nil)
    (nil))

(note 208 207 209 NOTE_INSN_DELETED)

(insn 209 208 212 (set (reg/v:DI 344)
        (sign_extend:DI (reg:SI 425))) -1 (nil)
    (nil))

(insn 212 209 215 (set (reg/v:SI 347)
        (const_int 0 [0x0])) -1 (nil)
    (nil))

(insn 215 212 217 (parallel[ 
            (set (reg/f:DI 426)
                (symbol_ref:DI ("hsize")))
            (clobber (reg:DI 427))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("hsize"))
        (nil)))

(insn 217 215 754 (set (reg/v:DI 341)
        (mem/f:DI (reg/f:DI 426) 10)) -1 (nil)
    (nil))

(insn 754 217 755 (set (reg:DI 591)
        (const_int 65535 [0xffff])) -1 (nil)
    (nil))

(insn 755 754 756 (set (reg:BI 592)
        (le:BI (reg/v:DI 341)
            (reg:DI 591))) -1 (nil)
    (nil))

(jump_insn 756 755 218 (set (pc)
        (if_then_else (eq (reg:BI 592)
                (const_int 0 [0x0]))
            (label_ref 757)
            (pc))) 199 {*br_true} (nil)
    (nil))

(note 218 756 226 NOTE_INSN_LOOP_BEG)

(code_label 226 218 722 33 "" "" [1 uses])

(note 722 226 228 [bb 6] NOTE_INSN_BASIC_BLOCK)

(insn 228 722 230 (set (reg/v:SI 347)
        (plus:SI (reg/v:SI 347)
            (const_int 1 [0x1]))) -1 (nil)
    (nil))

(note 230 228 233 NOTE_INSN_LOOP_CONT)

(insn 233 230 234 (set (reg:DI 430)
        (reg/v:DI 341)) -1 (nil)
    (nil))

(insn 234 233 236 (set (reg:DI 431)
        (ashift:DI (reg:DI 430)
            (const_int 1 [0x1]))) -1 (nil)
    (expr_list:REG_EQUAL (mult:DI (reg/v:DI 341)
            (const_int 2 [0x2]))
        (nil)))

(insn 236 234 760 (set (reg/v:DI 341)
        (reg:DI 431)) -1 (nil)
    (nil))

(note 760 236 221 NOTE_INSN_LOOP_VTOP)

(insn 221 760 222 (set (reg/s:DI 428)
        (const_int 65535 [0xffff])) -1 (nil)
    (nil))

(insn 222 221 223 (set (reg/s:BI 429)
        (le:BI (reg/v:DI 341)
            (reg/s:DI 428))) -1 (nil)
    (nil))

(jump_insn 223 222 242 (set (pc)
        (if_then_else (ne (reg/s:BI 429)
                (const_int 0 [0x0]))
            (label_ref 226)
            (pc))) -1 (nil)
    (nil))

(note 242 223 757 NOTE_INSN_LOOP_END)

(code_label 757 242 724 53 "" "" [1 uses])

(note 724 757 245 [bb 7] NOTE_INSN_BASIC_BLOCK)

(insn 245 724 248 (set (reg/v:SI 347)
        (minus:SI (const_int 8 [0x8])
            (reg/v:SI 347))) -1 (nil)
    (nil))

(insn 248 245 250 (parallel[ 
            (set (reg/f:DI 432)
                (symbol_ref:DI ("hsize")))
            (clobber (reg:DI 433))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("hsize"))
        (nil)))

(insn 250 248 259 (set (reg/v:DI 346)
        (mem/f:DI (reg/f:DI 432) 10)) -1 (nil)
    (nil))

(insn 259 250 261 (set (reg:DI 120 out0)
        (reg/v:DI 346)) -1 (nil)
    (nil))

(insn 261 259 262 (set (reg:DI 360)
        (reg:DI 1 r1)) -1 (nil)
    (nil))

(call_insn 262 261 264 (parallel[ 
            (set (reg:SI 8 r8)
                (call (mem:DI (symbol_ref/v:DI ("cl_hash")) 0)
                    (const_int 1 [0x1])))
            (use (unspec[ 
                        (reg:DI 1 r1)
                    ]  9))
            (clobber (reg:DI 320 b0))
        ] ) -1 (nil)
    (nil)
    (expr_list (use (reg:DI 120 out0))
        (nil)))

(insn 264 262 265 (set (reg:DI 1 r1)
        (reg:DI 360)) -1 (nil)
    (nil))

(note 265 264 267 NOTE_INSN_DELETED)

(note 267 265 536 NOTE_INSN_LOOP_BEG)

(jump_insn 536 267 537 (set (pc)
        (label_ref 268)) -1 (nil)
    (nil))

(barrier 537 536 289)

(code_label 289 537 726 37 "" "" [1 uses])

(note 726 289 290 [bb 8] NOTE_INSN_BASIC_BLOCK)

(note 290 726 294 0x2000000000779800 NOTE_INSN_BLOCK_BEG)

(insn 294 290 296 (parallel[ 
            (set (reg/f:DI 436)
                (symbol_ref:DI ("in_count")))
            (clobber (reg:DI 437))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("in_count"))
        (nil)))

(insn 296 294 298 (parallel[ 
            (set (reg/f:DI 438)
                (symbol_ref:DI ("in_count")))
            (clobber (reg:DI 439))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("in_count"))
        (nil)))

(insn 298 296 300 (parallel[ 
            (set (reg/f:DI 440)
                (symbol_ref:DI ("in_count")))
            (clobber (reg:DI 441))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("in_count"))
        (nil)))

(insn 300 298 301 (set (reg:DI 442)
        (mem/f:DI (reg/f:DI 440) 10)) -1 (nil)
    (nil))

(insn 301 300 303 (set (reg:DI 443)
        (plus:DI (reg:DI 442)
            (const_int 1 [0x1]))) -1 (nil)
    (nil))

(insn 303 301 305 (set (mem/f:DI (reg/f:DI 438) 10)
        (reg:DI 443)) -1 (nil)
    (nil))

(insn 305 303 307 (set (reg:DI 444)
        (sign_extend:DI (reg/v:SI 343))) -1 (nil)
    (nil))

(insn 307 305 309 (parallel[ 
            (set (reg/f:DI 445)
                (symbol_ref:DI ("maxbits")))
            (clobber (reg:DI 446))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("maxbits"))
        (nil)))

(insn 309 307 310 (set (reg:SI 447)
        (mem/f:SI (reg/f:DI 445) 6)) -1 (nil)
    (nil))

(insn 310 309 311 (set (reg:DI 449)
        (sign_extend:DI (reg:SI 447))) -1 (nil)
    (nil))

(insn 311 310 312 (set (reg:DI 448)
        (ashift:DI (reg:DI 444)
            (reg:DI 449))) -1 (nil)
    (nil))

(insn 312 311 314 (set (reg/v:DI 341)
        (plus:DI (reg:DI 448)
            (reg/v:DI 344))) -1 (nil)
    (nil))

(insn 314 312 315 (set (reg:DI 451)
        (zero_extend:DI (reg/v:SI 347))) -1 (nil)
    (nil))

(insn 315 314 316 (set (reg:SI 450)
        (ashift:SI (reg/v:SI 343)
            (reg:DI 451))) -1 (nil)
    (expr_list:REG_EQUAL (ashift:SI (reg/v:SI 343)
            (reg/v:SI 347))
        (nil)))

(insn 316 315 317 (set (reg:DI 452)
        (sign_extend:DI (reg:SI 450))) -1 (nil)
    (nil))

(insn 317 316 320 (set (reg/v:DI 342)
        (xor:DI (reg:DI 452)
            (reg/v:DI 344))) -1 (nil)
    (nil))

(insn 320 317 322 (parallel[ 
            (set (reg/f:DI 453)
                (symbol_ref:DI ("htab")))
            (clobber (reg:DI 454))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("htab"))
        (nil)))

(insn 322 320 323 (set (reg:DI 455)
        (reg/v:DI 342)) -1 (nil)
    (nil))

(insn 323 322 324 (set (reg:DI 456)
        (ashift:DI (reg:DI 455)
            (const_int 3 [0x3]))) -1 (nil)
    (expr_list:REG_EQUAL (mult:DI (reg/v:DI 342)
            (const_int 8 [0x8]))
        (nil)))

(insn 324 323 326 (set (reg/f:DI 457)
        (plus:DI (reg/f:DI 453)
            (reg:DI 456))) -1 (nil)
    (nil))

(insn 326 324 327 (set (reg:DI 458)
        (mem/s:DI (reg/f:DI 457) 10)) -1 (nil)
    (nil))

(insn 327 326 328 (set (reg:BI 459)
        (ne:BI (reg:DI 458)
            (reg/v:DI 341))) -1 (nil)
    (nil))

(jump_insn 328 327 727 (set (pc)
        (if_then_else (ne (reg:BI 459)
                (const_int 0 [0x0]))
            (label_ref 344)
            (pc))) -1 (nil)
    (nil))

(note 727 328 333 [bb 9] NOTE_INSN_BASIC_BLOCK)

(insn 333 727 335 (parallel[ 
            (set (reg/f:DI 460)
                (symbol_ref:DI ("codetab")))
            (clobber (reg:DI 461))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("codetab"))
        (nil)))

(insn 335 333 336 (set (reg:DI 462)
        (reg/v:DI 342)) -1 (nil)
    (nil))

(insn 336 335 337 (set (reg:DI 463)
        (ashift:DI (reg:DI 462)
            (const_int 1 [0x1]))) -1 (nil)
    (expr_list:REG_EQUAL (mult:DI (reg/v:DI 342)
            (const_int 2 [0x2]))
        (nil)))

(insn 337 336 338 (set (reg/f:DI 464)
        (plus:DI (reg/f:DI 460)
            (reg:DI 463))) -1 (nil)
    (nil))

(insn 338 337 340 (set (reg/v:DI 344)
        (zero_extend:DI (mem/s:HI (reg/f:DI 464) 11))) -1 (nil)
    (nil))

(jump_insn 340 338 341 (set (pc)
        (label_ref 268)) -1 (nil)
    (nil))

(barrier 341 340 344)

(code_label 344 341 728 38 "" "" [1 uses])

(note 728 344 347 [bb 10] NOTE_INSN_BASIC_BLOCK)

(insn 347 728 349 (parallel[ 
            (set (reg/f:DI 465)
                (symbol_ref:DI ("htab")))
            (clobber (reg:DI 466))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("htab"))
        (nil)))

(insn 349 347 350 (set (reg:DI 467)
        (reg/v:DI 342)) -1 (nil)
    (nil))

(insn 350 349 351 (set (reg:DI 468)
        (ashift:DI (reg:DI 467)
            (const_int 3 [0x3]))) -1 (nil)
    (expr_list:REG_EQUAL (mult:DI (reg/v:DI 342)
            (const_int 8 [0x8]))
        (nil)))

(insn 351 350 353 (set (reg/f:DI 469)
        (plus:DI (reg/f:DI 465)
            (reg:DI 468))) -1 (nil)
    (nil))

(insn 353 351 354 (set (reg:DI 470)
        (mem/s:DI (reg/f:DI 469) 10)) -1 (nil)
    (nil))

(insn 354 353 355 (set (reg:BI 471)
        (ge:BI (reg:DI 470)
            (const_int 0 [0x0]))) -1 (nil)
    (nil))

(jump_insn 355 354 729 (set (pc)
        (if_then_else (eq (reg:BI 471)
                (const_int 0 [0x0]))
            (label_ref 429)
            (pc))) 199 {*br_true} (nil)
    (nil))

(note 729 355 364 [bb 11] NOTE_INSN_BASIC_BLOCK)

(insn 364 729 366 (set (reg/v:SI 345)
        (minus:SI (subreg:SI (reg/v:DI 346) 0)
            (subreg:SI (reg/v:DI 342) 0))) -1 (nil)
    (nil))

(insn 366 364 367 (set (reg:BI 472)
        (ne:BI (reg/v:DI 342)
            (const_int 0 [0x0]))) -1 (nil)
    (nil))

(jump_insn 367 366 731 (set (pc)
        (if_then_else (ne (reg:BI 472)
                (const_int 0 [0x0]))
            (label_ref 374)
            (pc))) -1 (nil)
    (nil))

(note 731 367 372 [bb 12] NOTE_INSN_BASIC_BLOCK)

(insn 372 731 374 (set (reg/v:SI 345)
        (const_int 1 [0x1])) -1 (nil)
    (nil))

(code_label 374 372 732 43 ("probe") "" [2 uses])

(note 732 374 376 [bb 13] NOTE_INSN_BASIC_BLOCK)

(insn 376 732 377 (set (reg:DI 473)
        (sign_extend:DI (reg/v:SI 345))) -1 (nil)
    (nil))

(insn 377 376 379 (set (reg/v:DI 342)
        (minus:DI (reg/v:DI 342)
            (reg:DI 473))) -1 (nil)
    (nil))

(insn 379 377 380 (set (reg:DI 474)
        (reg/v:DI 342)) -1 (nil)
    (nil))

(insn 380 379 381 (set (reg:BI 475)
        (ge:BI (reg:DI 474)
            (const_int 0 [0x0]))) -1 (nil)
    (nil))

(jump_insn 381 380 733 (set (pc)
        (if_then_else (ne (reg:BI 475)
                (const_int 0 [0x0]))
            (label_ref 386)
            (pc))) -1 (nil)
    (nil))

(note 733 381 385 [bb 14] NOTE_INSN_BASIC_BLOCK)

(insn 385 733 386 (set (reg/v:DI 342)
        (plus:DI (reg/v:DI 342)
            (reg/v:DI 346))) -1 (nil)
    (nil))

(code_label 386 385 734 44 "" "" [1 uses])

(note 734 386 389 [bb 15] NOTE_INSN_BASIC_BLOCK)

(insn 389 734 391 (parallel[ 
            (set (reg/f:DI 476)
                (symbol_ref:DI ("htab")))
            (clobber (reg:DI 477))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("htab"))
        (nil)))

(insn 391 389 392 (set (reg:DI 478)
        (reg/v:DI 342)) -1 (nil)
    (nil))

(insn 392 391 393 (set (reg:DI 479)
        (ashift:DI (reg:DI 478)
            (const_int 3 [0x3]))) -1 (nil)
    (expr_list:REG_EQUAL (mult:DI (reg/v:DI 342)
            (const_int 8 [0x8]))
        (nil)))

(insn 393 392 395 (set (reg/f:DI 480)
        (plus:DI (reg/f:DI 476)
            (reg:DI 479))) -1 (nil)
    (nil))

(insn 395 393 396 (set (reg:DI 481)
        (mem/s:DI (reg/f:DI 480) 10)) -1 (nil)
    (nil))

(insn 396 395 397 (set (reg:BI 482)
        (ne:BI (reg:DI 481)
            (reg/v:DI 341))) -1 (nil)
    (nil))

(jump_insn 397 396 735 (set (pc)
        (if_then_else (ne (reg:BI 482)
                (const_int 0 [0x0]))
            (label_ref 411)
            (pc))) -1 (nil)
    (nil))

(note 735 397 402 [bb 16] NOTE_INSN_BASIC_BLOCK)

(insn 402 735 404 (parallel[ 
            (set (reg/f:DI 483)
                (symbol_ref:DI ("codetab")))
            (clobber (reg:DI 484))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("codetab"))
        (nil)))

(insn 404 402 405 (set (reg:DI 485)
        (reg/v:DI 342)) -1 (nil)
    (nil))

(insn 405 404 406 (set (reg:DI 486)
        (ashift:DI (reg:DI 485)
            (const_int 1 [0x1]))) -1 (nil)
    (expr_list:REG_EQUAL (mult:DI (reg/v:DI 342)
            (const_int 2 [0x2]))
        (nil)))

(insn 406 405 407 (set (reg/f:DI 487)
        (plus:DI (reg/f:DI 483)
            (reg:DI 486))) -1 (nil)
    (nil))

(insn 407 406 409 (set (reg/v:DI 344)
        (zero_extend:DI (mem/s:HI (reg/f:DI 487) 11))) -1 (nil)
    (nil))

(jump_insn 409 407 410 (set (pc)
        (label_ref 268)) -1 (nil)
    (nil))

(barrier 410 409 411)

(code_label 411 410 736 45 "" "" [1 uses])

(note 736 411 414 [bb 17] NOTE_INSN_BASIC_BLOCK)

(insn 414 736 416 (parallel[ 
            (set (reg/f:DI 488)
                (symbol_ref:DI ("htab")))
            (clobber (reg:DI 489))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("htab"))
        (nil)))

(insn 416 414 417 (set (reg:DI 490)
        (reg/v:DI 342)) -1 (nil)
    (nil))

(insn 417 416 418 (set (reg:DI 491)
        (ashift:DI (reg:DI 490)
            (const_int 3 [0x3]))) -1 (nil)
    (expr_list:REG_EQUAL (mult:DI (reg/v:DI 342)
            (const_int 8 [0x8]))
        (nil)))

(insn 418 417 420 (set (reg/f:DI 492)
        (plus:DI (reg/f:DI 488)
            (reg:DI 491))) -1 (nil)
    (nil))

(insn 420 418 421 (set (reg:DI 493)
        (mem/s:DI (reg/f:DI 492) 10)) -1 (nil)
    (nil))

(insn 421 420 422 (set (reg:BI 494)
        (le:BI (reg:DI 493)
            (const_int 0 [0x0]))) -1 (nil)
    (nil))

(jump_insn 422 421 429 (set (pc)
        (if_then_else (eq (reg:BI 494)
                (const_int 0 [0x0]))
            (label_ref 374)
            (pc))) 199 {*br_true} (nil)
    (nil))

(code_label 429 422 737 41 ("nomatch") "" [1 uses])

(note 737 429 438 [bb 18] NOTE_INSN_BASIC_BLOCK)

(insn 438 737 440 (set (reg:DI 120 out0)
        (reg/v:DI 344)) -1 (nil)
    (nil))

(insn 440 438 441 (set (reg:DI 360)
        (reg:DI 1 r1)) -1 (nil)
    (nil))

(call_insn 441 440 443 (parallel[ 
            (set (reg:SI 8 r8)
                (call (mem:DI (symbol_ref/v:DI ("output")) 0)
                    (const_int 1 [0x1])))
            (use (unspec[ 
                        (reg:DI 1 r1)
                    ]  9))
            (clobber (reg:DI 320 b0))
        ] ) -1 (nil)
    (nil)
    (expr_list (use (reg:DI 120 out0))
        (nil)))

(insn 443 441 444 (set (reg:DI 1 r1)
        (reg:DI 360)) -1 (nil)
    (nil))

(note 444 443 447 NOTE_INSN_DELETED)

(insn 447 444 449 (parallel[ 
            (set (reg/f:DI 495)
                (symbol_ref:DI ("out_count")))
            (clobber (reg:DI 496))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("out_count"))
        (nil)))

(insn 449 447 451 (parallel[ 
            (set (reg/f:DI 497)
                (symbol_ref:DI ("out_count")))
            (clobber (reg:DI 498))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("out_count"))
        (nil)))

(insn 451 449 453 (parallel[ 
            (set (reg/f:DI 499)
                (symbol_ref:DI ("out_count")))
            (clobber (reg:DI 500))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("out_count"))
        (nil)))

(insn 453 451 454 (set (reg:DI 501)
        (mem/f:DI (reg/f:DI 499) 10)) -1 (nil)
    (nil))

(insn 454 453 456 (set (reg:DI 502)
        (plus:DI (reg:DI 501)
            (const_int 1 [0x1]))) -1 (nil)
    (nil))

(insn 456 454 458 (set (mem/f:DI (reg/f:DI 497) 10)
        (reg:DI 502)) -1 (nil)
    (nil))

(insn 458 456 461 (set (reg/v:DI 344)
        (sign_extend:DI (reg/v:SI 343))) -1 (nil)
    (nil))

(insn 461 458 463 (parallel[ 
            (set (reg/f:DI 503)
                (symbol_ref:DI ("free_ent")))
            (clobber (reg:DI 504))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("free_ent"))
        (nil)))

(insn 463 461 465 (parallel[ 
            (set (reg/f:DI 505)
                (symbol_ref:DI ("maxmaxcode")))
            (clobber (reg:DI 506))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("maxmaxcode"))
        (nil)))

(insn 465 463 467 (set (reg:DI 507)
        (mem/f:DI (reg/f:DI 503) 10)) -1 (nil)
    (nil))

(insn 467 465 468 (set (reg:DI 508)
        (mem/f:DI (reg/f:DI 505) 10)) -1 (nil)
    (nil))

(insn 468 467 469 (set (reg:BI 509)
        (ge:BI (reg:DI 507)
            (reg:DI 508))) -1 (nil)
    (nil))

(jump_insn 469 468 739 (set (pc)
        (if_then_else (ne (reg:BI 509)
                (const_int 0 [0x0]))
            (label_ref 502)
            (pc))) -1 (nil)
    (nil))

(note 739 469 474 [bb 19] NOTE_INSN_BASIC_BLOCK)

(insn 474 739 476 (parallel[ 
            (set (reg/f:DI 510)
                (symbol_ref:DI ("codetab")))
            (clobber (reg:DI 511))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("codetab"))
        (nil)))

(insn 476 474 477 (set (reg:DI 512)
        (reg/v:DI 342)) -1 (nil)
    (nil))

(insn 477 476 478 (set (reg:DI 513)
        (ashift:DI (reg:DI 512)
            (const_int 1 [0x1]))) -1 (nil)
    (expr_list:REG_EQUAL (mult:DI (reg/v:DI 342)
            (const_int 2 [0x2]))
        (nil)))

(insn 478 477 480 (set (reg/f:DI 514)
        (plus:DI (reg/f:DI 510)
            (reg:DI 513))) -1 (nil)
    (nil))

(insn 480 478 482 (parallel[ 
            (set (reg/f:DI 515)
                (symbol_ref:DI ("free_ent")))
            (clobber (reg:DI 516))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("free_ent"))
        (nil)))

(insn 482 480 486 (set (reg:DI 517)
        (mem/f:DI (reg/f:DI 515) 10)) -1 (nil)
    (nil))

(insn 486 482 488 (set (reg:HI 518)
        (subreg:HI (reg:DI 517) 0)) -1 (nil)
    (nil))

(insn 488 486 489 (set (mem/s:HI (reg/f:DI 514) 11)
        (reg:HI 518)) -1 (nil)
    (nil))

(insn 489 488 490 (set (reg:DI 517)
        (plus:DI (reg:DI 517)
            (const_int 1 [0x1]))) -1 (nil)
    (nil))

(insn 490 489 493 (set (mem/f:DI (reg/f:DI 515) 10)
        (reg:DI 517)) -1 (nil)
    (nil))

(insn 493 490 495 (parallel[ 
            (set (reg/f:DI 519)
                (symbol_ref:DI ("htab")))
            (clobber (reg:DI 520))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("htab"))
        (nil)))

(insn 495 493 496 (set (reg:DI 521)
        (reg/v:DI 342)) -1 (nil)
    (nil))

(insn 496 495 497 (set (reg:DI 522)
        (ashift:DI (reg:DI 521)
            (const_int 3 [0x3]))) -1 (nil)
    (expr_list:REG_EQUAL (mult:DI (reg/v:DI 342)
            (const_int 8 [0x8]))
        (nil)))

(insn 497 496 499 (set (reg/f:DI 523)
        (plus:DI (reg/f:DI 519)
            (reg:DI 522))) -1 (nil)
    (nil))

(insn 499 497 500 (set (mem/s:DI (reg/f:DI 523) 10)
        (reg/v:DI 341)) -1 (nil)
    (nil))

(jump_insn 500 499 501 (set (pc)
        (label_ref 268)) -1 (nil)
    (nil))

(barrier 501 500 502)

(code_label 502 501 740 47 "" "" [1 uses])

(note 740 502 505 [bb 20] NOTE_INSN_BASIC_BLOCK)

(insn 505 740 507 (parallel[ 
            (set (reg/f:DI 524)
                (symbol_ref:DI ("in_count")))
            (clobber (reg:DI 525))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("in_count"))
        (nil)))

(insn 507 505 509 (parallel[ 
            (set (reg/f:DI 526)
                (symbol_ref:DI ("checkpoint")))
            (clobber (reg:DI 527))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("checkpoint"))
        (nil)))

(insn 509 507 511 (set (reg:DI 528)
        (mem/f:DI (reg/f:DI 524) 10)) -1 (nil)
    (nil))

(insn 511 509 512 (set (reg:DI 529)
        (mem/f:DI (reg/f:DI 526) 10)) -1 (nil)
    (nil))

(insn 512 511 513 (set (reg:BI 530)
        (lt:BI (reg:DI 528)
            (reg:DI 529))) -1 (nil)
    (nil))

(jump_insn 513 512 741 (set (pc)
        (if_then_else (ne (reg:BI 530)
                (const_int 0 [0x0]))
            (label_ref 268)
            (pc))) -1 (nil)
    (nil))

(note 741 513 515 [bb 21] NOTE_INSN_BASIC_BLOCK)

(insn 515 741 517 (parallel[ 
            (set (reg/f:DI 531)
                (symbol_ref:DI ("block_compress")))
            (clobber (reg:DI 532))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("block_compress"))
        (nil)))

(insn 517 515 518 (set (reg:SI 533)
        (mem/f:SI (reg/f:DI 531) 6)) -1 (nil)
    (nil))

(insn 518 517 519 (set (reg:BI 534)
        (eq:BI (reg:SI 533)
            (const_int 0 [0x0]))) -1 (nil)
    (nil))

(jump_insn 519 518 743 (set (pc)
        (if_then_else (ne (reg:BI 534)
                (const_int 0 [0x0]))
            (label_ref 268)
            (pc))) -1 (nil)
    (nil))

(note 743 519 526 [bb 22] NOTE_INSN_BASIC_BLOCK)

(insn 526 743 527 (set (reg:DI 360)
        (reg:DI 1 r1)) -1 (nil)
    (nil))

(call_insn 527 526 529 (parallel[ 
            (set (reg:SI 8 r8)
                (call (mem:DI (symbol_ref/v:DI ("cl_block")) 0)
                    (const_int 0 [0x0])))
            (use (unspec[ 
                        (reg:DI 1 r1)
                    ]  9))
            (clobber (reg:DI 320 b0))
        ] ) -1 (nil)
    (nil)
    (nil))

(insn 529 527 530 (set (reg:DI 1 r1)
        (reg:DI 360)) -1 (nil)
    (nil))

(note 530 529 742 NOTE_INSN_DELETED)

(insn 742 530 533 (use (const_int 0 [0x0])) -1 (nil)
    (nil))

(note 533 742 534 0x2000000000779800 NOTE_INSN_BLOCK_END)

(note 534 533 268 NOTE_INSN_LOOP_CONT)

(code_label 268 534 744 35 "" "" [6 uses])

(note 744 268 276 [bb 23] NOTE_INSN_BASIC_BLOCK)

(insn 276 744 277 (set (reg:DI 360)
        (reg:DI 1 r1)) -1 (nil)
    (nil))

(call_insn 277 276 279 (parallel[ 
            (set (reg:SI 8 r8)
                (call (mem:DI (symbol_ref/v:DI ("getbyte")) 0)
                    (const_int 0 [0x0])))
            (use (unspec[ 
                        (reg:DI 1 r1)
                    ]  9))
            (clobber (reg:DI 320 b0))
        ] ) -1 (nil)
    (nil)
    (nil))

(insn 279 277 281 (set (reg:DI 1 r1)
        (reg:DI 360)) -1 (nil)
    (nil))

(insn 281 279 282 (set (reg/v:SI 343)
        (reg:SI 8 r8)) -1 (nil)
    (nil))

(note 282 281 284 NOTE_INSN_DELETED)

(insn 284 282 285 (set (reg:SI 434)
        (reg/v:SI 343)) -1 (nil)
    (nil))

(insn 285 284 286 (set (reg:BI 435)
        (ne:BI (reg:SI 434)
            (const_int -1 [0xffffffffffffffff]))) -1 (nil)
    (nil))

(jump_insn 286 285 540 (set (pc)
        (if_then_else (ne (reg:BI 435)
                (const_int 0 [0x0]))
            (label_ref 289)
            (pc))) -1 (nil)
    (nil))

(note 540 286 745 NOTE_INSN_LOOP_END)

(note 745 540 550 [bb 24] NOTE_INSN_BASIC_BLOCK)

(insn 550 745 552 (set (reg:DI 120 out0)
        (reg/v:DI 344)) -1 (nil)
    (nil))

(insn 552 550 553 (set (reg:DI 360)
        (reg:DI 1 r1)) -1 (nil)
    (nil))

(call_insn 553 552 555 (parallel[ 
            (set (reg:SI 8 r8)
                (call (mem:DI (symbol_ref/v:DI ("output")) 0)
                    (const_int 1 [0x1])))
            (use (unspec[ 
                        (reg:DI 1 r1)
                    ]  9))
            (clobber (reg:DI 320 b0))
        ] ) -1 (nil)
    (nil)
    (expr_list (use (reg:DI 120 out0))
        (nil)))

(insn 555 553 556 (set (reg:DI 1 r1)
        (reg:DI 360)) -1 (nil)
    (nil))

(note 556 555 559 NOTE_INSN_DELETED)

(insn 559 556 561 (parallel[ 
            (set (reg/f:DI 535)
                (symbol_ref:DI ("out_count")))
            (clobber (reg:DI 536))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("out_count"))
        (nil)))

(insn 561 559 563 (parallel[ 
            (set (reg/f:DI 537)
                (symbol_ref:DI ("out_count")))
            (clobber (reg:DI 538))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("out_count"))
        (nil)))

(insn 563 561 565 (parallel[ 
            (set (reg/f:DI 539)
                (symbol_ref:DI ("out_count")))
            (clobber (reg:DI 540))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("out_count"))
        (nil)))

(insn 565 563 566 (set (reg:DI 541)
        (mem/f:DI (reg/f:DI 539) 10)) -1 (nil)
    (nil))

(insn 566 565 568 (set (reg:DI 542)
        (plus:DI (reg:DI 541)
            (const_int 1 [0x1]))) -1 (nil)
    (nil))

(insn 568 566 577 (set (mem/f:DI (reg/f:DI 537) 10)
        (reg:DI 542)) -1 (nil)
    (nil))

(insn 577 568 579 (set (reg:DI 120 out0)
        (const_int -1 [0xffffffffffffffff])) -1 (nil)
    (nil))

(insn 579 577 580 (set (reg:DI 360)
        (reg:DI 1 r1)) -1 (nil)
    (nil))

(call_insn 580 579 582 (parallel[ 
            (set (reg:SI 8 r8)
                (call (mem:DI (symbol_ref/v:DI ("output")) 0)
                    (const_int 1 [0x1])))
            (use (unspec[ 
                        (reg:DI 1 r1)
                    ]  9))
            (clobber (reg:DI 320 b0))
        ] ) -1 (nil)
    (nil)
    (expr_list (use (reg:DI 120 out0))
        (nil)))

(insn 582 580 583 (set (reg:DI 1 r1)
        (reg:DI 360)) -1 (nil)
    (nil))

(note 583 582 586 NOTE_INSN_DELETED)

(insn 586 583 588 (parallel[ 
            (set (reg/f:DI 543)
                (symbol_ref:DI ("zcat_flg")))
            (clobber (reg:DI 544))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("zcat_flg"))
        (nil)))

(insn 588 586 589 (set (reg:SI 545)
        (mem/f:SI (reg/f:DI 543) 6)) -1 (nil)
    (nil))

(insn 589 588 590 (set (reg:BI 546)
        (ne:BI (reg:SI 545)
            (const_int 0 [0x0]))) -1 (nil)
    (nil))

(jump_insn 590 589 747 (set (pc)
        (if_then_else (ne (reg:BI 546)
                (const_int 0 [0x0]))
            (label_ref 684)
            (pc))) -1 (nil)
    (nil))

(note 747 590 592 [bb 25] NOTE_INSN_BASIC_BLOCK)

(insn 592 747 594 (parallel[ 
            (set (reg/f:DI 547)
                (symbol_ref:DI ("quiet")))
            (clobber (reg:DI 548))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("quiet"))
        (nil)))

(insn 594 592 595 (set (reg:SI 549)
        (mem/f:SI (reg/f:DI 547) 6)) -1 (nil)
    (nil))

(insn 595 594 596 (set (reg:BI 550)
        (ne:BI (reg:SI 549)
            (const_int 0 [0x0]))) -1 (nil)
    (nil))

(jump_insn 596 595 597 (set (pc)
        (if_then_else (ne (reg:BI 550)
                (const_int 0 [0x0]))
            (label_ref 684)
            (pc))) -1 (nil)
    (nil))

(note 597 596 749 0x2000000000779900 NOTE_INSN_BLOCK_BEG)

(note 749 597 617 [bb 26] NOTE_INSN_BASIC_BLOCK)

(insn 617 749 619 (parallel[ 
            (set (reg/f:DI 555)
                (symbol_ref/f:DI ("*.LC0")))
            (clobber (reg:DI 556))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (nil))

(insn 619 617 621 (parallel[ 
            (set (reg/f:DI 557)
                (symbol_ref:DI ("stderr")))
            (clobber (reg:DI 558))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("stderr"))
        (nil)))

(insn 621 619 623 (set (reg:DI 120 out0)
        (reg/f:DI 555)) -1 (nil)
    (nil))

(insn 623 621 625 (set (reg:DI 121 out1)
        (const_int 1 [0x1])) -1 (nil)
    (nil))

(insn 625 623 627 (set (reg:DI 122 out2)
        (const_int 13 [0xd])) -1 (nil)
    (nil))

(insn 627 625 629 (set (reg:DI 123 out3)
        (mem/f:DI (reg/f:DI 557) 9)) -1 (nil)
    (nil))

(insn 629 627 630 (set (reg:DI 360)
        (reg:DI 1 r1)) -1 (nil)
    (nil))

(call_insn 630 629 632 (parallel[ 
            (set (reg:DI 8 r8)
                (call (mem:DI (symbol_ref/v:DI ("fwrite")) 0)
                    (const_int 4 [0x4])))
            (use (unspec[ 
                        (reg:DI 1 r1)
                    ]  9))
            (clobber (reg:DI 320 b0))
        ] ) -1 (nil)
    (nil)
    (expr_list (use (reg:DI 123 out3))
        (expr_list (use (reg:DI 122 out2))
            (expr_list (use (reg:DI 121 out1))
                (expr_list (use (reg:DI 120 out0))
                    (nil))))))

(insn 632 630 633 (set (reg:DI 1 r1)
        (reg:DI 360)) -1 (nil)
    (nil))

(note 633 632 659 NOTE_INSN_DELETED)

(insn 659 633 661 (parallel[ 
            (set (reg/f:DI 570)
                (symbol_ref:DI ("stderr")))
            (clobber (reg:DI 571))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("stderr"))
        (nil)))

(insn 661 659 663 (parallel[ 
            (set (reg/f:DI 572)
                (symbol_ref:DI ("in_count")))
            (clobber (reg:DI 573))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("in_count"))
        (nil)))

(insn 663 661 665 (parallel[ 
            (set (reg/f:DI 574)
                (symbol_ref:DI ("bytes_out")))
            (clobber (reg:DI 575))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("bytes_out"))
        (nil)))

(insn 665 663 667 (set (reg:DI 576)
        (mem/f:DI (reg/f:DI 572) 10)) -1 (nil)
    (nil))

(insn 667 665 668 (set (reg:DI 577)
        (mem/f:DI (reg/f:DI 574) 10)) -1 (nil)
    (nil))

(insn 668 667 670 (set (reg:DI 578)
        (minus:DI (reg:DI 576)
            (reg:DI 577))) -1 (nil)
    (nil))

(insn 670 668 672 (parallel[ 
            (set (reg/f:DI 579)
                (symbol_ref:DI ("in_count")))
            (clobber (reg:DI 580))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("in_count"))
        (nil)))

(insn 672 670 674 (set (reg:DI 120 out0)
        (mem/f:DI (reg/f:DI 570) 9)) -1 (nil)
    (nil))

(insn 674 672 676 (set (reg:DI 121 out1)
        (reg:DI 578)) -1 (nil)
    (nil))

(insn 676 674 678 (set (reg:DI 122 out2)
        (mem/f:DI (reg/f:DI 579) 10)) -1 (nil)
    (nil))

(insn 678 676 679 (set (reg:DI 360)
        (reg:DI 1 r1)) -1 (nil)
    (nil))

(call_insn 679 678 681 (parallel[ 
            (set (reg:SI 8 r8)
                (call (mem:DI (symbol_ref/v:DI ("prratio")) 0)
                    (const_int 3 [0x3])))
            (use (unspec[ 
                        (reg:DI 1 r1)
                    ]  9))
            (clobber (reg:DI 320 b0))
        ] ) -1 (nil)
    (nil)
    (expr_list (use (reg:DI 122 out2))
        (expr_list (use (reg:DI 121 out1))
            (expr_list (use (reg:DI 120 out0))
                (nil)))))

(insn 681 679 682 (set (reg:DI 1 r1)
        (reg:DI 360)) -1 (nil)
    (nil))

(note 682 681 748 NOTE_INSN_DELETED)

(insn 748 682 683 (use (const_int 0 [0x0])) -1 (nil)
    (nil))

(note 683 748 684 0x2000000000779900 NOTE_INSN_BLOCK_END)

(code_label 684 683 750 51 "" "" [2 uses])

(note 750 684 687 [bb 27] NOTE_INSN_BASIC_BLOCK)

(insn 687 750 689 (parallel[ 
            (set (reg/f:DI 581)
                (symbol_ref:DI ("bytes_out")))
            (clobber (reg:DI 582))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("bytes_out"))
        (nil)))

(insn 689 687 691 (parallel[ 
            (set (reg/f:DI 583)
                (symbol_ref:DI ("in_count")))
            (clobber (reg:DI 584))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("in_count"))
        (nil)))

(insn 691 689 693 (set (reg:DI 585)
        (mem/f:DI (reg/f:DI 581) 10)) -1 (nil)
    (nil))

(insn 693 691 694 (set (reg:DI 586)
        (mem/f:DI (reg/f:DI 583) 10)) -1 (nil)
    (nil))

(insn 694 693 695 (set (reg:BI 587)
        (le:BI (reg:DI 585)
            (reg:DI 586))) -1 (nil)
    (nil))

(jump_insn 695 694 751 (set (pc)
        (if_then_else (ne (reg:BI 587)
                (const_int 0 [0x0]))
            (label_ref 702)
            (pc))) -1 (nil)
    (nil))

(note 751 695 698 [bb 28] NOTE_INSN_BASIC_BLOCK)

(insn 698 751 700 (parallel[ 
            (set (reg/f:DI 588)
                (symbol_ref:DI ("exit_stat")))
            (clobber (reg:DI 589))
            (use (reg:DI 1 r1))
        ] ) -1 (nil)
    (expr_list:REG_EQUAL (symbol_ref:DI ("exit_stat"))
        (nil)))

(insn 700 698 701 (set (reg:SI 590)
        (const_int 2 [0x2])) -1 (nil)
    (expr_list:REG_EQUAL (const_int 2 [0x2])
        (nil)))

(insn 701 700 702 (set (mem/f:SI (reg/f:DI 588) 6)
        (reg:SI 590)) -1 (nil)
    (nil))

(code_label 702 701 752 52 "" "" [1 uses])

(note 752 702 704 [bb 29] NOTE_INSN_BASIC_BLOCK)

(insn 704 752 707 (clobber (reg/i:SI 8 r8)) -1 (nil)
    (nil))

(note 707 704 713 0x2000000000779980 NOTE_INSN_BLOCK_END)

(insn 713 707 714 (set (reg/i:SI 8 r8)
        (reg:SI 340)) -1 (nil)
    (nil))

(insn 714 713 0 (use (reg/i:SI 8 r8)) -1 (nil)
    (nil))
30 basic blocks, 48 edges.

Basic block 0: first insn 715, last 22, loop_depth 0, count 0.
Predecessors:  ENTRY (fallthru)
Successors:  1 (fallthru) 2 (crit)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 1: first insn 717, last 716, loop_depth 0, count 0.
Predecessors:  0 (fallthru)
Successors:  2 (fallthru)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 2: first insn 120, last 183, loop_depth 0, count 0.
Predecessors:  1 (fallthru) 0 (crit)
Successors:  3 (fallthru) 4
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 3: first insn 719, last 187, loop_depth 0, count 0.
Predecessors:  2 (fallthru)
Successors:  5
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 4: first insn 189, last 192, loop_depth 0, count 0.
Predecessors:  2
Successors:  5 (fallthru)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 5: first insn 193, last 756, loop_depth 0, count 0.
Predecessors:  4 (fallthru) 3
Successors:  6 (fallthru,crit) 7 (crit)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 6: first insn 226, last 223, loop_depth 0, count 0.
Predecessors:  6 (crit) 5 (fallthru,crit)
Successors:  7 (fallthru,crit) 6 (crit)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 7: first insn 757, last 536, loop_depth 0, count 0.
Predecessors:  6 (fallthru,crit) 5 (crit)
Successors:  23
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 8: first insn 289, last 328, loop_depth 0, count 0.
Predecessors:  23
Successors:  9 (fallthru) 10
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 9: first insn 727, last 340, loop_depth 0, count 0.
Predecessors:  8 (fallthru)
Successors:  23
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 10: first insn 344, last 355, loop_depth 0, count 0.
Predecessors:  8
Successors:  11 (fallthru) 18 (crit)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 11: first insn 729, last 367, loop_depth 0, count 0.
Predecessors:  10 (fallthru)
Successors:  12 (fallthru) 13 (crit)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 12: first insn 731, last 372, loop_depth 0, count 0.
Predecessors:  11 (fallthru)
Successors:  13 (fallthru)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 13: first insn 374, last 381, loop_depth 0, count 0.
Predecessors:  17 (crit) 12 (fallthru) 11 (crit)
Successors:  14 (fallthru) 15 (crit)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 14: first insn 733, last 385, loop_depth 0, count 0.
Predecessors:  13 (fallthru)
Successors:  15 (fallthru)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 15: first insn 386, last 397, loop_depth 0, count 0.
Predecessors:  14 (fallthru) 13 (crit)
Successors:  16 (fallthru) 17
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 16: first insn 735, last 409, loop_depth 0, count 0.
Predecessors:  15 (fallthru)
Successors:  23
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 17: first insn 411, last 422, loop_depth 0, count 0.
Predecessors:  15
Successors:  18 (fallthru,crit) 13 (crit)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 18: first insn 429, last 469, loop_depth 0, count 0.
Predecessors:  17 (fallthru,crit) 10 (crit)
Successors:  19 (fallthru) 20
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 19: first insn 739, last 500, loop_depth 0, count 0.
Predecessors:  18 (fallthru)
Successors:  23
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 20: first insn 502, last 513, loop_depth 0, count 0.
Predecessors:  18
Successors:  21 (fallthru) 23 (crit)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 21: first insn 741, last 519, loop_depth 0, count 0.
Predecessors:  20 (fallthru)
Successors:  22 (fallthru) 23 (crit)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 22: first insn 743, last 742, loop_depth 0, count 0.
Predecessors:  21 (fallthru)
Successors:  23 (fallthru)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 23: first insn 268, last 286, loop_depth 0, count 0.
Predecessors:  22 (fallthru) 21 (crit) 20 (crit) 19 16 9 7
Successors:  24 (fallthru) 8
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 24: first insn 745, last 590, loop_depth 0, count 0.
Predecessors:  23 (fallthru)
Successors:  25 (fallthru) 27 (crit)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 25: first insn 747, last 596, loop_depth 0, count 0.
Predecessors:  24 (fallthru)
Successors:  26 (fallthru) 27 (crit)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 26: first insn 749, last 748, loop_depth 0, count 0.
Predecessors:  25 (fallthru)
Successors:  27 (fallthru)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 27: first insn 684, last 695, loop_depth 0, count 0.
Predecessors:  26 (fallthru) 25 (crit) 24 (crit)
Successors:  28 (fallthru) 29 (crit)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 28: first insn 751, last 701, loop_depth 0, count 0.
Predecessors:  27 (fallthru)
Successors:  29 (fallthru)
Registers live at start: (nil)
Registers live at end: (nil)

Basic block 29: first insn 702, last 714, loop_depth 0, count 0.
Predecessors:  28 (fallthru) 27 (crit)
Successors:  EXIT (fallthru)
Registers live at start: (nil)
Registers live at end: (nil)

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