Hi Jeff,
As discussed this morning, I'm sending over dumps for the optim of DF
const -0.0 (PR/110748) [1]
For rv64gc_zbs build, IRA is undoing the split which eventually leads to
ICE in final pass.
[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110748#c15
void znd(double *d) { *d = -0.0; }
*split1*
(insn 10 3 11 2 (set (reg:DI 136)
(const_int [0x8000000000000000])) "neg.c":4:5 -1
(insn 11 10 0 2 (set (mem:DF (reg:DI 135) [1 *d_2(D)+0 S8 A64])
(subreg:DF (reg:DI 136) 0)) "neg.c":4:5 -1
*ira*
(insn 11 9 12 2 (set (mem:DF (reg:DI 135) [1 *d_2(D)+0 S8 A64])
(const_double:DF -0.0 [-0x0.0p+0])) "neg.c":4:5 190
{*movdf_hardfloat_rv64}
(expr_list:REG_DEAD (reg:DI 135)
For the working case, the large const is not involved and not subject to
IRA playing foul.
Attached are split1 and IRA dumps for OK (rv64gc) and NOK (rv64gc_zbs)
cases.
Thx,
-Vineet
;; Function znd (znd, funcdef_no=0, decl_uid=2278, 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 }
rescanning insn with uid = 11.
deleting insn with uid = 10.
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 135 uninteresting
;; 1 loops found
;;
;; Loop 0
;; header 0, latch 1
;; depth 0, outer -1
;; nodes: 0 1 2
;; 2 succs { 1 }
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
a0 (r135,l0) best GR_REGS, allocno GR_REGS
a0(r135,l0) costs: SIBCALL_REGS:2000,2000 JALR_REGS:2000,2000
GR_REGS:2000,2000 MEM:10000,10000
Pass 1 for finding pseudo/allocno costs
r135: preferred GR_REGS, alternative NO_REGS, allocno GR_REGS
a0(r135,l0) costs: GR_REGS:2000,2000 MEM:10000,10000
Insn 11(l0): point = 0
Insn 9(l0): point = 2
a0(r135): [1..2]
Compressing live ranges: from 5 to 2 - 40%
Ranges after the compression:
a0(r135): [0..1]
+++Allocating 0 bytes for conflict table (uncompressed size 8)
;; a0(r135,l0) conflicts:
;; total conflict hard regs:
;; conflict hard regs:
pref0:a0(r135)<-hr10@2000
regions=1, blocks=3, points=2
allocnos=1 (big 0), copies=0, conflicts=0, ranges=1
**** Allocnos coloring:
Loop 0 (parent -1, header bb2, depth 0)
bbs: 2
all: 0r135
modified regnos: 135
border:
Pressure: GR_REGS=2
Hard reg set forest:
0:( 1 5-63)@0
1:( 5-31)@24000
Allocno a0r135 of GR_REGS(28) has 27 avail. regs 5-31, node: 5-31
(confl regs = 0-4 32-127)
Forming thread from colorable bucket:
Pushing a0(r135,l0)(cost 0)
Popping a0(r135,l0) -- assign reg 10
Disposition:
0:r135 l0 10
New iteration of spill/restore move
+++Costs: overall -2000, reg -2000, mem 0, ld 0, st 0, move 0
+++ move loops 0, new jumps 0
znd
Dataflow summary:
;; fully invalidated by EH 0 [zero] 3 [gp] 4 [tp] 5 [t0] 6 [t1] 7 [t2] 10
[a0] 11 [a1] 12 [a2] 13 [a3] 14 [a4] 15 [a5] 16 [a6] 17 [a7] 28 [t3] 29 [t4] 30
[t5] 31 [t6] 32 [ft0] 33 [ft1] 34 [ft2] 35 [ft3] 36 [ft4] 37 [ft5] 38 [ft6] 39
[ft7] 42 [fa0] 43 [fa1] 44 [fa2] 45 [fa3] 46 [fa4] 47 [fa5] 48 [fa6] 49 [fa7]
60 [ft8] 61 [ft9] 62 [ft10] 63 [ft11] 66 [vl] 67 [vtype] 68 [vxrm] 69 [frm] 70
[N/A] 71 [N/A] 72 [N/A] 73 [N/A] 74 [N/A] 75 [N/A] 76 [N/A] 77 [N/A] 78 [N/A]
79 [N/A] 80 [N/A] 81 [N/A] 82 [N/A] 83 [N/A] 84 [N/A] 85 [N/A] 86 [N/A] 87
[N/A] 88 [N/A] 89 [N/A] 90 [N/A] 91 [N/A] 92 [N/A] 93 [N/A] 94 [N/A] 95 [N/A]
96 [v0] 97 [v1] 98 [v2] 99 [v3] 100 [v4] 101 [v5] 102 [v6] 103 [v7] 104 [v8]
105 [v9] 106 [v10] 107 [v11] 108 [v12] 109 [v13] 110 [v14] 111 [v15] 112 [v16]
113 [v17] 114 [v18] 115 [v19] 116 [v20] 117 [v21] 118 [v22] 119 [v23] 120 [v24]
121 [v25] 122 [v26] 123 [v27] 124 [v28] 125 [v29] 126 [v30] 127 [v31]
;; hardware regs used 2 [sp] 64 [arg] 65 [frame]
;; regular block artificial uses 2 [sp] 8 [s0] 64 [arg] 65 [frame]
;; eh block artificial uses 2 [sp] 8 [s0] 64 [arg] 65 [frame]
;; entry block defs 1 [ra] 2 [sp] 8 [s0] 10 [a0] 11 [a1] 12 [a2] 13 [a3]
14 [a4] 15 [a5] 16 [a6] 17 [a7] 42 [fa0] 43 [fa1] 44 [fa2] 45 [fa3] 46 [fa4] 47
[fa5] 48 [fa6] 49 [fa7] 64 [arg] 65 [frame]
;; exit block uses 1 [ra] 2 [sp] 8 [s0] 65 [frame]
;; regs ever live 10 [a0]
;; ref usage r1={1d,1u} r2={1d,2u} r8={1d,2u} r10={1d,1u} r11={1d} r12={1d}
r13={1d} r14={1d} r15={1d} r16={1d} r17={1d} r42={1d} r43={1d} r44={1d}
r45={1d} r46={1d} r47={1d} r48={1d} r49={1d} r64={1d,1u} r65={1d,2u}
r135={1d,1u}
;; total ref usage 32{22d,10u,0e} in 2{2 regular + 0 call} insns.
(note 1 0 4 NOTE_INSN_DELETED)
(note 4 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(note 2 4 3 2 NOTE_INSN_DELETED)
(note 3 2 9 2 NOTE_INSN_FUNCTION_BEG)
(insn 9 3 11 2 (set (reg:DI 135)
(reg:DI 10 a0 [ d ])) "neg.c":3:1 179 {*movdi_64bit}
(expr_list:REG_DEAD (reg:DI 10 a0 [ d ])
(nil)))
(insn 11 9 12 2 (set (mem:DF (reg:DI 135) [1 *d_2(D)+0 S8 A64])
(const_double:DF -0.0 [-0x0.0p+0])) "neg.c":4:5 190
{*movdf_hardfloat_rv64}
(expr_list:REG_DEAD (reg:DI 135)
(nil)))
(note 12 11 0 NOTE_INSN_DELETED)
;; Function znd (znd, funcdef_no=0, decl_uid=2278, cgraph_uid=1, symbol_order=0)
Splitting with gen_split_19 (riscv.md:2144)
scanning new insn with uid = 10.
scanning new insn with uid = 11.
deleting insn with uid = 6.
deleting insn with uid = 6.
znd
Dataflow summary:
;; fully invalidated by EH 0 [zero] 3 [gp] 4 [tp] 5 [t0] 6 [t1] 7 [t2] 10
[a0] 11 [a1] 12 [a2] 13 [a3] 14 [a4] 15 [a5] 16 [a6] 17 [a7] 28 [t3] 29 [t4] 30
[t5] 31 [t6] 32 [ft0] 33 [ft1] 34 [ft2] 35 [ft3] 36 [ft4] 37 [ft5] 38 [ft6] 39
[ft7] 42 [fa0] 43 [fa1] 44 [fa2] 45 [fa3] 46 [fa4] 47 [fa5] 48 [fa6] 49 [fa7]
60 [ft8] 61 [ft9] 62 [ft10] 63 [ft11] 66 [vl] 67 [vtype] 68 [vxrm] 69 [frm] 70
[N/A] 71 [N/A] 72 [N/A] 73 [N/A] 74 [N/A] 75 [N/A] 76 [N/A] 77 [N/A] 78 [N/A]
79 [N/A] 80 [N/A] 81 [N/A] 82 [N/A] 83 [N/A] 84 [N/A] 85 [N/A] 86 [N/A] 87
[N/A] 88 [N/A] 89 [N/A] 90 [N/A] 91 [N/A] 92 [N/A] 93 [N/A] 94 [N/A] 95 [N/A]
96 [v0] 97 [v1] 98 [v2] 99 [v3] 100 [v4] 101 [v5] 102 [v6] 103 [v7] 104 [v8]
105 [v9] 106 [v10] 107 [v11] 108 [v12] 109 [v13] 110 [v14] 111 [v15] 112 [v16]
113 [v17] 114 [v18] 115 [v19] 116 [v20] 117 [v21] 118 [v22] 119 [v23] 120 [v24]
121 [v25] 122 [v26] 123 [v27] 124 [v28] 125 [v29] 126 [v30] 127 [v31]
;; hardware regs used 2 [sp] 64 [arg] 65 [frame]
;; regular block artificial uses 2 [sp] 8 [s0] 64 [arg] 65 [frame]
;; eh block artificial uses 2 [sp] 8 [s0] 64 [arg] 65 [frame]
;; entry block defs 1 [ra] 2 [sp] 8 [s0] 10 [a0] 11 [a1] 12 [a2] 13 [a3]
14 [a4] 15 [a5] 16 [a6] 17 [a7] 42 [fa0] 43 [fa1] 44 [fa2] 45 [fa3] 46 [fa4] 47
[fa5] 48 [fa6] 49 [fa7] 64 [arg] 65 [frame]
;; exit block uses 1 [ra] 2 [sp] 8 [s0] 65 [frame]
;; regs ever live 10 [a0]
;; ref usage r1={1d,1u} r2={1d,2u} r8={1d,2u} r10={1d,1u} r11={1d} r12={1d}
r13={1d} r14={1d} r15={1d} r16={1d} r17={1d} r42={1d} r43={1d} r44={1d}
r45={1d} r46={1d} r47={1d} r48={1d} r49={1d} r64={1d,1u} r65={1d,2u}
r135={1d,1u} r136={1d,1u}
;; total ref usage 34{23d,11u,0e} in 3{3 regular + 0 call} insns.
(note 1 0 4 NOTE_INSN_DELETED)
(note 4 1 9 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(insn 9 4 2 2 (set (reg:DI 135)
(reg:DI 10 a0 [ d ])) "neg.c":3:1 -1
(expr_list:REG_DEAD (reg:DI 10 a0 [ d ])
(nil)))
(note 2 9 3 2 NOTE_INSN_DELETED)
(note 3 2 10 2 NOTE_INSN_FUNCTION_BEG)
(insn 10 3 11 2 (set (reg:DI 136)
(const_int -9223372036854775808 [0x8000000000000000])) "neg.c":4:5 -1
(nil))
(insn 11 10 0 2 (set (mem:DF (reg:DI 135) [1 *d_2(D)+0 S8 A64])
(subreg:DF (reg:DI 136) 0)) "neg.c":4:5 -1
(nil))
;; Function znd (znd, funcdef_no=0, decl_uid=2278, 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 }
scanning new insn with uid = 14.
verify found no changes in insn with uid = 14.
deleting insn with uid = 10.
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 135: local to bb 2 def dominates all uses has unique first use
Reg 137 uninteresting
Reg 136 uninteresting
Found def insn 9 for 135 to be not moveable
;; 1 loops found
;;
;; Loop 0
;; header 0, latch 1
;; depth 0, outer -1
;; nodes: 0 1 2
;; 2 succs { 1 }
Building IRA IR
starting the processing of deferred insns
ending the processing of deferred insns
df_analyze called
init_insns for 137: (insn_list:REG_DEP_TRUE 14 (nil))
Pass 0 for finding pseudo/allocno costs
a2 (r137,l0) best GR_REGS, allocno GR_REGS
a1 (r136,l0) best JALR_REGS, allocno JALR_REGS
a0 (r135,l0) best GR_REGS, allocno GR_REGS
a0(r135,l0) costs: SIBCALL_REGS:2000,2000 JALR_REGS:2000,2000
GR_REGS:2000,2000 MEM:10000,10000
a1(r136,l0) costs: SIBCALL_REGS:2000,2000 JALR_REGS:2000,2000
GR_REGS:8000,8000 MEM:10000,10000
a2(r137,l0) costs: SIBCALL_REGS:0,0 JALR_REGS:0,0 GR_REGS:0,0 MEM:10000,10000
Pass 1 for finding pseudo/allocno costs
r137: preferred GR_REGS, alternative NO_REGS, allocno GR_REGS
r136: preferred JALR_REGS, alternative GR_REGS, allocno GR_REGS
r135: preferred GR_REGS, alternative NO_REGS, allocno GR_REGS
a0(r135,l0) costs: GR_REGS:2000,2000 MEM:10000,10000
a1(r136,l0) costs: JALR_REGS:4000,4000 GR_REGS:10000,10000 MEM:12000,12000
a2(r137,l0) costs: GR_REGS:0,0 MEM:10000,10000
Insn 12(l0): point = 0
Insn 11(l0): point = 2
Insn 14(l0): point = 4
Insn 9(l0): point = 6
a0(r135): [1..6]
a1(r136): [1..2]
a2(r137): [3..4]
Compressing live ranges: from 9 to 4 - 44%
Ranges after the compression:
a0(r135): [0..3]
a1(r136): [0..1]
a2(r137): [2..3]
+++Allocating 24 bytes for conflict table (uncompressed size 24)
;; a0(r135,l0) conflicts: a1(r136,l0) a2(r137,l0)
;; total conflict hard regs: 1
;; conflict hard regs: 1
;; a1(r136,l0) conflicts: a0(r135,l0)
;; total conflict hard regs: 1
;; conflict hard regs: 1
;; a2(r137,l0) conflicts: a0(r135,l0)
;; total conflict hard regs: 1
;; conflict hard regs: 1
cp0:a1(r136)<->a2(r137)@125:shuffle
pref0:a0(r135)<-hr10@2000
regions=1, blocks=3, points=4
allocnos=3 (big 0), copies=1, conflicts=0, ranges=3
**** Allocnos coloring:
Loop 0 (parent -1, header bb2, depth 0)
bbs: 2
all: 0r135 1r136 2r137
modified regnos: 135 136 137
border:
Pressure: GR_REGS=3
Hard reg set forest:
0:( 1 5-63)@0
1:( 5-31)@60000
Allocno a0r135 of GR_REGS(28) has 27 avail. regs 5-31, node: 5-31
(confl regs = 0-4 32-127)
Allocno a1r136 of GR_REGS(28) has 27 avail. regs 5-31, node: 5-31
(confl regs = 0-4 32-127)
Allocno a2r137 of GR_REGS(28) has 27 avail. regs 5-31, node: 5-31
(confl regs = 0-4 32-127)
Forming thread from colorable bucket:
Forming thread by copy 0:a1r136-a2r137 (freq=125):
Result (freq=4000): a1r136(2000) a2r137(2000)
Pushing a0(r135,l0)(cost 0)
Pushing a2(r137,l0)(cost 0)
Pushing a1(r136,l0)(cost 0)
Popping a1(r136,l0) -- assign reg 15
Popping a2(r137,l0) -- assign reg 15
Popping a0(r135,l0) -- assign reg 10
Disposition:
0:r135 l0 10 1:r136 l0 15 2:r137 l0 15
New iteration of spill/restore move
+++Costs: overall 2000, reg 2000, mem 0, ld 0, st 0, move 0
+++ move loops 0, new jumps 0
znd
Dataflow summary:
;; fully invalidated by EH 0 [zero] 3 [gp] 4 [tp] 5 [t0] 6 [t1] 7 [t2] 10
[a0] 11 [a1] 12 [a2] 13 [a3] 14 [a4] 15 [a5] 16 [a6] 17 [a7] 28 [t3] 29 [t4] 30
[t5] 31 [t6] 32 [ft0] 33 [ft1] 34 [ft2] 35 [ft3] 36 [ft4] 37 [ft5] 38 [ft6] 39
[ft7] 42 [fa0] 43 [fa1] 44 [fa2] 45 [fa3] 46 [fa4] 47 [fa5] 48 [fa6] 49 [fa7]
60 [ft8] 61 [ft9] 62 [ft10] 63 [ft11] 66 [vl] 67 [vtype] 68 [vxrm] 69 [frm] 70
[N/A] 71 [N/A] 72 [N/A] 73 [N/A] 74 [N/A] 75 [N/A] 76 [N/A] 77 [N/A] 78 [N/A]
79 [N/A] 80 [N/A] 81 [N/A] 82 [N/A] 83 [N/A] 84 [N/A] 85 [N/A] 86 [N/A] 87
[N/A] 88 [N/A] 89 [N/A] 90 [N/A] 91 [N/A] 92 [N/A] 93 [N/A] 94 [N/A] 95 [N/A]
96 [v0] 97 [v1] 98 [v2] 99 [v3] 100 [v4] 101 [v5] 102 [v6] 103 [v7] 104 [v8]
105 [v9] 106 [v10] 107 [v11] 108 [v12] 109 [v13] 110 [v14] 111 [v15] 112 [v16]
113 [v17] 114 [v18] 115 [v19] 116 [v20] 117 [v21] 118 [v22] 119 [v23] 120 [v24]
121 [v25] 122 [v26] 123 [v27] 124 [v28] 125 [v29] 126 [v30] 127 [v31]
;; hardware regs used 2 [sp] 64 [arg] 65 [frame]
;; regular block artificial uses 2 [sp] 8 [s0] 64 [arg] 65 [frame]
;; eh block artificial uses 2 [sp] 8 [s0] 64 [arg] 65 [frame]
;; entry block defs 1 [ra] 2 [sp] 8 [s0] 10 [a0] 11 [a1] 12 [a2] 13 [a3]
14 [a4] 15 [a5] 16 [a6] 17 [a7] 42 [fa0] 43 [fa1] 44 [fa2] 45 [fa3] 46 [fa4] 47
[fa5] 48 [fa6] 49 [fa7] 64 [arg] 65 [frame]
;; exit block uses 1 [ra] 2 [sp] 8 [s0] 65 [frame]
;; regs ever live 10 [a0]
;; ref usage r1={1d,1u} r2={1d,2u} r8={1d,2u} r10={1d,1u} r11={1d} r12={1d}
r13={1d} r14={1d} r15={1d} r16={1d} r17={1d} r42={1d} r43={1d} r44={1d}
r45={1d} r46={1d} r47={1d} r48={1d} r49={1d} r64={1d,1u} r65={1d,2u}
r135={1d,1u} r136={1d,1u} r137={1d,1u}
;; total ref usage 36{24d,12u,0e} in 4{4 regular + 0 call} insns.
(note 1 0 4 NOTE_INSN_DELETED)
(note 4 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(note 2 4 3 2 NOTE_INSN_DELETED)
(note 3 2 9 2 NOTE_INSN_FUNCTION_BEG)
(insn 9 3 14 2 (set (reg:DI 135)
(reg:DI 10 a0 [ d ])) "neg.c":3:1 179 {*movdi_64bit}
(expr_list:REG_DEAD (reg:DI 10 a0 [ d ])
(nil)))
(insn 14 9 11 2 (set (reg:DI 137)
(const_int -1 [0xffffffffffffffff])) "neg.c":4:5 179 {*movdi_64bit}
(expr_list:REG_EQUIV (const_int -1 [0xffffffffffffffff])
(nil)))
(insn 11 14 12 2 (set (reg:DI 136)
(ashift:DI (reg:DI 137)
(const_int 63 [0x3f]))) "neg.c":4:5 198 {ashldi3}
(expr_list:REG_DEAD (reg:DI 137)
(nil)))
(insn 12 11 13 2 (set (mem:DF (reg:DI 135) [1 *d_2(D)+0 S8 A64])
(subreg:DF (reg:DI 136) 0)) "neg.c":4:5 190 {*movdf_hardfloat_rv64}
(expr_list:REG_DEAD (reg:DI 136)
(expr_list:REG_DEAD (reg:DI 135)
(nil))))
(note 13 12 0 NOTE_INSN_DELETED)
;; Function znd (znd, funcdef_no=0, decl_uid=2278, cgraph_uid=1, symbol_order=0)
Splitting with gen_split_19 (riscv.md:2144)
scanning new insn with uid = 10.
scanning new insn with uid = 11.
scanning new insn with uid = 12.
deleting insn with uid = 6.
deleting insn with uid = 6.
znd
Dataflow summary:
;; fully invalidated by EH 0 [zero] 3 [gp] 4 [tp] 5 [t0] 6 [t1] 7 [t2] 10
[a0] 11 [a1] 12 [a2] 13 [a3] 14 [a4] 15 [a5] 16 [a6] 17 [a7] 28 [t3] 29 [t4] 30
[t5] 31 [t6] 32 [ft0] 33 [ft1] 34 [ft2] 35 [ft3] 36 [ft4] 37 [ft5] 38 [ft6] 39
[ft7] 42 [fa0] 43 [fa1] 44 [fa2] 45 [fa3] 46 [fa4] 47 [fa5] 48 [fa6] 49 [fa7]
60 [ft8] 61 [ft9] 62 [ft10] 63 [ft11] 66 [vl] 67 [vtype] 68 [vxrm] 69 [frm] 70
[N/A] 71 [N/A] 72 [N/A] 73 [N/A] 74 [N/A] 75 [N/A] 76 [N/A] 77 [N/A] 78 [N/A]
79 [N/A] 80 [N/A] 81 [N/A] 82 [N/A] 83 [N/A] 84 [N/A] 85 [N/A] 86 [N/A] 87
[N/A] 88 [N/A] 89 [N/A] 90 [N/A] 91 [N/A] 92 [N/A] 93 [N/A] 94 [N/A] 95 [N/A]
96 [v0] 97 [v1] 98 [v2] 99 [v3] 100 [v4] 101 [v5] 102 [v6] 103 [v7] 104 [v8]
105 [v9] 106 [v10] 107 [v11] 108 [v12] 109 [v13] 110 [v14] 111 [v15] 112 [v16]
113 [v17] 114 [v18] 115 [v19] 116 [v20] 117 [v21] 118 [v22] 119 [v23] 120 [v24]
121 [v25] 122 [v26] 123 [v27] 124 [v28] 125 [v29] 126 [v30] 127 [v31]
;; hardware regs used 2 [sp] 64 [arg] 65 [frame]
;; regular block artificial uses 2 [sp] 8 [s0] 64 [arg] 65 [frame]
;; eh block artificial uses 2 [sp] 8 [s0] 64 [arg] 65 [frame]
;; entry block defs 1 [ra] 2 [sp] 8 [s0] 10 [a0] 11 [a1] 12 [a2] 13 [a3]
14 [a4] 15 [a5] 16 [a6] 17 [a7] 42 [fa0] 43 [fa1] 44 [fa2] 45 [fa3] 46 [fa4] 47
[fa5] 48 [fa6] 49 [fa7] 64 [arg] 65 [frame]
;; exit block uses 1 [ra] 2 [sp] 8 [s0] 65 [frame]
;; regs ever live 10 [a0]
;; ref usage r1={1d,1u} r2={1d,2u} r8={1d,2u} r10={1d,1u} r11={1d} r12={1d}
r13={1d} r14={1d} r15={1d} r16={1d} r17={1d} r42={1d} r43={1d} r44={1d}
r45={1d} r46={1d} r47={1d} r48={1d} r49={1d} r64={1d,1u} r65={1d,2u}
r135={1d,1u} r136={1d,1u} r137={1d,1u}
;; total ref usage 36{24d,12u,0e} in 4{4 regular + 0 call} insns.
(note 1 0 4 NOTE_INSN_DELETED)
(note 4 1 9 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(insn 9 4 2 2 (set (reg:DI 135)
(reg:DI 10 a0 [ d ])) "neg.c":3:1 -1
(expr_list:REG_DEAD (reg:DI 10 a0 [ d ])
(nil)))
(note 2 9 3 2 NOTE_INSN_DELETED)
(note 3 2 10 2 NOTE_INSN_FUNCTION_BEG)
(insn 10 3 11 2 (set (reg:DI 137)
(const_int -1 [0xffffffffffffffff])) "neg.c":4:5 -1
(nil))
(insn 11 10 12 2 (set (reg:DI 136)
(ashift:DI (reg:DI 137)
(const_int 63 [0x3f]))) "neg.c":4:5 -1
(nil))
(insn 12 11 0 2 (set (mem:DF (reg:DI 135) [1 *d_2(D)+0 S8 A64])
(subreg:DF (reg:DI 136) 0)) "neg.c":4:5 -1
(nil))