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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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
 


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