This is the mail archive of the
gcc-prs@gcc.gnu.org
mailing list for the GCC project.
c/6344: GCSE PRE fails to init register
- From: Alan Modra <amodra at bigpond dot net dot au>
- To: gcc-gnats at gcc dot gnu dot org
- Cc: David Edelsohn <dje at watson dot ibm dot com>, Anton Blanchard <anton at samba dot org>, Peter Bergner <bergner at vnet dot ibm dot com>
- Date: Thu, 18 Apr 2002 10:47:08 +0930
- Subject: c/6344: GCSE PRE fails to init register
>Number: 6344
>Category: c
>Synopsis: GCSE PRE fails to init register
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: unassigned
>State: open
>Class: wrong-code
>Submitter-Id: net
>Arrival-Date: Wed Apr 17 18:26:01 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator: Alan Modra <amodra@bigpond.net.au>
>Release: 3.1 20020417 (prerelease)
>Organization:
IBM
>Environment:
configured with: /home/alan/src/gcc-ppc64-31/configure --prefix=/usr/local --build=i686-linux --host=i686-linux --target=powerpc64-linux --disable-nls --disable-shared --enable-languages=c
>Description:
When moving the code initialising a register holding
"&vmlist_lock" address, gcc fails to use the pseudo holding
the first occurrence of "&vmlist_lock". Instead a new pseudo
is used that is never initialised.
>How-To-Repeat:
-O2 on attached testcase
>Fix:
not yet
--HcAYCG3uE/tztfnV
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="gcsebug.c"
typedef struct {
volatile unsigned int lock;
} rwlock_t;
static __inline__ void write_lock (rwlock_t *rw)
{
unsigned int tmp;
__asm__ __volatile__("# write_lock %0, %1, %2"
: "=&r"(tmp)
: "r"(&rw->lock), "r"(-1)
: "memory");
}
static __inline__ void write_unlock (rwlock_t *rw)
{
__asm__ __volatile__("#write_unlock": : :"memory");
rw->lock = 0;
}
struct vm_struct {
struct vm_struct *next;
unsigned long flags;
void *addr;
unsigned long size;
};
extern void *kmalloc (unsigned long);
extern void kfree (void *);
extern struct vm_struct *vmlist;
extern rwlock_t vmlist_lock;
struct vm_struct *get_vm_area (unsigned long size, unsigned long flags)
{
struct vm_struct **p, *tmp, *area;
area = (struct vm_struct *) kmalloc (sizeof (*area));
if (!area)
return 0;
write_lock(&vmlist_lock);
for (p = &vmlist; (tmp = *p) ; p = &tmp->next)
{
if (tmp->addr == 0)
goto out;
}
write_unlock (&vmlist_lock);
return area;
out:
write_unlock (&vmlist_lock);
kfree (area);
return 0;
}
--HcAYCG3uE/tztfnV
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="gcsebug.s"
.file "gcsebug.c"
.section ".toc","aw"
.LC0:
.tc vmlist_lock[TC],vmlist_lock
.LC1:
.tc vmlist[TC],vmlist
.section ".text"
.align 2
.globl get_vm_area
.section ".opd","aw"
.align 3
get_vm_area:
.quad .get_vm_area,.TOC.@tocbase,0
.previous
.size get_vm_area,24
.type .get_vm_area,@function
.globl .get_vm_area
.get_vm_area:
mflr 0
std 31,-8(1)
std 0,16(1)
li 3,32
stdu 1,-128(1)
bl .kmalloc
nop
cmpdi 0,3,0
mr 10,3
li 3,0
beq- 0,.L1
ld 9,.LC0@toc(2)
li 0,-1
#APP
# write_lock 11, 9, 0
#NO_APP
ld 9,.LC1@toc(2)
ld 9,0(9)
cmpdi 0,9,0
beq- 0,.L14
.L10:
ld 0,16(9)
cmpdi 0,0,0
beq- 0,.L9
ld 9,0(9)
cmpdi 0,9,0
bne+ 0,.L10
.L14:
#APP
#write_unlock
#NO_APP
li 0,0
mr 3,10
stw 0,0(31)
.L1:
addi 1,1,128
ld 0,16(1)
ld 31,-8(1)
mtlr 0
blr
.L9:
#APP
#write_unlock
#NO_APP
mr 3,10
stw 0,0(31)
bl .kfree
nop
li 3,0
b .L1
.LTget_vm_area:
.long 0
.byte 0,0,0,1,128,1,0,0
.size .get_vm_area,.-.get_vm_area
.ident "GCC: (GNU) 3.1 20020417 (prerelease)"
--HcAYCG3uE/tztfnV
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="gcsebug.c.09.addressof"
;; Function get_vm_area
(note 2 0 7 NOTE_INSN_DELETED)
(note 7 2 9 NOTE_INSN_FUNCTION_BEG)
(note 9 7 141 0x401ddb40 NOTE_INSN_BLOCK_BEG)
(note 141 9 14 [bb 0] NOTE_INSN_BASIC_BLOCK)
(insn 14 141 15 (set (reg:DI 3 r3)
(const_int 32 [0x20])) 319 {*movdi_internal64} (nil)
(expr_list:REG_EQUAL (const_int 32 [0x20])
(nil)))
(call_insn 15 14 17 (parallel[
(set (reg:DI 3 r3)
(call (mem:SI (symbol_ref:DI ("kmalloc")) [0 S4 A8])
(const_int 64 [0x40])))
(use (const_int 0 [0x0]))
(clobber (scratch:SI))
] ) 378 {*call_value_nonlocal_aix64} (nil)
(nil)
(expr_list (use (reg:DI 3 r3))
(nil)))
(insn 17 15 19 (set (reg/v/f:DI 120)
(reg:DI 3 r3)) 319 {*movdi_internal64} (nil)
(nil))
(insn 19 17 20 (set (reg:CC 121)
(compare:CC (reg/v/f:DI 120)
(const_int 0 [0x0]))) 383 {*cmpdi_internal1} (nil)
(nil))
(jump_insn 20 19 142 (set (pc)
(if_then_else (ne (reg:CC 121)
(const_int 0 [0x0]))
(label_ref 28)
(pc))) 489 {*rs6000.md:13116} (nil)
(nil))
(note 142 20 25 [bb 1] NOTE_INSN_BASIC_BLOCK)
(insn 25 142 26 (set (reg:DI 115)
(const_int 0 [0x0])) 319 {*movdi_internal64} (nil)
(expr_list:REG_EQUAL (const_int 0 [0x0])
(nil)))
(jump_insn 26 25 27 (set (pc)
(label_ref 135)) -1 (nil)
(nil))
(barrier 27 26 28)
(code_label 28 27 143 2 "" "" [1 uses])
(note 143 28 31 [bb 2] NOTE_INSN_BASIC_BLOCK)
(note 31 143 32 0x401ddbc0 NOTE_INSN_BLOCK_BEG)
(insn 32 31 33 (use (symbol_ref:DI ("vmlist_lock"))) -1 (nil)
(nil))
(insn 33 32 34 (set (reg/v/f:DI 123)
(mem/u:DI (plus:DI (reg:DI 2 r2)
(const:DI (minus:DI (symbol_ref/u:DI ("*.LC0"))
(symbol_ref:DI ("*.LCTOC1"))))) [6 S8 A8])) 319 {*movdi_internal64} (nil)
(nil))
(note 34 33 39 0x401ddc00 NOTE_INSN_BLOCK_BEG)
(insn 39 34 40 (set (reg:SI 126)
(const_int -1 [0xffffffffffffffff])) 299 {*movsi_internal1} (nil)
(expr_list:REG_EQUAL (const_int -1 [0xffffffffffffffff])
(nil)))
(insn 40 39 42 (parallel[
(set (reg:SI 125)
(asm_operands/v:SI ("# write_lock %0, %1, %2") ("=&r") 0[
(reg/v/f:DI 123)
(reg:SI 126)
]
[
(asm_input:DI ("r"))
(asm_input:SI ("r"))
] ("gcsebug.c") 9))
(clobber (mem:BLK (scratch) [0 A8]))
] ) -1 (nil)
(nil))
(note 42 40 43 0x401ddc00 NOTE_INSN_BLOCK_END)
(note 43 42 46 0x401ddbc0 NOTE_INSN_BLOCK_END)
(insn 46 43 47 (use (symbol_ref:DI ("vmlist"))) -1 (nil)
(nil))
(insn 47 46 158 (set (reg/v/f:DI 118)
(mem/u:DI (plus:DI (reg:DI 2 r2)
(const:DI (minus:DI (symbol_ref/u:DI ("*.LC1"))
(symbol_ref:DI ("*.LCTOC1"))))) [6 S8 A8])) 319 {*movdi_internal64} (nil)
(nil))
(insn 158 47 160 (set (reg/v/f:DI 119)
(mem:DI (reg/v/f:DI 118) [7 S8 A64])) 319 {*movdi_internal64} (nil)
(nil))
(insn 160 158 161 (set (reg:CC 138)
(compare:CC (reg/v/f:DI 119)
(const_int 0 [0x0]))) 383 {*cmpdi_internal1} (nil)
(nil))
(jump_insn 161 160 48 (set (pc)
(if_then_else (eq (reg:CC 138)
(const_int 0 [0x0]))
(label_ref 162)
(pc))) 489 {*rs6000.md:13116} (nil)
(expr_list:REG_BR_PRED (concat (const_int 12 [0xc])
(const_int 3600 [0xe10]))
(nil)))
(note 48 161 76 NOTE_INSN_LOOP_BEG)
(code_label 76 48 145 10 "" "" [1 uses])
(note 145 76 64 [bb 3] NOTE_INSN_BASIC_BLOCK)
(insn 64 145 65 (set (reg:DI 129)
(mem/s:DI (plus:DI (reg/v/f:DI 119)
(const_int 16 [0x10])) [9 <variable>.addr+0 S8 A64])) 319 {*movdi_internal64} (nil)
(nil))
(insn 65 64 66 (set (reg:CC 130)
(compare:CC (reg:DI 129)
(const_int 0 [0x0]))) 383 {*cmpdi_internal1} (nil)
(nil))
(jump_insn 66 65 72 (set (pc)
(if_then_else (eq (reg:CC 130)
(const_int 0 [0x0]))
(label_ref 105)
(pc))) 489 {*rs6000.md:13116} (nil)
(nil))
(note 72 66 148 NOTE_INSN_LOOP_CONT)
(note 148 72 75 [bb 4] NOTE_INSN_BASIC_BLOCK)
(insn 75 148 166 (set (reg/v/f:DI 118)
(reg/v/f:DI 119)) 319 {*movdi_internal64} (nil)
(nil))
(note 166 75 51 NOTE_INSN_LOOP_VTOP)
(insn 51 166 54 (set (reg/v/f:DI 119)
(mem:DI (reg/v/f:DI 119) [7 S8 A64])) 319 {*movdi_internal64} (nil)
(nil))
(insn 54 51 55 (set (reg/s:CC 128)
(compare:CC (reg/v/f:DI 119)
(const_int 0 [0x0]))) 383 {*cmpdi_internal1} (nil)
(nil))
(jump_insn 55 54 81 (set (pc)
(if_then_else (ne (reg/s:CC 128)
(const_int 0 [0x0]))
(label_ref 76)
(pc))) 489 {*rs6000.md:13116} (nil)
(nil))
(note 81 55 162 NOTE_INSN_LOOP_END)
(code_label 162 81 152 14 "" "" [1 uses])
(note 152 162 85 [bb 5] NOTE_INSN_BASIC_BLOCK)
(note 85 152 86 0x401ddcc0 NOTE_INSN_BLOCK_BEG)
(insn 86 85 87 (use (symbol_ref:DI ("vmlist_lock"))) -1 (nil)
(nil))
(insn 87 86 91 (set (reg/v/f:DI 131)
(mem/u:DI (plus:DI (reg:DI 2 r2)
(const:DI (minus:DI (symbol_ref/u:DI ("*.LC0"))
(symbol_ref:DI ("*.LCTOC1"))))) [6 S8 A8])) 319 {*movdi_internal64} (nil)
(nil))
(insn 91 87 94 (parallel[
(asm_operands/v ("#write_unlock") ("") 0[ ]
[ ] ("gcsebug.c") 17)
(clobber (mem:BLK (scratch) [0 A8]))
] ) -1 (nil)
(nil))
(insn 94 91 95 (set (reg:SI 132)
(const_int 0 [0x0])) 299 {*movsi_internal1} (nil)
(expr_list:REG_EQUAL (const_int 0 [0x0])
(nil)))
(insn 95 94 96 (set (mem/s/v:SI (reg/v/f:DI 131) [5 <variable>.lock+0 S4 A32])
(reg:SI 132)) 299 {*movsi_internal1} (nil)
(nil))
(note 96 95 102 0x401ddcc0 NOTE_INSN_BLOCK_END)
(insn 102 96 103 (set (reg:DI 115)
(reg/v/f:DI 120)) 319 {*movdi_internal64} (nil)
(nil))
(jump_insn 103 102 104 (set (pc)
(label_ref 135)) -1 (nil)
(nil))
(barrier 104 103 105)
(code_label 105 104 154 9 ("out") "" [1 uses])
(note 154 105 108 [bb 6] NOTE_INSN_BASIC_BLOCK)
(note 108 154 109 0x401ddd40 NOTE_INSN_BLOCK_BEG)
(insn 109 108 110 (use (symbol_ref:DI ("vmlist_lock"))) -1 (nil)
(nil))
(insn 110 109 114 (set (reg/v/f:DI 134)
(mem/u:DI (plus:DI (reg:DI 2 r2)
(const:DI (minus:DI (symbol_ref/u:DI ("*.LC0"))
(symbol_ref:DI ("*.LCTOC1"))))) [6 S8 A8])) 319 {*movdi_internal64} (nil)
(nil))
(insn 114 110 118 (parallel[
(asm_operands/v ("#write_unlock") ("") 0[ ]
[ ] ("gcsebug.c") 17)
(clobber (mem:BLK (scratch) [0 A8]))
] ) -1 (nil)
(nil))
(insn 118 114 119 (set (mem/s/v:SI (reg/v/f:DI 134) [5 <variable>.lock+0 S4 A32])
(subreg:SI (reg:DI 129) 4)) 299 {*movsi_internal1} (nil)
(nil))
(note 119 118 123 0x401ddd40 NOTE_INSN_BLOCK_END)
(insn 123 119 124 (set (reg:DI 3 r3)
(reg/v/f:DI 120)) 319 {*movdi_internal64} (nil)
(nil))
(call_insn 124 123 129 (parallel[
(call (mem:SI (symbol_ref:DI ("kfree")) [0 S4 A8])
(const_int 64 [0x40]))
(use (const_int 0 [0x0]))
(clobber (scratch:SI))
] ) 374 {*call_nonlocal_aix64} (nil)
(nil)
(expr_list (use (reg:DI 3 r3))
(nil)))
(insn 129 124 132 (set (reg:DI 115)
(const_int 0 [0x0])) 319 {*movdi_internal64} (nil)
(expr_list:REG_EQUAL (const_int 0 [0x0])
(nil)))
(note 132 129 133 0x401ddb40 NOTE_INSN_BLOCK_END)
(note 133 132 135 NOTE_INSN_FUNCTION_END)
(code_label 135 133 157 1 "" "" [2 uses])
(note 157 135 137 [bb 7] NOTE_INSN_BASIC_BLOCK)
(insn 137 157 140 (set (reg/i:DI 3 r3)
(reg:DI 115)) 319 {*movdi_internal64} (nil)
(nil))
(insn 140 137 0 (use (reg/i:DI 3 r3)) -1 (nil)
(nil))
--HcAYCG3uE/tztfnV
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="gcsebug.c.10.gcse"
;; Function get_vm_area
try_optimize_cfg iteration 1
0 registers.
8 basic blocks, 13 edges.
Basic block 0: first insn 141, last 20, loop_depth 0, count 0, freq 0.
Predecessors: ENTRY (fallthru)
Successors: 1 (fallthru) 2
Registers live at start: (nil)
Registers live at end: (nil)
Basic block 1: first insn 142, last 26, loop_depth 0, count 0, freq 0.
Predecessors: 0 (fallthru)
Successors: 7
Registers live at start: (nil)
Registers live at end: (nil)
Basic block 2: first insn 28, last 161, loop_depth 0, count 0, freq 0.
Predecessors: 0
Successors: 3 (fallthru) 5
Registers live at start: (nil)
Registers live at end: (nil)
Basic block 3: first insn 76, last 66, loop_depth 0, count 0, freq 0.
Predecessors: 4 2 (fallthru)
Successors: 4 (fallthru) 6
Registers live at start: (nil)
Registers live at end: (nil)
Basic block 4: first insn 148, last 55, loop_depth 0, count 0, freq 0.
Predecessors: 3 (fallthru)
Successors: 5 (fallthru) 3
Registers live at start: (nil)
Registers live at end: (nil)
Basic block 5: first insn 162, last 103, loop_depth 0, count 0, freq 0.
Predecessors: 4 (fallthru) 2
Successors: 7
Registers live at start: (nil)
Registers live at end: (nil)
Basic block 6: first insn 105, last 129, loop_depth 0, count 0, freq 0.
Predecessors: 3
Successors: 7 (fallthru)
Registers live at start: (nil)
Registers live at end: (nil)
Basic block 7: first insn 135, last 140, loop_depth 0, count 0, freq 0.
Predecessors: 6 (fallthru) 5 1
Successors: EXIT (fallthru)
Registers live at start: (nil)
Registers live at end: (nil)
GCSE pass 1
SET hash table (11 buckets, 4 entries)
Index 0 (hash value 5)
(set (reg:DI 115)
(const_int 0 [0x0]))
Index 1 (hash value 5)
(set (reg:SI 126)
(const_int -1 [0xffffffffffffffff]))
Index 2 (hash value 0)
(set (reg:SI 132)
(const_int 0 [0x0]))
Index 3 (hash value 5)
(set (reg:DI 115)
(reg/v/f:DI 120))
CPROP of get_vm_area, pass 1: 3896 bytes needed, 0 const props, 0 copy props
Expression hash table (19 buckets, 8 entries)
Index 0 (hash value 13)
(compare:CC (reg/v/f:DI 120)
(const_int 0 [0x0]))
Index 1 (hash value 5)
(mem/u:DI (plus:DI (reg:DI 2 r2)
(const:DI (minus:DI (symbol_ref/u:DI ("*.LC0"))
(symbol_ref:DI ("*.LCTOC1"))))) [6 S8 A8])
Index 2 (hash value 6)
(mem/u:DI (plus:DI (reg:DI 2 r2)
(const:DI (minus:DI (symbol_ref/u:DI ("*.LC1"))
(symbol_ref:DI ("*.LCTOC1"))))) [6 S8 A8])
Index 3 (hash value 0)
(mem:DI (reg/v/f:DI 118) [7 S8 A64])
Index 4 (hash value 12)
(compare:CC (reg/v/f:DI 119)
(const_int 0 [0x0]))
Index 5 (hash value 0)
(mem/s:DI (plus:DI (reg/v/f:DI 119)
(const_int 16 [0x10])) [9 <variable>.addr+0 S8 A64])
Index 6 (hash value 3)
(compare:CC (reg:DI 129)
(const_int 0 [0x0]))
Index 7 (hash value 1)
(mem:DI (reg/v/f:DI 119) [7 S8 A64])
PRE: redundant insn 87 (expression 1) in bb 5, reaching reg is 139
PRE: redundant insn 110 (expression 1) in bb 6, reaching reg is 139
PRE GCSE of get_vm_area, pass 1: 5976 bytes needed, 2 substs, 0 insns created
SET hash table (11 buckets, 6 entries)
Index 0 (hash value 5)
(set (reg:DI 115)
(const_int 0 [0x0]))
Index 1 (hash value 5)
(set (reg:SI 126)
(const_int -1 [0xffffffffffffffff]))
Index 2 (hash value 10)
(set (reg/v/f:DI 131)
(reg:DI 139))
Index 3 (hash value 0)
(set (reg:SI 132)
(const_int 0 [0x0]))
Index 4 (hash value 5)
(set (reg:DI 115)
(reg/v/f:DI 120))
Index 5 (hash value 2)
(set (reg/v/f:DI 134)
(reg:DI 139))
CPROP of get_vm_area, pass 2: 10028 bytes needed, 0 const props, 0 copy props
GCSE of get_vm_area: 8 basic blocks, 1 pass, 7152 bytes
;; Processing block from 2 to 28, 10 sets.
;; Processing block from 143 to 76, 10 sets.
;; Processing block from 145 to 81, 7 sets.
;; Processing block from 152 to 105, 9 sets.
;; Processing block from 154 to 135, 10 sets.
;; Processing block from 157 to 0, 2 sets.
try_optimize_cfg iteration 1
;; Processing block from 2 to 28, 10 sets.
;; Processing block from 143 to 76, 10 sets.
;; Processing block from 145 to 81, 7 sets.
;; Processing block from 152 to 105, 8 sets.
;; Processing block from 154 to 135, 9 sets.
;; Processing block from 157 to 0, 2 sets.
(note 2 0 7 NOTE_INSN_DELETED)
(note 7 2 9 NOTE_INSN_FUNCTION_BEG)
(note 9 7 141 0x401ddb40 NOTE_INSN_BLOCK_BEG)
(note 141 9 14 [bb 0] NOTE_INSN_BASIC_BLOCK)
(insn 14 141 15 (set (reg:DI 3 r3)
(const_int 32 [0x20])) 319 {*movdi_internal64} (nil)
(expr_list:REG_EQUAL (const_int 32 [0x20])
(nil)))
(call_insn 15 14 17 (parallel[
(set (reg:DI 3 r3)
(call (mem:SI (symbol_ref:DI ("kmalloc")) [0 S4 A8])
(const_int 64 [0x40])))
(use (const_int 0 [0x0]))
(clobber (scratch:SI))
] ) 378 {*call_value_nonlocal_aix64} (nil)
(nil)
(expr_list (use (reg:DI 3 r3))
(nil)))
(insn 17 15 19 (set (reg/v/f:DI 120)
(reg:DI 3 r3)) 319 {*movdi_internal64} (nil)
(nil))
(insn 19 17 20 (set (reg:CC 121)
(compare:CC (reg/v/f:DI 120)
(const_int 0 [0x0]))) 383 {*cmpdi_internal1} (nil)
(nil))
(jump_insn 20 19 142 (set (pc)
(if_then_else (ne (reg:CC 121)
(const_int 0 [0x0]))
(label_ref 28)
(pc))) 489 {*rs6000.md:13116} (nil)
(nil))
(note 142 20 25 [bb 1] NOTE_INSN_BASIC_BLOCK)
(insn 25 142 26 (set (reg:DI 115)
(const_int 0 [0x0])) 319 {*movdi_internal64} (nil)
(expr_list:REG_EQUAL (const_int 0 [0x0])
(nil)))
(jump_insn 26 25 27 (set (pc)
(label_ref 135)) -1 (nil)
(nil))
(barrier 27 26 28)
(code_label 28 27 143 2 "" "" [1 uses])
(note 143 28 31 [bb 2] NOTE_INSN_BASIC_BLOCK)
(note 31 143 32 0x401ddbc0 NOTE_INSN_BLOCK_BEG)
(insn 32 31 33 (use (symbol_ref:DI ("vmlist_lock"))) -1 (nil)
(nil))
(insn 33 32 34 (set (reg/v/f:DI 123)
(mem/u:DI (plus:DI (reg:DI 2 r2)
(const:DI (minus:DI (symbol_ref/u:DI ("*.LC0"))
(symbol_ref:DI ("*.LCTOC1"))))) [6 S8 A8])) 319 {*movdi_internal64} (nil)
(nil))
(note 34 33 39 0x401ddc00 NOTE_INSN_BLOCK_BEG)
(insn 39 34 40 (set (reg:SI 126)
(const_int -1 [0xffffffffffffffff])) 299 {*movsi_internal1} (nil)
(expr_list:REG_EQUAL (const_int -1 [0xffffffffffffffff])
(nil)))
(insn 40 39 42 (parallel[
(set (reg:SI 125)
(asm_operands/v:SI ("# write_lock %0, %1, %2") ("=&r") 0[
(reg/v/f:DI 123)
(reg:SI 126)
]
[
(asm_input:DI ("r"))
(asm_input:SI ("r"))
] ("gcsebug.c") 9))
(clobber (mem:BLK (scratch) [0 A8]))
] ) -1 (nil)
(nil))
(note 42 40 43 0x401ddc00 NOTE_INSN_BLOCK_END)
(note 43 42 46 0x401ddbc0 NOTE_INSN_BLOCK_END)
(insn 46 43 47 (use (symbol_ref:DI ("vmlist"))) -1 (nil)
(nil))
(insn 47 46 158 (set (reg/v/f:DI 118)
(mem/u:DI (plus:DI (reg:DI 2 r2)
(const:DI (minus:DI (symbol_ref/u:DI ("*.LC1"))
(symbol_ref:DI ("*.LCTOC1"))))) [6 S8 A8])) 319 {*movdi_internal64} (nil)
(nil))
(insn 158 47 160 (set (reg/v/f:DI 119)
(mem:DI (reg/v/f:DI 118) [7 S8 A64])) 319 {*movdi_internal64} (nil)
(nil))
(insn 160 158 161 (set (reg:CC 138)
(compare:CC (reg/v/f:DI 119)
(const_int 0 [0x0]))) 383 {*cmpdi_internal1} (nil)
(nil))
(jump_insn 161 160 48 (set (pc)
(if_then_else (eq (reg:CC 138)
(const_int 0 [0x0]))
(label_ref 162)
(pc))) 489 {*rs6000.md:13116} (nil)
(expr_list:REG_BR_PRED (concat (const_int 12 [0xc])
(const_int 3600 [0xe10]))
(nil)))
(note 48 161 76 NOTE_INSN_LOOP_BEG)
(code_label 76 48 145 10 "" "" [1 uses])
(note 145 76 64 [bb 3] NOTE_INSN_BASIC_BLOCK)
(insn 64 145 65 (set (reg:DI 129)
(mem/s:DI (plus:DI (reg/v/f:DI 119)
(const_int 16 [0x10])) [9 <variable>.addr+0 S8 A64])) 319 {*movdi_internal64} (nil)
(nil))
(insn 65 64 66 (set (reg:CC 130)
(compare:CC (reg:DI 129)
(const_int 0 [0x0]))) 383 {*cmpdi_internal1} (nil)
(nil))
(jump_insn 66 65 72 (set (pc)
(if_then_else (eq (reg:CC 130)
(const_int 0 [0x0]))
(label_ref 105)
(pc))) 489 {*rs6000.md:13116} (nil)
(nil))
(note 72 66 148 NOTE_INSN_LOOP_CONT)
(note 148 72 75 [bb 4] NOTE_INSN_BASIC_BLOCK)
(insn 75 148 166 (set (reg/v/f:DI 118)
(reg/v/f:DI 119)) 319 {*movdi_internal64} (nil)
(nil))
(note 166 75 51 NOTE_INSN_LOOP_VTOP)
(insn 51 166 54 (set (reg/v/f:DI 119)
(mem:DI (reg/v/f:DI 119) [7 S8 A64])) 319 {*movdi_internal64} (nil)
(nil))
(insn 54 51 55 (set (reg/s:CC 128)
(compare:CC (reg/v/f:DI 119)
(const_int 0 [0x0]))) 383 {*cmpdi_internal1} (nil)
(nil))
(jump_insn 55 54 81 (set (pc)
(if_then_else (ne (reg/s:CC 128)
(const_int 0 [0x0]))
(label_ref 76)
(pc))) 489 {*rs6000.md:13116} (nil)
(nil))
(note 81 55 162 NOTE_INSN_LOOP_END)
(code_label 162 81 152 14 "" "" [1 uses])
(note 152 162 85 [bb 5] NOTE_INSN_BASIC_BLOCK)
(note 85 152 86 0x401ddcc0 NOTE_INSN_BLOCK_BEG)
(insn 86 85 91 (use (symbol_ref:DI ("vmlist_lock"))) -1 (nil)
(nil))
(insn 91 86 94 (parallel[
(asm_operands/v ("#write_unlock") ("") 0[ ]
[ ] ("gcsebug.c") 17)
(clobber (mem:BLK (scratch) [0 A8]))
] ) -1 (nil)
(nil))
(insn 94 91 95 (set (reg:SI 132)
(const_int 0 [0x0])) 299 {*movsi_internal1} (nil)
(expr_list:REG_EQUAL (const_int 0 [0x0])
(nil)))
(insn 95 94 96 (set (mem/s/v:SI (reg:DI 139) [5 <variable>.lock+0 S4 A32])
(reg:SI 132)) 299 {*movsi_internal1} (nil)
(nil))
(note 96 95 102 0x401ddcc0 NOTE_INSN_BLOCK_END)
(insn 102 96 103 (set (reg:DI 115)
(reg/v/f:DI 120)) 319 {*movdi_internal64} (nil)
(nil))
(jump_insn 103 102 104 (set (pc)
(label_ref 135)) -1 (nil)
(nil))
(barrier 104 103 105)
(code_label 105 104 154 9 ("out") "" [1 uses])
(note 154 105 108 [bb 6] NOTE_INSN_BASIC_BLOCK)
(note 108 154 109 0x401ddd40 NOTE_INSN_BLOCK_BEG)
(insn 109 108 114 (use (symbol_ref:DI ("vmlist_lock"))) -1 (nil)
(nil))
(insn 114 109 118 (parallel[
(asm_operands/v ("#write_unlock") ("") 0[ ]
[ ] ("gcsebug.c") 17)
(clobber (mem:BLK (scratch) [0 A8]))
] ) -1 (nil)
(nil))
(insn 118 114 119 (set (mem/s/v:SI (reg:DI 139) [5 <variable>.lock+0 S4 A32])
(subreg:SI (reg:DI 129) 4)) 299 {*movsi_internal1} (nil)
(nil))
(note 119 118 123 0x401ddd40 NOTE_INSN_BLOCK_END)
(insn 123 119 124 (set (reg:DI 3 r3)
(reg/v/f:DI 120)) 319 {*movdi_internal64} (nil)
(nil))
(call_insn 124 123 129 (parallel[
(call (mem:SI (symbol_ref:DI ("kfree")) [0 S4 A8])
(const_int 64 [0x40]))
(use (const_int 0 [0x0]))
(clobber (scratch:SI))
] ) 374 {*call_nonlocal_aix64} (nil)
(nil)
(expr_list (use (reg:DI 3 r3))
(nil)))
(insn 129 124 132 (set (reg:DI 115)
(const_int 0 [0x0])) 319 {*movdi_internal64} (nil)
(expr_list:REG_EQUAL (const_int 0 [0x0])
(nil)))
(note 132 129 133 0x401ddb40 NOTE_INSN_BLOCK_END)
(note 133 132 135 NOTE_INSN_FUNCTION_END)
(code_label 135 133 157 1 "" "" [2 uses])
(note 157 135 137 [bb 7] NOTE_INSN_BASIC_BLOCK)
(insn 137 157 140 (set (reg/i:DI 3 r3)
(reg:DI 115)) 319 {*movdi_internal64} (nil)
(nil))
(insn 140 137 0 (use (reg/i:DI 3 r3)) -1 (nil)
(nil))
--HcAYCG3uE/tztfnV--
>Release-Note:
>Audit-Trail:
>Unformatted:
--HcAYCG3uE/tztfnV
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline