FYI, here are the IRA and LRA dumps as of -da
Am 04.08.25 um 13:04 schrieb Georg-Johann Lay via Gcc:
Rewriting avr.md so it uses less explicit hard registers, I came
across the ICE below. I am using 2 patches as attached:
- A tentative fix for LRA https://gcc.gnu.org/PR121198
- A WIP to rewrite avr.md's divmodhi4 to use HRCs instead of
explicit hard regs. Outcome is that divmodhi4 will read
like this:
(define_insn_and_split "divmodhi4"
[(set (match_operand:HI 0 "register_operand" "={r22}")
(div:HI (match_operand:HI 1 "register_operand" "{r24}")
(match_operand:HI 2 "register_operand" "{r22}")))
(set (match_operand:HI 3 "register_operand" "={r24}")
(mod:HI (match_dup 1)
(match_dup 2)))
(clobber (match_scratch:HI 4 "={r26}"))
(clobber (match_scratch:QI 5 "={r21}"))]
""
"#"
"&& reload_completed"
[(scratch)]
{ DONE_ADD_CCC })
Then compile
void bar (int, char*);
void foo (int k)
{
bar (k / 5, "one");
}
$ avr-gcc spill.c -S -mmcu=avr4 -Os -da
spill.c: In function 'foo':
spill.c:6:1: error: unable to find a register to spill
6 | }
| ^
spill.c:6:1: error: this is the insn:
(insn 9 20 16 2 (parallel [
(set (reg:HI 53)
(div:HI (reg:HI 49 [ k ])
(reg:HI 54 [48])))
(set (reg:HI 55 [47])
(mod:HI (reg:HI 49 [ k ])
(reg:HI 54 [48])))
(clobber (reg:HI 56 [50]))
(clobber (reg:QI 57 [51]))
]) "spill.c":5:5 588 {divmodhi4}
(expr_list:REG_UNUSED (reg:QI 57 [51])
(expr_list:REG_UNUSED (reg:HI 56 [50])
(expr_list:REG_UNUSED (reg:HI 55 [47])
(expr_list:REG_DEAD (reg:HI 54 [48])
(expr_list:REG_DEAD (reg:HI 49 [ k ])
(nil)))))))
during RTL pass: reload
dump file: spill.c.326r.reload
spill.c:6:1: internal compiler error: in lra_split_hard_reg_for, at
lra-assigns.cc:1863
Some questions:
1) Is there anything wrong with the divmodhi4 pattern per se?
AFAIU match_dup is the right thing to do. HImode regs must start
in even registers, so that's fine too I think.
When the pattern itself is fine, I would open a PR for the ICE.
2) I had a look at the IRA dump. The assignments it comes up with
have nothing to do with the constraints:
divmodhi4 Regs before IRA
Op Reg IRA *=pseudo assigns
0 =r22:HI 24
1 r24:HI 49* 24
2 r22:HI 48* 18
3 =r24:HI 47* 18
4 =r26:HI 50* 20
5 =r21:QI 51* 30
That is: IRA comes up with assigns that have nothing to do with
the constraints of the insn. Doesn't that make it extra hard
for LRA to come up with the specified constraints?
IIUC, HRCs materialize in lra-constraints.cc, and IRA doesn't
know anything about them. Isn't that a perfect situation for
sub-optimal code? Since LRA will have to spill many of IRA's
choices, requiring a zoo off extra moves and frame locations
when reg pressure is high.
So I guess the problem is that IRA only works on the level of
register classes, and it cannot do anything about HRCs since
they don't have a register class in general?
Johann
;; Function foo (foo, funcdef_no=0, decl_uid=2020, cgraph_uid=1, symbol_order=0)
Starting decreasing number of live ranges...
starting the processing of deferred insns
ending the processing of deferred insns
df_analyze called
;; 1 loops found
;;
;; Loop 0
;; header 0, latch 1
;; depth 0, outer -1
;; nodes: 0 1 2
;; 2 succs { 1 }
Removing SCRATCH to p50 in insn #9 (nop 4)
Removing SCRATCH to p51 in insn #9 (nop 5)
rescanning insn with uid = 9.
starting the processing of deferred insns
ending the processing of deferred insns
df_analyze called
df_worklist_dataflow_doublequeue: n_basic_blocks 3 n_edges 2 count 3 ( 1)
Reg 49: local to bb 2 def dominates all uses has unique first use
Reg 48: local to bb 2 def dominates all uses has unique first use
Ignoring reg 48 with equiv init insn
Found def insn 14 for 49 to be not moveable
Building IRA IR
starting the processing of deferred insns
ending the processing of deferred insns
df_analyze called
Pass 0 for finding pseudo/allocno costs
a4 (r51,l0) best GENERAL_REGS, allocno GENERAL_REGS
a3 (r50,l0) best GENERAL_REGS, allocno GENERAL_REGS
a1 (r49,l0) best GENERAL_REGS, allocno GENERAL_REGS
a0 (r48,l0) best LD_REGS, allocno LD_REGS
a2 (r47,l0) best GENERAL_REGS, allocno GENERAL_REGS
a0(r48,l0) costs: POINTER_X_REGS:1000000 POINTER_Y_REGS:1000000
POINTER_Z_REGS:1000000 BASE_POINTER_REGS:1000000 POINTER_REGS:1000000
ADDW_REGS:1000000 SIMPLE_LD_REGS:1000000 LD_REGS:1000000 NO_LD_REGS:1002000
GENERAL_REGS:1002000 MEM:1004000
a1(r49,l0) costs: POINTER_X_REGS:1002000 POINTER_Y_REGS:1002000
POINTER_Z_REGS:1002000 BASE_POINTER_REGS:1002000 POINTER_REGS:1002000
ADDW_REGS:1002000 SIMPLE_LD_REGS:1002000 LD_REGS:1002000 NO_LD_REGS:1002000
GENERAL_REGS:1002000 MEM:1004000
a2(r47,l0) costs: POINTER_X_REGS:1000000 POINTER_Y_REGS:1000000
POINTER_Z_REGS:1000000 BASE_POINTER_REGS:1000000 POINTER_REGS:1000000
ADDW_REGS:1000000 SIMPLE_LD_REGS:1000000 LD_REGS:1000000 NO_LD_REGS:1000000
GENERAL_REGS:1000000 MEM:1000000
a3(r50,l0) costs: POINTER_X_REGS:1000000 POINTER_Y_REGS:1000000
POINTER_Z_REGS:1000000 BASE_POINTER_REGS:1000000 POINTER_REGS:1000000
ADDW_REGS:1000000 SIMPLE_LD_REGS:1000000 LD_REGS:1000000 NO_LD_REGS:1000000
GENERAL_REGS:1000000 MEM:1000000
a4(r51,l0) costs: POINTER_X_REGS:1000000 POINTER_Y_REGS:1000000
POINTER_Z_REGS:1000000 BASE_POINTER_REGS:1000000 POINTER_REGS:1000000
ADDW_REGS:1000000 SIMPLE_LD_REGS:1000000 LD_REGS:1000000 NO_LD_REGS:1000000
GENERAL_REGS:1000000 MEM:1000000
Pass 1 for finding pseudo/allocno costs
r51: preferred GENERAL_REGS, alternative NO_REGS, allocno GENERAL_REGS
r50: preferred GENERAL_REGS, alternative NO_REGS, allocno GENERAL_REGS
r49: preferred GENERAL_REGS, alternative NO_REGS, allocno GENERAL_REGS
r48: preferred LD_REGS, alternative GENERAL_REGS, allocno GENERAL_REGS
r47: preferred GENERAL_REGS, alternative NO_REGS, allocno GENERAL_REGS
a0(r48,l0) costs: LD_REGS:1000000 NO_LD_REGS:1002000 GENERAL_REGS:1002000
MEM:1004000
a1(r49,l0) costs: GENERAL_REGS:1002000 MEM:1004000
a2(r47,l0) costs: GENERAL_REGS:1000000 MEM:1000000
a3(r50,l0) costs: GENERAL_REGS:1000000 MEM:1000000
a4(r51,l0) costs: GENERAL_REGS:1000000 MEM:1000000
Insn 10(l0): point = 0
Insn 9(l0): point = 2
Insn 8(l0): point = 4
Insn 6(l0): point = 6
Insn 14(l0): point = 8
a0(r48 [0]): [3..6]
a0(r48 [1]): [3..6]
a1(r49 [0]): [3..8]
a1(r49 [1]): [3..8]
a2(r47 [0]): [2..2]
a2(r47 [1]): [2..2]
a3(r50 [0]): [2..2]
a3(r50 [1]): [2..2]
a4(r51): [2..2]
Compressing live ranges: from 11 to 3 - 27%
Ranges after the compression:
a0(r48 [0]): [1..2]
a0(r48 [1]): [1..2]
a1(r49 [0]): [1..2]
a1(r49 [1]): [1..2]
a2(r47 [0]): [0..0]
a2(r47 [1]): [0..0]
a3(r50 [0]): [0..0]
a3(r50 [1]): [0..0]
a4(r51): [0..0]
+++Allocating 72 bytes for conflict table (uncompressed size 72)
;; a0(r48,l0) conflicts:
;; subobject 0: a1(r49,w0,l0) a1(r49,w1,l0)
;; total conflict hard regs: 22-23
;; conflict hard regs: 22-23
;; subobject 1: a1(r49,w0,l0)
;; total conflict hard regs: 22-23
;; conflict hard regs: 22-23
;; a1(r49,l0) conflicts:
;; subobject 0: a0(r48,w0,l0) a0(r48,w1,l0)
;; total conflict hard regs: 22-23
;; conflict hard regs: 22-23
;; subobject 1: a0(r48,w0,l0)
;; total conflict hard regs: 22-23
;; conflict hard regs: 22-23
;; a2(r47,l0) conflicts:
;; subobject 0: a3(r50,w0,l0) a3(r50,w1,l0) a4(r51,l0)
;; total conflict hard regs: 22-25
;; conflict hard regs: 22-25
;; subobject 1: a3(r50,w0,l0) a4(r51,l0)
;; total conflict hard regs: 22-25
;; conflict hard regs: 22-25
;; a3(r50,l0) conflicts:
;; subobject 0: a2(r47,w0,l0) a2(r47,w1,l0) a4(r51,l0)
;; total conflict hard regs: 22-25
;; conflict hard regs: 22-25
;; subobject 1: a2(r47,w0,l0) a4(r51,l0)
;; total conflict hard regs: 22-25
;; conflict hard regs: 22-25
;; a4(r51,l0) conflicts: a2(r47,w0,l0) a2(r47,w1,l0) a3(r50,w0,l0) a3(r50,w1,l0)
;; total conflict hard regs: 22-25
;; conflict hard regs: 22-25
pref0:a1(r49)<-hr24@2000
regions=1, blocks=3, points=3
allocnos=5 (big 4), copies=0, conflicts=0, ranges=9
**** Allocnos coloring:
Loop 0 (parent -1, header bb2, depth 0)
bbs: 2
all: 0r48 1r49 2r47 3r50 4r51
modified regnos: 47 48 49 50 51
border:
Pressure: GENERAL_REGS=9
Removing pref0:hr24@2000
Hard reg set forest:
0:( 2-31)@0
1:( 2 4 6 8 10 12 14 16-21 24-31)@8000
2:( 2 4 6 8 10 12 14 16 18 20 24 26 28 30)@12000
3:( 2 4 6 8 10 12 14 16 18 20 26 28 30)@0
Allocno a0r48 of GENERAL_REGS(30) has 21 avail. regs 2 4 6 8 10 12 14
16-21 24-31, node: 2 4 6 8 10 12 14 16-21 24-31 obj 0 (confl regs = 0-1 22-23
32-36), obj 1 (confl regs = 0-1 22-23 32-36)
Allocno a1r49 of GENERAL_REGS(30) has 14 avail. regs 2 4 6 8 10 12 14 16
18 20 24 26 28 30, node: 2 4 6 8 10 12 14 16 18 20 24 26 28 30 obj 0 (confl
regs = 0-1 22-23 32-36), obj 1 (confl regs = 0-1 22-23 32-36)
Allocno a2r47 of GENERAL_REGS(30) has 13 avail. regs 2 4 6 8 10 12 14 16
18 20 26 28 30, node: 2 4 6 8 10 12 14 16 18 20 26 28 30 obj 0 (confl regs =
0-1 22-25 32-36), obj 1 (confl regs = 0-1 22-25 32-36)
Allocno a3r50 of GENERAL_REGS(30) has 13 avail. regs 2 4 6 8 10 12 14 16
18 20 26 28 30, node: 2 4 6 8 10 12 14 16 18 20 26 28 30 obj 0 (confl regs =
0-1 22-25 32-36), obj 1 (confl regs = 0-1 22-25 32-36)
Allocno a4r51 of GENERAL_REGS(30) has 26 avail. regs 2-21 26-31, ^node:
2-31 (confl regs = 0-1 22-25 32-36)
Forming thread from colorable bucket:
Pushing a4(r51,l0)(cost 0)
Pushing a3(r50,l0)(cost 0)
Pushing a2(r47,l0)(cost 0)
Pushing a1(r49,l0)(cost 0)
Pushing a0(r48,l0)(cost 0)
Popping a0(r48,l0) -- assign reg 18
Popping a1(r49,l0) -- assign reg 24
Popping a2(r47,l0) -- assign reg 18
Popping a3(r50,l0) -- assign reg 20
Popping a4(r51,l0) -- assign reg 30
Disposition:
2:r47 l0 18 0:r48 l0 18 1:r49 l0 24 3:r50 l0 20
4:r51 l0 30
New iteration of spill/restore move
+++Costs: overall 4998000, reg 4998000, mem 0, ld 0, st 0, move 0
+++ move loops 0, new jumps 0
foo
Dataflow summary:
;; fully invalidated by EH 0 [r0] 1 [r1] 18 [r18] 19 [r19] 20 [r20] 21
[r21] 22 [r22] 23 [r23] 24 [r24] 25 [r25] 26 [r26] 27 [r27] 30 [r30] 31 [r31]
33 [__SP_H__] 35 [argH] 36 [cc]
;; hardware regs used 28 [r28] 32 [__SP_L__] 34 [argL]
;; regular block artificial uses 28 [r28] 32 [__SP_L__] 34 [argL]
;; eh block artificial uses 28 [r28] 32 [__SP_L__] 34 [argL]
;; entry block defs 8 [r8] 9 [r9] 10 [r10] 11 [r11] 12 [r12] 13 [r13] 14
[r14] 15 [r15] 16 [r16] 17 [r17] 18 [r18] 19 [r19] 20 [r20] 21 [r21] 22 [r22]
23 [r23] 24 [r24] 25 [r25] 28 [r28] 32 [__SP_L__] 34 [argL]
;; exit block uses 28 [r28] 32 [__SP_L__]
;; regs ever live 22 [r22] 23 [r23] 24 [r24] 25 [r25] 32 [__SP_L__]
;; ref usage r0={1d} r1={1d} r8={1d} r9={1d} r10={1d} r11={1d} r12={1d}
r13={1d} r14={1d} r15={1d} r16={1d} r17={1d} r18={2d} r19={2d} r20={2d}
r21={2d} r22={3d,1u} r23={3d,1u} r24={3d,2u} r25={3d,2u} r26={1d} r27={1d}
r28={1d,2u} r30={1d} r31={1d} r32={1d,3u} r33={1d} r34={1d,1u} r35={1d}
r36={1d} r47={1d} r48={1d,2u} r49={1d,2u} r50={1d} r51={1d}
;; total ref usage 63{47d,16u,0e} in 5{4 regular + 1 call} insns.
(note 1 0 4 NOTE_INSN_DELETED)
;; basic block 2, loop depth 0, count 1073741824 (estimated locally, freq
1.0000), maybe hot
;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED)
;; pred: ENTRY [always] count:1073741824 (estimated locally, freq
1.0000) (FALLTHRU)
;; bb 2 artificial_defs: { }
;; bb 2 artificial_uses: { u-1(28){ }u-1(32){ }u-1(34){ }}
;; lr in 24 [r24] 25 [r25] 28 [r28] 32 [__SP_L__] 34 [argL]
;; lr use 24 [r24] 25 [r25] 28 [r28] 32 [__SP_L__] 34 [argL]
;; lr def 0 [r0] 1 [r1] 18 [r18] 19 [r19] 20 [r20] 21 [r21] 22 [r22] 23
[r23] 24 [r24] 25 [r25] 26 [r26] 27 [r27] 30 [r30] 31 [r31] 33 [__SP_H__] 35
[argH] 36 [cc] 47 48 49 50 51
(note 4 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(insn 14 4 2 2 (set (reg:HI 49 [ k ])
(reg:HI 24 r24 [ k ])) "spill.c":4:1 128 {*movhi_split}
(expr_list:REG_DEAD (reg:HI 24 r24 [ k ])
(nil)))
(note 2 14 3 2 NOTE_INSN_DELETED)
(note 3 2 6 2 NOTE_INSN_FUNCTION_BEG)
(insn 6 3 7 2 (set (reg:HI 48)
(const_int 5 [0x5])) "spill.c":5:5 128 {*movhi_split}
(expr_list:REG_EQUIV (const_int 5 [0x5])
(nil)))
(note 7 6 8 2 NOTE_INSN_DELETED)
(insn 8 7 9 2 (set (reg:HI 22 r22)
(symbol_ref/f:HI ("*.LC0") [flags 0x2] <var_decl 0x7efdf6ba0d10
*.LC0>)) "spill.c":5:5 128 {*movhi_split}
(nil))
(insn 9 8 10 2 (parallel [
(set (reg:HI 24 r24)
(div:HI (reg:HI 49 [ k ])
(reg:HI 48)))
(set (reg:HI 47)
(mod:HI (reg:HI 49 [ k ])
(reg:HI 48)))
(clobber (reg:HI 50))
(clobber (reg:QI 51))
]) "spill.c":5:5 588 {divmodhi4}
(expr_list:REG_DEAD (reg:HI 49 [ k ])
(expr_list:REG_DEAD (reg:HI 48)
(expr_list:REG_UNUSED (reg:QI 51)
(expr_list:REG_UNUSED (reg:HI 50)
(expr_list:REG_UNUSED (reg:HI 47)
(nil)))))))
(call_insn/j 10 9 11 2 (parallel [
(call (mem:HI (symbol_ref:HI ("bar") [flags 0x41] <function_decl
0x7efdf6baa600 bar>) [0 bar S2 A8])
(const_int 0 [0]))
(use (const_int 1 [0x1]))
]) "spill.c":5:5 961 {call_insn}
(expr_list:REG_DEAD (reg:HI 24 r24)
(expr_list:REG_DEAD (reg:HI 22 r22)
(expr_list:REG_CALL_DECL (symbol_ref:HI ("bar") [flags 0x41]
<function_decl 0x7efdf6baa600 bar>)
(nil))))
(expr_list:HI (use (reg:HI 24 r24))
(expr_list:HI (use (reg:HI 22 r22))
(nil))))
;; succ: EXIT [always] count:1073741824 (estimated locally, freq
1.0000) (ABNORMAL,SIBCALL)
;; lr out 28 [r28] 32 [__SP_L__] 34 [argL]
(barrier 11 10 0)
;; Function foo (foo, funcdef_no=0, decl_uid=2020, cgraph_uid=1, symbol_order=0)
********** Local #1: **********
Spilling non-eliminable hard regs: 32 33
New elimination table:
Can eliminate 34 to 32 (offset=3, prev_offset=-1)
Can eliminate 34 to 28 (offset=3, prev_offset=-1)
Can eliminate 28 to 32 (offset=0, prev_offset=-1)
Considering alt=0 of insn 6: (0) =r (1) r
1 Operand reload: losers++
1 Non-pseudo reload: reject+=2
1 Small class reload: reject+=3
1 Non input pseudo reload: reject++
Cycle danger: overall += LRA_MAX_REJECT
overall=612,losers=1,rld_nregs=2
Considering alt=1 of insn 6: (0) r (1) Y00
Bad operand -- refuse
Considering alt=2 of insn 6: (0) r (1) m
1 Operand reload: losers++
1 Spill Non-pseudo into memory: reject+=3
Using memory insn operand 1: reject+=3
1 Non input pseudo reload: reject++
overall=13,losers=1,rld_nregs=0
Considering alt=3 of insn 6: (0) m (1) rY00
0 Operand reload: losers++
0 Spill pseudo into memory: reject+=3
Using memory insn operand 0: reject+=3
0 Non input pseudo reload: reject++
1 Operand reload: losers++
1 Non-pseudo reload: reject+=2
1 Small class reload: reject+=3
1 Non input pseudo reload: reject++
overall=25,losers=2 -- refuse
Considering alt=4 of insn 6: (0) d (1) i
overall=0,losers=0,rld_nregs=0
Choosing alt 4 in insn 6: (0) d (1) i {*movhi_split}
Considering alt=0 of insn 8: (0) =r (1) r
1 Operand reload: losers++
1 Non-pseudo reload: reject+=2
1 Small class reload: reject+=3
1 Non input pseudo reload: reject++
Cycle danger: overall += LRA_MAX_REJECT
overall=612,losers=1,rld_nregs=2
Considering alt=1 of insn 8: (0) r (1) Y00
Bad operand -- refuse
Considering alt=2 of insn 8: (0) r (1) m
1 Operand reload: losers++
1 Spill Non-pseudo into memory: reject+=3
Using memory insn operand 1: reject+=3
1 Non input pseudo reload: reject++
overall=13,losers=1,rld_nregs=0
Considering alt=3 of insn 8: (0) m (1) rY00
0 Operand reload: losers++
0 Non-pseudo reload: reject+=2
0 Spill pseudo into memory: reject+=3
Using memory insn operand 0: reject+=3
0 Non input pseudo reload: reject++
overall=15,losers=1 -- refuse
Considering alt=4 of insn 8: (0) d (1) i
overall=0,losers=0,rld_nregs=0
Choosing alt 4 in insn 8: (0) d (1) i {*movhi_split}
Considering alt=0 of insn 9: (0) ={r22} (1) {r24} (2) {r22} (3)
={r24} (4) ={r26} (5) ={r21}
0 Operand reload: losers++
0 Non-pseudo reload: reject+=2
0 Small class reload: reject+=3
0 Non input pseudo reload: reject++
2 Operand reload: losers++
2 Small class reload: reject+=3
3 Operand reload: losers++
3 Small class reload: reject+=3
3 Non input pseudo reload: reject++
4 Operand reload: losers++
4 Small class reload: reject+=3
4 Non input pseudo reload: reject++
5 Operand reload: losers++
5 Small class reload: reject+=3
5 Non input pseudo reload: reject++
overall=51,losers=5,rld_nregs=9
Choosing alt 0 in insn 9: (0) ={r22} (1) {r24} (2) {r22} (3) ={r24}
(4) ={r26} (5) ={r21} {divmodhi4}
Creating newreg=53 from oldreg=24, assigning class GENERAL_REGS to r53
Creating newreg=54 from oldreg=48, assigning class GENERAL_REGS to r54
Creating newreg=55 from oldreg=47, assigning class GENERAL_REGS to r55
Creating newreg=56 from oldreg=50, assigning class GENERAL_REGS to r56
Creating newreg=57 from oldreg=51, assigning class GENERAL_REGS to r57
9: {r53:HI=r49:HI/r54:HI;r55:HI=r49:HI%r54:HI;clobber r56:HI;clobber
r57:QI;}
REG_DEAD r49:HI
REG_DEAD r48:HI
REG_UNUSED r51:QI
REG_UNUSED r50:HI
REG_UNUSED r47:HI
Inserting insn reload before:
17: r54:HI=r48:HI
Inserting insn reload after:
16: r24:HI=r53:HI
Considering alt=0 of insn 10: (0) z (1) X (2) L
0 Operand reload: losers++
0 Non-pseudo reload: reject+=2
0 Small class reload: reject+=3
0 Non input pseudo reload: reject++
Bad operand -- refuse
Considering alt=1 of insn 10: (0) s (1) X (2) L
Bad operand -- refuse
Considering alt=2 of insn 10: (0) z (1) X (2) P
0 Operand reload: losers++
0 Non-pseudo reload: reject+=2
0 Small class reload: reject+=3
0 Non input pseudo reload: reject++
overall=12,losers=1,rld_nregs=2
Considering alt=3 of insn 10: (0) s (1) X (2) P
overall=0,losers=0,rld_nregs=0
Choosing alt 3 in insn 10: (0) s (1) X (2) P {call_insn}
Spilling non-eliminable hard regs: 32 33
********** Inheritance #1: **********
EBB 2
********** Pseudo live ranges #1: **********
BB 2
Insn 10: point = 0, n_alt = 3
Insn 16: point = 0, n_alt = -2
Hard reg 24 is preferable by r53 with profit 1000
Insn 9: point = 1, n_alt = 0
Insn 17: point = 3, n_alt = -2
Hard reg 18 is preferable by r54 with profit 1000
Insn 8: point = 5, n_alt = 4
Insn 6: point = 5, n_alt = 4
Insn 14: point = 6, n_alt = -2
r48: [4..5]
r49: [2..6]
r53: [0..1]
r54: [2..3]
r55: [1..1]
r56: [1..1]
r57: [1..1]
Compressing live ranges: from 7 to 6 - 85%
Ranges after the compression:
r48: [4..5]
r49: [2..5]
r53: [0..1]
r54: [2..3]
r55: [1..1]
r56: [1..1]
r57: [1..1]
********** Assignment #1: **********
Assigning to 53 (cl=GENERAL_REGS, orig=53, freq=2000, tfirst=53,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18:
Trying 19:
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17:
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24: spill 49(freq=2000)
Trying 25: spill 49(freq=2000)
Trying 18:
Trying 19:
Trying 20:
Trying 21:
Trying 22:
Trying 23: spill 49(freq=2000)
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17:
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Assigning to 55 (cl=GENERAL_REGS, orig=47, freq=1000, tfirst=55,
tfreq=1000)...
Assign 24 to reload r55 (freq=1000)
Assigning to 56 (cl=GENERAL_REGS, orig=50, freq=1000, tfirst=56,
tfreq=1000)...
Assign 26 to reload r56 (freq=1000)
Assigning to 57 (cl=GENERAL_REGS, orig=51, freq=1000, tfirst=57,
tfreq=1000)...
Assign 21 to reload r57 (freq=1000)
2nd iter for reload pseudo assignments:
Reload r53 assignment failure
Reload r54 assignment failure
Spill reload r57(hr=21, freq=1000)
Spill reload r56(hr=26, freq=1000)
Spill reload r55(hr=24, freq=1000)
Spill r49(hr=24, freq=2000)
Assigning to 53 (cl=GENERAL_REGS, orig=53, freq=2000, tfirst=53,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18:
Trying 19:
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17:
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18:
Trying 19:
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17:
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Assigning to 55 (cl=GENERAL_REGS, orig=47, freq=1000, tfirst=55,
tfreq=1000)...
Assign 24 to reload r55 (freq=1000)
Assigning to 56 (cl=GENERAL_REGS, orig=50, freq=1000, tfirst=56,
tfreq=1000)...
Assign 26 to reload r56 (freq=1000)
Assigning to 57 (cl=GENERAL_REGS, orig=51, freq=1000, tfirst=57,
tfreq=1000)...
Assign 21 to reload r57 (freq=1000)
Reassigning non-reload pseudos
Assign 24 to r49 (freq=2000)
********** Undoing inheritance #1: **********
****** Splitting a hard reg after assignment #1: ******
((((((((((((((((((((((((((((((((((((((((((((((((
Creating newreg=58 from oldreg=22, assigning class SIMPLE_LD_REGS to
split r58
16: r24:HI=r53:HI
REG_DEAD r53:HI
Add reg<-split after:
19: r22:QI=r58:QI
9: {r53:HI=r49:HI/r54:HI;r55:HI=r49:HI%r54:HI;clobber r56:HI;clobber
r57:QI;}
REG_UNUSED r57:QI
REG_UNUSED r56:HI
REG_UNUSED r55:HI
REG_DEAD r54:HI
REG_DEAD r49:HI
Add split<-reg before:
18: r58:QI=r22:QI
))))))))))))))))))))))))))))))))))))))))))))))))
********** Pseudo live ranges #2: **********
BB 2
Insn 10: point = 0, n_alt = 3
Insn 19: point = 0, n_alt = -1
Hard reg 22 is preferable by r58 with profit 1000
Insn 16: point = 1, n_alt = -2
Hard reg 24 is preferable by r53 with profit 1000
Insn 9: point = 2, n_alt = -1
Insn 18: point = 4, n_alt = -1
Hard reg 22 is preferable by r58 with profit 2000
Insn 17: point = 5, n_alt = -2
Hard reg 18 is preferable by r54 with profit 1000
Insn 8: point = 7, n_alt = 4
Insn 6: point = 7, n_alt = 4
Insn 14: point = 8, n_alt = -1
r48: [6..7]
r49: [3..8]
r53: [1..2]
r54: [3..5]
r55: [2..2]
r56: [2..2]
r57: [2..2]
r58: [0..4]
Compressing live ranges: from 9 to 6 - 66%
Ranges after the compression:
r48: [4..5]
r49: [2..5]
r53: [0..1]
r54: [2..3]
r55: [1..1]
r56: [1..1]
r57: [1..1]
r58: [0..3]
********** Assignment #2: **********
Assigning to 53 (cl=GENERAL_REGS, orig=53, freq=2000, tfirst=53,
tfreq=2000)...
Trying 18:
Trying 19:
Trying 22: spill 58(freq=2000)
Trying 30:
Trying 31:
Trying 28:
Trying 29:
Trying 17:
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24: spill 49(freq=2000)
Trying 25: spill 49(freq=2000)
Trying 18:
Trying 19:
Trying 20:
Trying 21: spill 58(freq=2000)
Trying 22: spill 58(freq=2000)
Trying 23: spill 49(freq=2000)
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17:
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
2nd iter for reload pseudo assignments:
Reload r53 assignment failure
Reload r54 assignment failure
Spill split r58(hr=22, freq=2000)
Spill reload r57(hr=21, freq=1000)
Spill reload r56(hr=26, freq=1000)
Spill reload r55(hr=24, freq=1000)
Spill r49(hr=24, freq=2000)
Assigning to 58 (cl=SIMPLE_LD_REGS, orig=58, freq=2000, tfirst=58,
tfreq=2000)...
Assign 18 to split r58 (freq=2000)
Assigning to 53 (cl=GENERAL_REGS, orig=53, freq=2000, tfirst=53,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18: spill 58(freq=2000)
Trying 19:
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18: spill 58(freq=2000)
Trying 19:
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Assigning to 55 (cl=GENERAL_REGS, orig=47, freq=1000, tfirst=55,
tfreq=1000)...
Assign 24 to reload r55 (freq=1000)
Assigning to 56 (cl=GENERAL_REGS, orig=50, freq=1000, tfirst=56,
tfreq=1000)...
Assign 26 to reload r56 (freq=1000)
Assigning to 57 (cl=GENERAL_REGS, orig=51, freq=1000, tfirst=57,
tfreq=1000)...
Assign 21 to reload r57 (freq=1000)
Reassigning non-reload pseudos
Assign 24 to r49 (freq=2000)
****** Splitting a hard reg after assignment #2: ******
((((((((((((((((((((((((((((((((((((((((((((((((
Creating newreg=59 from oldreg=23, assigning class SIMPLE_LD_REGS to
split r59
16: r24:HI=r53:HI
REG_DEAD r53:HI
Add reg<-split after:
21: r23:QI=r59:QI
9: {r53:HI=r49:HI/r54:HI;r55:HI=r49:HI%r54:HI;clobber r56:HI;clobber
r57:QI;}
REG_UNUSED r57:QI
REG_UNUSED r56:HI
REG_UNUSED r55:HI
REG_DEAD r54:HI
REG_DEAD r49:HI
Add split<-reg before:
20: r59:QI=r23:QI
))))))))))))))))))))))))))))))))))))))))))))))))
********** Pseudo live ranges #3: **********
BB 2
Insn 10: point = 0, n_alt = 3
Insn 19: point = 0, n_alt = -1
Hard reg 22 is preferable by r58 with profit 1000
Insn 21: point = 1, n_alt = -1
Hard reg 23 is preferable by r59 with profit 1000
Insn 16: point = 2, n_alt = -2
Hard reg 24 is preferable by r53 with profit 1000
Insn 9: point = 3, n_alt = -1
Insn 20: point = 5, n_alt = -1
Hard reg 23 is preferable by r59 with profit 2000
Insn 18: point = 6, n_alt = -1
Hard reg 22 is preferable by r58 with profit 2000
Insn 17: point = 7, n_alt = -2
Hard reg 18 is preferable by r54 with profit 1000
Insn 8: point = 9, n_alt = 4
Insn 6: point = 9, n_alt = 4
Insn 14: point = 10, n_alt = -1
r48: [8..9]
r49: [4..10]
r53: [2..3]
r54: [4..7]
r55: [3..3]
r56: [3..3]
r57: [3..3]
r58: [0..6]
r59: [1..5]
Compressing live ranges: from 11 to 6 - 54%
Ranges after the compression:
r48: [4..5]
r49: [2..5]
r53: [0..1]
r54: [2..3]
r55: [1..1]
r56: [1..1]
r57: [1..1]
r58: [0..3]
r59: [0..3]
********** Assignment #3: **********
Assigning to 53 (cl=GENERAL_REGS, orig=53, freq=2000, tfirst=53,
tfreq=2000)...
Trying 18: spill 58(freq=2000)
Trying 19:
Trying 22: spill 59(freq=2000) Now best 22(cost=0, bad_spills=0,
insn_pseudos=0)
Trying 30:
Trying 31:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Spill split r59(hr=23, freq=2000) for r53
Assign 22 to reload r53 (freq=2000)
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24: spill 49(freq=2000)
Trying 25: spill 49(freq=2000)
Trying 18: spill 58(freq=2000)
Trying 19:
Trying 20:
Trying 21:
Trying 22:
Trying 23: spill 49(freq=2000)
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
2nd iter for reload pseudo assignments:
Reload r54 assignment failure
Spill r49(hr=24, freq=2000)
Spill split r58(hr=18, freq=2000)
Assigning to 58 (cl=SIMPLE_LD_REGS, orig=58, freq=2000, tfirst=58,
tfreq=2000)...
Assign 18 to split r58 (freq=2000)
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18: spill 58(freq=2000)
Trying 19:
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Reassigning non-reload pseudos
Assign 24 to r49 (freq=2000)
Assign 19 to split r59 (freq=2000)
****** Splitting a hard reg after assignment #3: ******
********** Pseudo live ranges #4: **********
BB 2
Insn 10: point = 0, n_alt = 3
Insn 19: point = 0, n_alt = -1
Hard reg 22 is preferable by r58 with profit 1000
Insn 21: point = 1, n_alt = -1
Hard reg 23 is preferable by r59 with profit 1000
Insn 16: point = 2, n_alt = -2
Hard reg 24 is preferable by r53 with profit 1000
Insn 9: point = 3, n_alt = -1
Insn 20: point = 5, n_alt = -1
Hard reg 23 is preferable by r59 with profit 2000
Insn 18: point = 6, n_alt = -1
Hard reg 22 is preferable by r58 with profit 2000
Insn 17: point = 7, n_alt = -2
Hard reg 18 is preferable by r54 with profit 1000
Insn 8: point = 9, n_alt = 4
Insn 6: point = 9, n_alt = 4
Insn 14: point = 10, n_alt = -1
r48: [8..9]
r49: [4..10]
r53: [2..3]
r54: [4..7]
r55: [3..3]
r56: [3..3]
r57: [3..3]
r58: [0..6]
r59: [1..5]
Compressing live ranges: from 11 to 6 - 54%
Ranges after the compression:
r48: [4..5]
r49: [2..5]
r53: [0..1]
r54: [2..3]
r55: [1..1]
r56: [1..1]
r57: [1..1]
r58: [0..3]
r59: [0..3]
********** Assignment #4: **********
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24: spill 49(freq=2000)
Trying 25: spill 49(freq=2000)
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23: spill 49(freq=2000)
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
2nd iter for reload pseudo assignments:
Reload r54 assignment failure
Spill r49(hr=24, freq=2000)
Spill split r58(hr=18, freq=2000)
Spill split r59(hr=19, freq=2000)
Assigning to 58 (cl=SIMPLE_LD_REGS, orig=58, freq=2000, tfirst=58,
tfreq=2000)...
Assign 18 to split r58 (freq=2000)
Assigning to 59 (cl=SIMPLE_LD_REGS, orig=59, freq=2000, tfirst=59,
tfreq=2000)...
Assign 19 to split r59 (freq=2000)
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Reassigning non-reload pseudos
Assign 24 to r49 (freq=2000)
****** Splitting a hard reg after assignment #4: ******
********** Pseudo live ranges #5: **********
BB 2
Insn 10: point = 0, n_alt = 3
Insn 19: point = 0, n_alt = -1
Hard reg 22 is preferable by r58 with profit 1000
Insn 21: point = 1, n_alt = -1
Hard reg 23 is preferable by r59 with profit 1000
Insn 16: point = 2, n_alt = -2
Hard reg 24 is preferable by r53 with profit 1000
Insn 9: point = 3, n_alt = -1
Insn 20: point = 5, n_alt = -1
Hard reg 23 is preferable by r59 with profit 2000
Insn 18: point = 6, n_alt = -1
Hard reg 22 is preferable by r58 with profit 2000
Insn 17: point = 7, n_alt = -2
Hard reg 18 is preferable by r54 with profit 1000
Insn 8: point = 9, n_alt = 4
Insn 6: point = 9, n_alt = 4
Insn 14: point = 10, n_alt = -1
r48: [8..9]
r49: [4..10]
r53: [2..3]
r54: [4..7]
r55: [3..3]
r56: [3..3]
r57: [3..3]
r58: [0..6]
r59: [1..5]
Compressing live ranges: from 11 to 6 - 54%
Ranges after the compression:
r48: [4..5]
r49: [2..5]
r53: [0..1]
r54: [2..3]
r55: [1..1]
r56: [1..1]
r57: [1..1]
r58: [0..3]
r59: [0..3]
********** Assignment #5: **********
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24: spill 49(freq=2000)
Trying 25: spill 49(freq=2000)
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23: spill 49(freq=2000)
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
2nd iter for reload pseudo assignments:
Reload r54 assignment failure
Spill r49(hr=24, freq=2000)
Spill split r58(hr=18, freq=2000)
Spill split r59(hr=19, freq=2000)
Assigning to 58 (cl=SIMPLE_LD_REGS, orig=58, freq=2000, tfirst=58,
tfreq=2000)...
Assign 18 to split r58 (freq=2000)
Assigning to 59 (cl=SIMPLE_LD_REGS, orig=59, freq=2000, tfirst=59,
tfreq=2000)...
Assign 19 to split r59 (freq=2000)
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Reassigning non-reload pseudos
Assign 24 to r49 (freq=2000)
****** Splitting a hard reg after assignment #5: ******
********** Pseudo live ranges #6: **********
BB 2
Insn 10: point = 0, n_alt = 3
Insn 19: point = 0, n_alt = -1
Hard reg 22 is preferable by r58 with profit 1000
Insn 21: point = 1, n_alt = -1
Hard reg 23 is preferable by r59 with profit 1000
Insn 16: point = 2, n_alt = -2
Hard reg 24 is preferable by r53 with profit 1000
Insn 9: point = 3, n_alt = -1
Insn 20: point = 5, n_alt = -1
Hard reg 23 is preferable by r59 with profit 2000
Insn 18: point = 6, n_alt = -1
Hard reg 22 is preferable by r58 with profit 2000
Insn 17: point = 7, n_alt = -2
Hard reg 18 is preferable by r54 with profit 1000
Insn 8: point = 9, n_alt = 4
Insn 6: point = 9, n_alt = 4
Insn 14: point = 10, n_alt = -1
r48: [8..9]
r49: [4..10]
r53: [2..3]
r54: [4..7]
r55: [3..3]
r56: [3..3]
r57: [3..3]
r58: [0..6]
r59: [1..5]
Compressing live ranges: from 11 to 6 - 54%
Ranges after the compression:
r48: [4..5]
r49: [2..5]
r53: [0..1]
r54: [2..3]
r55: [1..1]
r56: [1..1]
r57: [1..1]
r58: [0..3]
r59: [0..3]
********** Assignment #6: **********
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24: spill 49(freq=2000)
Trying 25: spill 49(freq=2000)
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23: spill 49(freq=2000)
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
2nd iter for reload pseudo assignments:
Reload r54 assignment failure
Spill r49(hr=24, freq=2000)
Spill split r58(hr=18, freq=2000)
Spill split r59(hr=19, freq=2000)
Assigning to 58 (cl=SIMPLE_LD_REGS, orig=58, freq=2000, tfirst=58,
tfreq=2000)...
Assign 18 to split r58 (freq=2000)
Assigning to 59 (cl=SIMPLE_LD_REGS, orig=59, freq=2000, tfirst=59,
tfreq=2000)...
Assign 19 to split r59 (freq=2000)
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Reassigning non-reload pseudos
Assign 24 to r49 (freq=2000)
****** Splitting a hard reg after assignment #6: ******
********** Pseudo live ranges #7: **********
BB 2
Insn 10: point = 0, n_alt = 3
Insn 19: point = 0, n_alt = -1
Hard reg 22 is preferable by r58 with profit 1000
Insn 21: point = 1, n_alt = -1
Hard reg 23 is preferable by r59 with profit 1000
Insn 16: point = 2, n_alt = -2
Hard reg 24 is preferable by r53 with profit 1000
Insn 9: point = 3, n_alt = -1
Insn 20: point = 5, n_alt = -1
Hard reg 23 is preferable by r59 with profit 2000
Insn 18: point = 6, n_alt = -1
Hard reg 22 is preferable by r58 with profit 2000
Insn 17: point = 7, n_alt = -2
Hard reg 18 is preferable by r54 with profit 1000
Insn 8: point = 9, n_alt = 4
Insn 6: point = 9, n_alt = 4
Insn 14: point = 10, n_alt = -1
r48: [8..9]
r49: [4..10]
r53: [2..3]
r54: [4..7]
r55: [3..3]
r56: [3..3]
r57: [3..3]
r58: [0..6]
r59: [1..5]
Compressing live ranges: from 11 to 6 - 54%
Ranges after the compression:
r48: [4..5]
r49: [2..5]
r53: [0..1]
r54: [2..3]
r55: [1..1]
r56: [1..1]
r57: [1..1]
r58: [0..3]
r59: [0..3]
********** Assignment #7: **********
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24: spill 49(freq=2000)
Trying 25: spill 49(freq=2000)
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23: spill 49(freq=2000)
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
2nd iter for reload pseudo assignments:
Reload r54 assignment failure
Spill r49(hr=24, freq=2000)
Spill split r58(hr=18, freq=2000)
Spill split r59(hr=19, freq=2000)
Assigning to 58 (cl=SIMPLE_LD_REGS, orig=58, freq=2000, tfirst=58,
tfreq=2000)...
Assign 18 to split r58 (freq=2000)
Assigning to 59 (cl=SIMPLE_LD_REGS, orig=59, freq=2000, tfirst=59,
tfreq=2000)...
Assign 19 to split r59 (freq=2000)
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Reassigning non-reload pseudos
Assign 24 to r49 (freq=2000)
****** Splitting a hard reg after assignment #7: ******
********** Pseudo live ranges #8: **********
BB 2
Insn 10: point = 0, n_alt = 3
Insn 19: point = 0, n_alt = -1
Hard reg 22 is preferable by r58 with profit 1000
Insn 21: point = 1, n_alt = -1
Hard reg 23 is preferable by r59 with profit 1000
Insn 16: point = 2, n_alt = -2
Hard reg 24 is preferable by r53 with profit 1000
Insn 9: point = 3, n_alt = -1
Insn 20: point = 5, n_alt = -1
Hard reg 23 is preferable by r59 with profit 2000
Insn 18: point = 6, n_alt = -1
Hard reg 22 is preferable by r58 with profit 2000
Insn 17: point = 7, n_alt = -2
Hard reg 18 is preferable by r54 with profit 1000
Insn 8: point = 9, n_alt = 4
Insn 6: point = 9, n_alt = 4
Insn 14: point = 10, n_alt = -1
r48: [8..9]
r49: [4..10]
r53: [2..3]
r54: [4..7]
r55: [3..3]
r56: [3..3]
r57: [3..3]
r58: [0..6]
r59: [1..5]
Compressing live ranges: from 11 to 6 - 54%
Ranges after the compression:
r48: [4..5]
r49: [2..5]
r53: [0..1]
r54: [2..3]
r55: [1..1]
r56: [1..1]
r57: [1..1]
r58: [0..3]
r59: [0..3]
********** Assignment #8: **********
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24: spill 49(freq=2000)
Trying 25: spill 49(freq=2000)
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23: spill 49(freq=2000)
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
2nd iter for reload pseudo assignments:
Reload r54 assignment failure
Spill r49(hr=24, freq=2000)
Spill split r58(hr=18, freq=2000)
Spill split r59(hr=19, freq=2000)
Assigning to 58 (cl=SIMPLE_LD_REGS, orig=58, freq=2000, tfirst=58,
tfreq=2000)...
Assign 18 to split r58 (freq=2000)
Assigning to 59 (cl=SIMPLE_LD_REGS, orig=59, freq=2000, tfirst=59,
tfreq=2000)...
Assign 19 to split r59 (freq=2000)
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Reassigning non-reload pseudos
Assign 24 to r49 (freq=2000)
****** Splitting a hard reg after assignment #8: ******
********** Pseudo live ranges #9: **********
BB 2
Insn 10: point = 0, n_alt = 3
Insn 19: point = 0, n_alt = -1
Hard reg 22 is preferable by r58 with profit 1000
Insn 21: point = 1, n_alt = -1
Hard reg 23 is preferable by r59 with profit 1000
Insn 16: point = 2, n_alt = -2
Hard reg 24 is preferable by r53 with profit 1000
Insn 9: point = 3, n_alt = -1
Insn 20: point = 5, n_alt = -1
Hard reg 23 is preferable by r59 with profit 2000
Insn 18: point = 6, n_alt = -1
Hard reg 22 is preferable by r58 with profit 2000
Insn 17: point = 7, n_alt = -2
Hard reg 18 is preferable by r54 with profit 1000
Insn 8: point = 9, n_alt = 4
Insn 6: point = 9, n_alt = 4
Insn 14: point = 10, n_alt = -1
r48: [8..9]
r49: [4..10]
r53: [2..3]
r54: [4..7]
r55: [3..3]
r56: [3..3]
r57: [3..3]
r58: [0..6]
r59: [1..5]
Compressing live ranges: from 11 to 6 - 54%
Ranges after the compression:
r48: [4..5]
r49: [2..5]
r53: [0..1]
r54: [2..3]
r55: [1..1]
r56: [1..1]
r57: [1..1]
r58: [0..3]
r59: [0..3]
********** Assignment #9: **********
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24: spill 49(freq=2000)
Trying 25: spill 49(freq=2000)
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23: spill 49(freq=2000)
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
2nd iter for reload pseudo assignments:
Reload r54 assignment failure
Spill r49(hr=24, freq=2000)
Spill split r58(hr=18, freq=2000)
Spill split r59(hr=19, freq=2000)
Assigning to 58 (cl=SIMPLE_LD_REGS, orig=58, freq=2000, tfirst=58,
tfreq=2000)...
Assign 18 to split r58 (freq=2000)
Assigning to 59 (cl=SIMPLE_LD_REGS, orig=59, freq=2000, tfirst=59,
tfreq=2000)...
Assign 19 to split r59 (freq=2000)
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Reassigning non-reload pseudos
Assign 24 to r49 (freq=2000)
****** Splitting a hard reg after assignment #9: ******
********** Pseudo live ranges #10: **********
BB 2
Insn 10: point = 0, n_alt = 3
Insn 19: point = 0, n_alt = -1
Hard reg 22 is preferable by r58 with profit 1000
Insn 21: point = 1, n_alt = -1
Hard reg 23 is preferable by r59 with profit 1000
Insn 16: point = 2, n_alt = -2
Hard reg 24 is preferable by r53 with profit 1000
Insn 9: point = 3, n_alt = -1
Insn 20: point = 5, n_alt = -1
Hard reg 23 is preferable by r59 with profit 2000
Insn 18: point = 6, n_alt = -1
Hard reg 22 is preferable by r58 with profit 2000
Insn 17: point = 7, n_alt = -2
Hard reg 18 is preferable by r54 with profit 1000
Insn 8: point = 9, n_alt = 4
Insn 6: point = 9, n_alt = 4
Insn 14: point = 10, n_alt = -1
r48: [8..9]
r49: [4..10]
r53: [2..3]
r54: [4..7]
r55: [3..3]
r56: [3..3]
r57: [3..3]
r58: [0..6]
r59: [1..5]
Compressing live ranges: from 11 to 6 - 54%
Ranges after the compression:
r48: [4..5]
r49: [2..5]
r53: [0..1]
r54: [2..3]
r55: [1..1]
r56: [1..1]
r57: [1..1]
r58: [0..3]
r59: [0..3]
********** Assignment #10: **********
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24: spill 49(freq=2000)
Trying 25: spill 49(freq=2000)
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23: spill 49(freq=2000)
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
2nd iter for reload pseudo assignments:
Reload r54 assignment failure
Spill r49(hr=24, freq=2000)
Spill split r58(hr=18, freq=2000)
Spill split r59(hr=19, freq=2000)
Assigning to 58 (cl=SIMPLE_LD_REGS, orig=58, freq=2000, tfirst=58,
tfreq=2000)...
Assign 18 to split r58 (freq=2000)
Assigning to 59 (cl=SIMPLE_LD_REGS, orig=59, freq=2000, tfirst=59,
tfreq=2000)...
Assign 19 to split r59 (freq=2000)
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Reassigning non-reload pseudos
Assign 24 to r49 (freq=2000)
****** Splitting a hard reg after assignment #10: ******
********** Pseudo live ranges #11: **********
BB 2
Insn 10: point = 0, n_alt = 3
Insn 19: point = 0, n_alt = -1
Hard reg 22 is preferable by r58 with profit 1000
Insn 21: point = 1, n_alt = -1
Hard reg 23 is preferable by r59 with profit 1000
Insn 16: point = 2, n_alt = -2
Hard reg 24 is preferable by r53 with profit 1000
Insn 9: point = 3, n_alt = -1
Insn 20: point = 5, n_alt = -1
Hard reg 23 is preferable by r59 with profit 2000
Insn 18: point = 6, n_alt = -1
Hard reg 22 is preferable by r58 with profit 2000
Insn 17: point = 7, n_alt = -2
Hard reg 18 is preferable by r54 with profit 1000
Insn 8: point = 9, n_alt = 4
Insn 6: point = 9, n_alt = 4
Insn 14: point = 10, n_alt = -1
r48: [8..9]
r49: [4..10]
r53: [2..3]
r54: [4..7]
r55: [3..3]
r56: [3..3]
r57: [3..3]
r58: [0..6]
r59: [1..5]
Compressing live ranges: from 11 to 6 - 54%
Ranges after the compression:
r48: [4..5]
r49: [2..5]
r53: [0..1]
r54: [2..3]
r55: [1..1]
r56: [1..1]
r57: [1..1]
r58: [0..3]
r59: [0..3]
********** Assignment #11: **********
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24: spill 49(freq=2000)
Trying 25: spill 49(freq=2000)
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23: spill 49(freq=2000)
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
2nd iter for reload pseudo assignments:
Reload r54 assignment failure
Spill r49(hr=24, freq=2000)
Spill split r58(hr=18, freq=2000)
Spill split r59(hr=19, freq=2000)
Assigning to 58 (cl=SIMPLE_LD_REGS, orig=58, freq=2000, tfirst=58,
tfreq=2000)...
Assign 18 to split r58 (freq=2000)
Assigning to 59 (cl=SIMPLE_LD_REGS, orig=59, freq=2000, tfirst=59,
tfreq=2000)...
Assign 19 to split r59 (freq=2000)
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Reassigning non-reload pseudos
Assign 24 to r49 (freq=2000)
****** Splitting a hard reg after assignment #11: ******
********** Pseudo live ranges #12: **********
BB 2
Insn 10: point = 0, n_alt = 3
Insn 19: point = 0, n_alt = -1
Hard reg 22 is preferable by r58 with profit 1000
Insn 21: point = 1, n_alt = -1
Hard reg 23 is preferable by r59 with profit 1000
Insn 16: point = 2, n_alt = -2
Hard reg 24 is preferable by r53 with profit 1000
Insn 9: point = 3, n_alt = -1
Insn 20: point = 5, n_alt = -1
Hard reg 23 is preferable by r59 with profit 2000
Insn 18: point = 6, n_alt = -1
Hard reg 22 is preferable by r58 with profit 2000
Insn 17: point = 7, n_alt = -2
Hard reg 18 is preferable by r54 with profit 1000
Insn 8: point = 9, n_alt = 4
Insn 6: point = 9, n_alt = 4
Insn 14: point = 10, n_alt = -1
r48: [8..9]
r49: [4..10]
r53: [2..3]
r54: [4..7]
r55: [3..3]
r56: [3..3]
r57: [3..3]
r58: [0..6]
r59: [1..5]
Compressing live ranges: from 11 to 6 - 54%
Ranges after the compression:
r48: [4..5]
r49: [2..5]
r53: [0..1]
r54: [2..3]
r55: [1..1]
r56: [1..1]
r57: [1..1]
r58: [0..3]
r59: [0..3]
********** Assignment #12: **********
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24: spill 49(freq=2000)
Trying 25: spill 49(freq=2000)
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23: spill 49(freq=2000)
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
2nd iter for reload pseudo assignments:
Reload r54 assignment failure
Spill r49(hr=24, freq=2000)
Spill split r58(hr=18, freq=2000)
Spill split r59(hr=19, freq=2000)
Assigning to 58 (cl=SIMPLE_LD_REGS, orig=58, freq=2000, tfirst=58,
tfreq=2000)...
Assign 18 to split r58 (freq=2000)
Assigning to 59 (cl=SIMPLE_LD_REGS, orig=59, freq=2000, tfirst=59,
tfreq=2000)...
Assign 19 to split r59 (freq=2000)
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Reassigning non-reload pseudos
Assign 24 to r49 (freq=2000)
****** Splitting a hard reg after assignment #12: ******
********** Pseudo live ranges #13: **********
BB 2
Insn 10: point = 0, n_alt = 3
Insn 19: point = 0, n_alt = -1
Hard reg 22 is preferable by r58 with profit 1000
Insn 21: point = 1, n_alt = -1
Hard reg 23 is preferable by r59 with profit 1000
Insn 16: point = 2, n_alt = -2
Hard reg 24 is preferable by r53 with profit 1000
Insn 9: point = 3, n_alt = -1
Insn 20: point = 5, n_alt = -1
Hard reg 23 is preferable by r59 with profit 2000
Insn 18: point = 6, n_alt = -1
Hard reg 22 is preferable by r58 with profit 2000
Insn 17: point = 7, n_alt = -2
Hard reg 18 is preferable by r54 with profit 1000
Insn 8: point = 9, n_alt = 4
Insn 6: point = 9, n_alt = 4
Insn 14: point = 10, n_alt = -1
r48: [8..9]
r49: [4..10]
r53: [2..3]
r54: [4..7]
r55: [3..3]
r56: [3..3]
r57: [3..3]
r58: [0..6]
r59: [1..5]
Compressing live ranges: from 11 to 6 - 54%
Ranges after the compression:
r48: [4..5]
r49: [2..5]
r53: [0..1]
r54: [2..3]
r55: [1..1]
r56: [1..1]
r57: [1..1]
r58: [0..3]
r59: [0..3]
********** Assignment #13: **********
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24: spill 49(freq=2000)
Trying 25: spill 49(freq=2000)
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23: spill 49(freq=2000)
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
2nd iter for reload pseudo assignments:
Reload r54 assignment failure
Spill r49(hr=24, freq=2000)
Spill split r58(hr=18, freq=2000)
Spill split r59(hr=19, freq=2000)
Assigning to 58 (cl=SIMPLE_LD_REGS, orig=58, freq=2000, tfirst=58,
tfreq=2000)...
Assign 18 to split r58 (freq=2000)
Assigning to 59 (cl=SIMPLE_LD_REGS, orig=59, freq=2000, tfirst=59,
tfreq=2000)...
Assign 19 to split r59 (freq=2000)
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Reassigning non-reload pseudos
Assign 24 to r49 (freq=2000)
****** Splitting a hard reg after assignment #13: ******
********** Pseudo live ranges #14: **********
BB 2
Insn 10: point = 0, n_alt = 3
Insn 19: point = 0, n_alt = -1
Hard reg 22 is preferable by r58 with profit 1000
Insn 21: point = 1, n_alt = -1
Hard reg 23 is preferable by r59 with profit 1000
Insn 16: point = 2, n_alt = -2
Hard reg 24 is preferable by r53 with profit 1000
Insn 9: point = 3, n_alt = -1
Insn 20: point = 5, n_alt = -1
Hard reg 23 is preferable by r59 with profit 2000
Insn 18: point = 6, n_alt = -1
Hard reg 22 is preferable by r58 with profit 2000
Insn 17: point = 7, n_alt = -2
Hard reg 18 is preferable by r54 with profit 1000
Insn 8: point = 9, n_alt = 4
Insn 6: point = 9, n_alt = 4
Insn 14: point = 10, n_alt = -1
r48: [8..9]
r49: [4..10]
r53: [2..3]
r54: [4..7]
r55: [3..3]
r56: [3..3]
r57: [3..3]
r58: [0..6]
r59: [1..5]
Compressing live ranges: from 11 to 6 - 54%
Ranges after the compression:
r48: [4..5]
r49: [2..5]
r53: [0..1]
r54: [2..3]
r55: [1..1]
r56: [1..1]
r57: [1..1]
r58: [0..3]
r59: [0..3]
********** Assignment #14: **********
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24: spill 49(freq=2000)
Trying 25: spill 49(freq=2000)
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23: spill 49(freq=2000)
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
2nd iter for reload pseudo assignments:
Reload r54 assignment failure
Spill r49(hr=24, freq=2000)
Spill split r58(hr=18, freq=2000)
Spill split r59(hr=19, freq=2000)
Assigning to 58 (cl=SIMPLE_LD_REGS, orig=58, freq=2000, tfirst=58,
tfreq=2000)...
Assign 18 to split r58 (freq=2000)
Assigning to 59 (cl=SIMPLE_LD_REGS, orig=59, freq=2000, tfirst=59,
tfreq=2000)...
Assign 19 to split r59 (freq=2000)
Assigning to 54 (cl=GENERAL_REGS, orig=48, freq=2000, tfirst=54,
tfreq=2000)...
Trying 24:
Trying 25:
Trying 18: spill 58(freq=2000) spill 59(freq=2000)
Trying 19: spill 59(freq=2000)
Trying 20:
Trying 21:
Trying 22:
Trying 23:
Trying 30:
Trying 31:
Trying 26:
Trying 27:
Trying 28:
Trying 29:
Trying 17: spill 58(freq=2000)
Trying 16:
Trying 15:
Trying 14:
Trying 13:
Trying 12:
Trying 11:
Trying 10:
Trying 9:
Trying 8:
Trying 7:
Trying 6:
Trying 5:
Trying 4:
Trying 3:
Trying 2:
Reassigning non-reload pseudos
Assign 24 to r49 (freq=2000)
****** Splitting a hard reg after assignment #14: ******
EMERGENCY DUMP:
foo
Dataflow summary:
;; fully invalidated by EH 0 [r0] 1 [r1] 18 [r18] 19 [r19] 20 [r20] 21
[r21] 22 [r22] 23 [r23] 24 [r24] 25 [r25] 26 [r26] 27 [r27] 30 [r30] 31 [r31]
33 [__SP_H__] 35 [argH] 36 [cc]
;; hardware regs used 28 [r28] 32 [__SP_L__] 34 [argL]
;; regular block artificial uses 28 [r28] 32 [__SP_L__] 34 [argL]
;; eh block artificial uses 28 [r28] 32 [__SP_L__] 34 [argL]
;; entry block defs 8 [r8] 9 [r9] 10 [r10] 11 [r11] 12 [r12] 13 [r13] 14
[r14] 15 [r15] 16 [r16] 17 [r17] 18 [r18] 19 [r19] 20 [r20] 21 [r21] 22 [r22]
23 [r23] 24 [r24] 25 [r25] 28 [r28] 32 [__SP_L__] 34 [argL]
;; exit block uses 28 [r28] 32 [__SP_L__]
;; regs ever live 18 [r18] 19 [r19] 20 [r20] 21 [r21] 22 [r22] 23 [r23]
24 [r24] 25 [r25] 26 [r26] 27 [r27] 30 [r30] 32 [__SP_L__]
;; ref usage r0={1d} r1={1d} r8={1d} r9={1d} r10={1d} r11={1d} r12={1d}
r13={1d} r14={1d} r15={1d} r16={1d} r17={1d} r18={2d} r19={2d} r20={2d}
r21={2d} r22={3d,1u} r23={3d,1u} r24={3d,2u} r25={3d,2u} r26={1d} r27={1d}
r28={1d,2u} r30={1d} r31={1d} r32={1d,3u} r33={1d} r34={1d,1u} r35={1d}
r36={1d} r47={1d} r48={1d,2u} r49={1d,2u} r50={1d} r51={1d}
;; total ref usage 63{47d,16u,0e} in 11{10 regular + 1 call} insns.
(note 1 0 4 NOTE_INSN_DELETED)
;; basic block 2, loop depth 0, count 1073741824 (estimated locally, freq
1.0000), maybe hot
;; prev block 0, next block 1, flags: (REACHABLE, RTL, MODIFIED)
;; pred: ENTRY [always] count:1073741824 (estimated locally, freq
1.0000) (FALLTHRU)
;; bb 2 artificial_defs: { }
;; bb 2 artificial_uses: { u-1(28){ }u-1(32){ }u-1(34){ }}
;; lr in 24 [r24] 25 [r25] 28 [r28] 32 [__SP_L__] 34 [argL]
;; lr use 24 [r24] 25 [r25] 28 [r28] 32 [__SP_L__] 34 [argL]
;; lr def 0 [r0] 1 [r1] 18 [r18] 19 [r19] 20 [r20] 21 [r21] 22 [r22] 23
[r23] 24 [r24] 25 [r25] 26 [r26] 27 [r27] 30 [r30] 31 [r31] 33 [__SP_H__] 35
[argH] 36 [cc] 47 48 49 50 51
(note 4 1 14 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(insn 14 4 2 2 (set (reg:HI 49 [ k ])
(reg:HI 24 r24 [ k ])) "spill.c":4:1 128 {*movhi_split}
(expr_list:REG_DEAD (reg:HI 24 r24 [ k ])
(nil)))
(note 2 14 3 2 NOTE_INSN_DELETED)
(note 3 2 6 2 NOTE_INSN_FUNCTION_BEG)
(insn 6 3 7 2 (set (reg:HI 48)
(const_int 5 [0x5])) "spill.c":5:5 128 {*movhi_split}
(expr_list:REG_EQUIV (const_int 5 [0x5])
(nil)))
(note 7 6 8 2 NOTE_INSN_DELETED)
(insn 8 7 17 2 (set (reg:HI 22 r22)
(symbol_ref/f:HI ("*.LC0") [flags 0x2] <var_decl 0x7efdf6ba0d10
*.LC0>)) "spill.c":5:5 128 {*movhi_split}
(nil))
(insn 17 8 18 2 (set (reg:HI 54 [48])
(reg:HI 48)) "spill.c":5:5 128 {*movhi_split}
(expr_list:REG_DEAD (reg:HI 48)
(nil)))
(insn 18 17 20 2 (set (reg:QI 58)
(reg:QI 22 r22)) "spill.c":5:5 113 {movqi_insn_split}
(expr_list:REG_DEAD (reg:QI 22 r22)
(nil)))
(insn 20 18 9 2 (set (reg:QI 59)
(reg:QI 23 r23)) "spill.c":5:5 113 {movqi_insn_split}
(expr_list:REG_DEAD (reg:QI 23 r23)
(nil)))
(insn 9 20 16 2 (parallel [
(set (reg:HI 53)
(div:HI (reg:HI 49 [ k ])
(reg:HI 54 [48])))
(set (reg:HI 55 [47])
(mod:HI (reg:HI 49 [ k ])
(reg:HI 54 [48])))
(clobber (reg:HI 56 [50]))
(clobber (reg:QI 57 [51]))
]) "spill.c":5:5 588 {divmodhi4}
(expr_list:REG_UNUSED (reg:QI 57 [51])
(expr_list:REG_UNUSED (reg:HI 56 [50])
(expr_list:REG_UNUSED (reg:HI 55 [47])
(expr_list:REG_DEAD (reg:HI 54 [48])
(expr_list:REG_DEAD (reg:HI 49 [ k ])
(nil)))))))
(insn 16 9 21 2 (set (reg:HI 24 r24)
(reg:HI 53)) "spill.c":5:5 128 {*movhi_split}
(expr_list:REG_DEAD (reg:HI 53)
(nil)))
(insn 21 16 19 2 (set (reg:QI 23 r23)
(reg:QI 59)) "spill.c":5:5 113 {movqi_insn_split}
(expr_list:REG_DEAD (reg:QI 59)
(nil)))
(insn 19 21 10 2 (set (reg:QI 22 r22)
(reg:QI 58)) "spill.c":5:5 113 {movqi_insn_split}
(expr_list:REG_DEAD (reg:QI 58)
(nil)))
(call_insn/j 10 19 11 2 (parallel [
(call (mem:HI (symbol_ref:HI ("bar") [flags 0x41] <function_decl
0x7efdf6baa600 bar>) [0 bar S2 A8])
(const_int 0 [0]))
(use (const_int 1 [0x1]))
]) "spill.c":5:5 961 {call_insn}
(expr_list:REG_DEAD (reg:HI 24 r24)
(expr_list:REG_DEAD (reg:HI 22 r22)
(expr_list:REG_CALL_DECL (symbol_ref:HI ("bar") [flags 0x41]
<function_decl 0x7efdf6baa600 bar>)
(nil))))
(expr_list:HI (use (reg:HI 24 r24))
(expr_list:HI (use (reg:HI 22 r22))
(nil))))
;; succ: EXIT [always] count:1073741824 (estimated locally, freq
1.0000) (ABNORMAL,SIBCALL)
;; lr out 28 [r28] 32 [__SP_L__] 34 [argL]
(barrier 11 10 15)
(note 15 11 0 NOTE_INSN_DELETED)