El lun, 04-09-2006 a las 09:20 +0200, Paolo Bonzini escribió:
> J.J. Garcia wrote:
> > Hi all,
> >
> > I'm trying to debug a code optimization in gcc for an specific arch, to
> > be more explicit it's for gcc 2.95.3 for Metaware ARC target
> > architecture, i know the old release of compiler and i know there will
> > not be lot of support about it, anyway im keep on trying...,
>
> The "bug" is still there in the most recent version of GCC, but AFAIK (I
> speak RTL, but I don't speak ARC assembly) the optimization is ok.
First of all thx for fast reply and hints,
Sorry, what do you mean with "is still there"? which release/arc/bug-
entry at bugzilla is pointing the same? 'Couse if i compile on x86 as:
----
[EMAIL PROTECTED] solvebug1]# gcc -o test bug1-prb04503-1-new.c
[EMAIL PROTECTED] solvebug1]# ./test
[EMAIL PROTECTED] solvebug1]# echo $?
0
[EMAIL PROTECTED] solvebug1]# gcc -v
Leyendo especificaciones de /usr/lib/gcc/i386-redhat-linux/3.4.5/specs
Configurado con: ../configure --prefix=/usr --mandir=/usr/share/man --
infodir=/usr/share/info --enable-shared --enable-threads=posix --
disable-checking --with-system-zlib --enable-__cxa_atexit --disable-
libunwind-exceptions --enable-java-awt=gtk --host=i386-redhat-linux
Modelo de hilos: posix
gcc versión 3.4.5 20051201 (Red Hat 3.4.5-2)
----
Initial condition is [ Test (9 >= 10)] and as expected in x86 the cmp is
being done correctly AFAIK with -O2:
08048368 <uifprb04503_A>:
8048368: 55 push %ebp
8048369: 89 e5 mov %esp,%ebp
804836b: 83 7d 08 0a cmpl $0xa,0x8(%ebp)
804836f: 19 c0 sbb %eax,%eax
8048371: 83 e0 31 and $0x31,%eax
8048374: 83 c0 14 add $0x14,%eax
8048377: c9 leave
8048378: c3 ret
8048379: 8d 76 00 lea 0x0(%esi),%esi
0804837c <main>:
804837c: 55 push %ebp
804837d: 89 e5 mov %esp,%ebp
804837f: 83 ec 08 sub $0x8,%esp
8048382: 83 e4 f0 and $0xfffffff0,%esp
8048385: 83 ec 10 sub $0x10,%esp
8048388: 6a 09 push $0x9
804838a: e8 d9 ff ff ff call 8048368 <uifprb04503_A>
<...>
Sorry, prior to continue i forgot to include last line in ARC assembler
code for main function when calling to test-function (presetting 'r0'
value b4 fork to function, slight detail...):
0000010c <main>:
10c: 04 3e 0e 10 100e3e04 st blink,[sp,4]
110: 00 36 0e 10 100e3600 st fp,[sp]
114: 00 38 6e 63 636e3800 mov fp,sp
118: 10 7e 8e 53 538e7e10 sub sp,sp,16
11c: a0 f9 ff 2f 2ffff9a0 bl.d ec <uifprb04503_A>
---> 120: 09 fe 1f 60 601ffe09 mov r0,9
>
> The change is from:
>
> (set (reg:CC 61 cc)
> (compare:CC (reg/v:SI 69 [ n ])
> (const_int 9 [0x9])))
> (set (reg/v:SI 67 [ test_value ])
> (if_then_else:SI (ltu (reg:CC 61 cc) (const_int 0 [0x0]))
> (const_int 69 [0x45])
> (reg:SI 71)))
>
>
> to
>
> (set (reg:CC 61 cc)
> (compare:CC (reg/v:SI 69 [ n ])
> (const_int 8 [0x9])))
> (set (reg/v:SI 67 [ test_value ])
> (if_then_else:SI (leu (reg:CC 61 cc) (const_int 0 [0x0]))
> (const_int 69 [0x45])
> (reg:SI 71)))
>
> Testing < 9 is the same as testing <= 8.
>
> The assembly seems also ok, since ".ls" is the translation of the "leu"
> RTL code. By comparison, "ltu" would become "c".
I think 'mov.ls' is correct, what is failing is to test against 8 in ARC
asm statement 'sub.f 0,r0,8' (update flags from 'r0 - 8' aritmetic
operation) it should be against 9:
000000ec <uifprb04503_A>:
ec: 00 36 0e 10 100e3600 st fp,[sp]
f0: 00 38 6e 63 636e3800 mov fp,sp
f4: 08 7a e0 57 57e07a08 sub.f 0,r0,8
f8: 14 fe 1f 60 601ffe14 mov r0,20
fc: 0e 7c 1f 60 601f7c0e mov.ls r0,69
See comparison in function:
unsigned int
uifprb04503_A (unsigned int n)
{
unsigned int test_value = 69;
if ( n >= SINGULARP )
{
test_value = 20;
}
return test_value;
}
What is expected is:
if n >= 10 ---> return 20
n < 10 ---> return 69
or
n <= 9 (adapted to be used with .ls)
What is obtained from objdump is:
if n <= 8 <--- (mov.ls) --> 69
n > 8 ----------------> return 20
or
n >= 9 (deduced, bad then against original)
And if i understand correctly from RTL:
(const_int 9 + ltu) is optimized to (const_int 8 + leu)
Which as you say is correct, but:
should not it be 10 instead 9?
Attached the full .rtl (i think it's the initial approach output from
gcc), the .flow and .combine files
TIA
Jose.
>
> While unexpected, this change is done by GCC as part of "canonicalizing"
> expressions so that, for example, it could detect that "<= 8" and "< 9"
> are really testing the same condition.
>
> All this said, remember that the correct place to report a bug is the
> GCC bugzilla at http://gcc.gnu.org/bugzilla
>
> Paolo
;; Function uifprb04503_A
(note 1 0 2 ("bug1-prb04503-1-new.c") 121)
(note 2 1 4 "" NOTE_INSN_DELETED)
(insn 4 2 5 (set (reg/v:SI 67)
(reg:SI 0 %r0)) -1 (nil)
(nil))
(note 5 4 6 "" NOTE_INSN_FUNCTION_BEG)
(note 6 5 7 "" NOTE_INSN_DELETED)
(note 7 6 8 ("bug1-prb04503-1-new.c") 122)
(note 8 7 10 0 NOTE_INSN_BLOCK_BEG)
(insn 10 8 11 (set (reg/v:SI 68)
(const_int 69 [0x45])) -1 (nil)
(nil))
(note 11 10 12 ("bug1-prb04503-1-new.c") 124)
(insn 12 11 13 (set (reg:CC 61 %cc)
(compare:CC (reg/v:SI 67)
(const_int 9 [0x9]))) -1 (nil)
(nil))
(jump_insn 13 12 14 (set (pc)
(if_then_else (leu (reg:CC 61 %cc)
(const_int 0 [0x0]))
(label_ref 19)
(pc))) 96 {*branch_insn} (nil)
(nil))
(note 14 13 15 ("bug1-prb04503-1-new.c") 127)
(note 15 14 17 "" NOTE_INSN_DELETED)
(insn 17 15 18 (set (reg/v:SI 68)
(const_int 20 [0x14])) -1 (nil)
(nil))
(note 18 17 19 ("bug1-prb04503-1-new.c") 128)
(code_label 19 18 20 3 "" [num uses: 0])
(note 20 19 22 ("bug1-prb04503-1-new.c") 130)
(insn 22 20 23 (set (reg/i:SI 0 %r0)
(reg/v:SI 68)) -1 (nil)
(nil))
(insn 23 22 24 (use (reg/i:SI 0 %r0)) -1 (nil)
(nil))
(jump_insn 24 23 25 (set (pc)
(label_ref 30)) -1 (nil)
(nil))
(barrier 25 24 26)
(note 26 25 27 ("bug1-prb04503-1-new.c") 131)
(note 27 26 28 0 NOTE_INSN_BLOCK_END)
(note 28 27 29 "" NOTE_INSN_FUNCTION_END)
(note 29 28 30 ("bug1-prb04503-1-new.c") 131)
(code_label 30 29 0 2 "" [num uses: 0])
;; Function main
(note 1 0 2 ("bug1-prb04503-1-new.c") 145)
(note 2 1 3 "" NOTE_INSN_DELETED)
(note 3 2 4 "" NOTE_INSN_FUNCTION_BEG)
(note 4 3 5 "" NOTE_INSN_DELETED)
(note 5 4 6 ("bug1-prb04503-1-new.c") 156)
(note 6 5 8 "" NOTE_INSN_DELETED)
(insn 8 6 9 (set (reg:SI 0 %r0)
(const_int 9 [0x9])) -1 (nil)
(nil))
(call_insn 9 8 11 (parallel[
(set (reg:SI 0 %r0)
(call (mem:SI (symbol_ref/v:SI ("uifprb04503_A")) 0)
(const_int 0 [0x0])))
(clobber (reg:SI 31 %blink))
] ) -1 (nil)
(nil)
(expr_list (use (reg:SI 0 %r0))
(nil)))
(insn 11 9 12 (set (reg:SI 67)
(reg:SI 0 %r0)) -1 (nil)
(nil))
(insn 12 11 13 (set (reg:CCZN 61 %cc)
(compare:CCZN (reg:SI 67)
(const_int 69 [0x45]))) -1 (nil)
(nil))
(jump_insn 13 12 14 (set (pc)
(if_then_else (eq (reg:CCZN 61 %cc)
(const_int 0 [0x0]))
(label_ref 19)
(pc))) 96 {*branch_insn} (nil)
(nil))
(note 14 13 16 ("bug1-prb04503-1-new.c") 157)
(insn 16 14 17 (set (reg:SI 0 %r0)
(const_int 1 [0x1])) -1 (nil)
(nil))
(call_insn 17 16 18 (parallel[
(set (reg:SI 0 %r0)
(call (mem:SI (symbol_ref/v:SI ("exit")) 0)
(const_int 0 [0x0])))
(clobber (reg:SI 31 %blink))
] ) -1 (nil)
(nil)
(expr_list (use (reg:SI 0 %r0))
(nil)))
(barrier 18 17 19)
(code_label 19 18 20 5 "" [num uses: 0])
(note 20 19 22 ("bug1-prb04503-1-new.c") 159)
(insn 22 20 23 (set (reg:SI 0 %r0)
(const_int 0 [0x0])) -1 (nil)
(nil))
(call_insn 23 22 24 (parallel[
(set (reg:SI 0 %r0)
(call (mem:SI (symbol_ref/v:SI ("exit")) 0)
(const_int 0 [0x0])))
(clobber (reg:SI 31 %blink))
] ) -1 (nil)
(nil)
(expr_list (use (reg:SI 0 %r0))
(nil)))
(barrier 24 23 25)
(note 25 24 26 ("bug1-prb04503-1-new.c") 160)
(note 26 25 27 "" NOTE_INSN_FUNCTION_END)
(note 27 26 28 ("bug1-prb04503-1-new.c") 160)
(code_label 28 27 0 4 "" [num uses: 0])
;; Function uifprb04503_A
(note 1 0 2 ("bug1-prb04503-1-new.c") 121)
(note 2 1 37 "" NOTE_INSN_DELETED)
;; Start of basic block 0, registers live: 0 [%r0] 27 [%fp] 28 [%sp]
(note 37 2 4 [bb 0] NOTE_INSN_BASIC_BLOCK)
(note 4 37 5 "" NOTE_INSN_DELETED)
(note 5 4 6 "" NOTE_INSN_FUNCTION_BEG)
(note 6 5 7 "" NOTE_INSN_DELETED)
(note 7 6 8 ("bug1-prb04503-1-new.c") 122)
(note 8 7 10 0 NOTE_INSN_BLOCK_BEG)
(note 10 8 11 "" NOTE_INSN_DELETED)
(note 11 10 12 ("bug1-prb04503-1-new.c") 124)
(insn 12 11 32 (set (reg:CC 61 %cc)
(compare:CC (reg:SI 0 %r0)
(const_int 8 [0x8]))) 70 {*cmpsi_cc_insn} (nil)
(expr_list:REG_DEAD (reg:SI 0 %r0)
(nil)))
(insn 32 12 34 (set (reg:SI 71)
(const_int 20 [0x14])) 7 {*movsi_insn} (nil)
(expr_list:REG_EQUAL (const_int 20 [0x14])
(nil)))
(insn 34 32 14 (set (reg/v:SI 68)
(if_then_else (leu (reg:CC 61 %cc)
(const_int 0 [0x0]))
(const_int 69 [0x45])
(reg:SI 71))) 29 {*movsicc_insn} (insn_list 12 (insn_list 32 (nil)))
(expr_list:REG_DEAD (reg:CC 61 %cc)
(expr_list:REG_DEAD (reg:SI 71)
(nil))))
(note 14 34 15 ("bug1-prb04503-1-new.c") 127)
(note 15 14 18 "" NOTE_INSN_DELETED)
(note 18 15 20 ("bug1-prb04503-1-new.c") 128)
(note 20 18 22 ("bug1-prb04503-1-new.c") 130)
(insn 22 20 23 (set (reg/i:SI 0 %r0)
(reg/v:SI 68)) 7 {*movsi_insn} (insn_list 34 (nil))
(expr_list:REG_DEAD (reg/v:SI 68)
(nil)))
(insn 23 22 26 (use (reg/i:SI 0 %r0)) -1 (insn_list 22 (nil))
(expr_list:REG_DEAD (reg/i:SI 0 %r0)
(nil)))
;; End of basic block 0
(note 26 23 27 ("bug1-prb04503-1-new.c") 131)
(note 27 26 0 0 NOTE_INSN_BLOCK_END)
;; Function main
(note 1 0 2 ("bug1-prb04503-1-new.c") 145)
(note 2 1 3 "" NOTE_INSN_DELETED)
(note 3 2 4 "" NOTE_INSN_FUNCTION_BEG)
(note 4 3 5 "" NOTE_INSN_DELETED)
(note 5 4 6 ("bug1-prb04503-1-new.c") 156)
(note 6 5 29 "" NOTE_INSN_DELETED)
;; Start of basic block 0, registers live: 28 [%sp]
(note 29 6 8 [bb 0] NOTE_INSN_BASIC_BLOCK)
(insn 8 29 9 (set (reg:SI 0 %r0)
(const_int 9 [0x9])) 7 {*movsi_insn} (nil)
(expr_list:REG_EQUAL (const_int 9 [0x9])
(nil)))
(call_insn 9 8 11 (parallel[
(set (reg:SI 0 %r0)
(call (mem:SI (symbol_ref/v:SI ("uifprb04503_A")) 0)
(const_int 0 [0x0])))
(clobber (reg:SI 31 %blink))
] ) -1 (insn_list 8 (nil))
(expr_list:REG_UNUSED (reg:SI 31 %blink)
(nil))
(expr_list (use (reg:SI 0 %r0))
(nil)))
(note 11 9 12 "" NOTE_INSN_DELETED)
(insn 12 11 13 (set (reg:CCZN 61 %cc)
(compare:CCZN (reg:SI 0 %r0)
(const_int 69 [0x45]))) 71 {*cmpsi_cczn_insn} (insn_list 9 (nil))
(expr_list:REG_DEAD (reg:SI 0 %r0)
(nil)))
(jump_insn 13 12 14 (set (pc)
(if_then_else (eq (reg:CCZN 61 %cc)
(const_int 0 [0x0]))
(label_ref 19)
(pc))) 96 {*branch_insn} (insn_list 12 (nil))
(expr_list:REG_DEAD (reg:CCZN 61 %cc)
(nil)))
;; End of basic block 0
(note 14 13 31 ("bug1-prb04503-1-new.c") 157)
;; Start of basic block 1, registers live: 28 [%sp]
(note 31 14 16 [bb 1] NOTE_INSN_BASIC_BLOCK)
(insn 16 31 17 (set (reg:SI 0 %r0)
(const_int 1 [0x1])) 7 {*movsi_insn} (nil)
(expr_list:REG_EQUAL (const_int 1 [0x1])
(nil)))
(call_insn 17 16 30 (parallel[
(set (reg:SI 0 %r0)
(call (mem:SI (symbol_ref/v:SI ("exit")) 0)
(const_int 0 [0x0])))
(clobber (reg:SI 31 %blink))
] ) -1 (insn_list 16 (nil))
(expr_list:REG_UNUSED (reg:SI 0 %r0)
(expr_list:REG_UNUSED (reg:SI 31 %blink)
(nil)))
(expr_list (use (reg:SI 0 %r0))
(nil)))
(insn 30 17 18 (use (const_int 0 [0x0])) -1 (nil)
(nil))
;; End of basic block 1
(barrier 18 30 19)
;; Start of basic block 2, registers live: 28 [%sp]
(code_label 19 18 33 5 "" [num uses: 1])
(note 33 19 20 [bb 2] NOTE_INSN_BASIC_BLOCK)
(note 20 33 22 ("bug1-prb04503-1-new.c") 159)
(insn 22 20 23 (set (reg:SI 0 %r0)
(const_int 0 [0x0])) 7 {*movsi_insn} (nil)
(expr_list:REG_EQUAL (const_int 0 [0x0])
(nil)))
(call_insn 23 22 32 (parallel[
(set (reg:SI 0 %r0)
(call (mem:SI (symbol_ref/v:SI ("exit")) 0)
(const_int 0 [0x0])))
(clobber (reg:SI 31 %blink))
] ) -1 (insn_list 22 (nil))
(expr_list:REG_UNUSED (reg:SI 0 %r0)
(expr_list:REG_UNUSED (reg:SI 31 %blink)
(nil)))
(expr_list (use (reg:SI 0 %r0))
(nil)))
(insn 32 23 24 (use (const_int 0 [0x0])) -1 (nil)
(nil))
;; End of basic block 2
(barrier 24 32 25)
(note 25 24 0 ("bug1-prb04503-1-new.c") 160)
;; Combiner totals: 19 attempts, 11 substitutions (0 requiring new space),
;; 2 successes.
;; Function uifprb04503_A
72 registers.
Register 67 used 2 times across 2 insns in block 0; set 1 time; user var.
Register 68 used 2 times across 2 insns in block 0; set 1 time; user var.
Register 71 used 2 times across 2 insns in block 0; set 1 time.
1 basic blocks.
Basic block 0: first insn 37, last 23.
Predecessors: ENTRY (fallthru)
Successors: EXIT (fallthru)
Registers live at start: 0 27 28
Registers live at end: 27 28
(note 1 0 2 ("bug1-prb04503-1-new.c") 121)
(note 2 1 37 "" NOTE_INSN_DELETED)
;; Start of basic block 0, registers live: 0 [%r0] 27 [%fp] 28 [%sp]
(note 37 2 4 [bb 0] NOTE_INSN_BASIC_BLOCK)
(insn 4 37 5 (set (reg/v:SI 67)
(reg:SI 0 %r0)) 7 {*movsi_insn} (nil)
(expr_list:REG_DEAD (reg:SI 0 %r0)
(nil)))
(note 5 4 6 "" NOTE_INSN_FUNCTION_BEG)
(note 6 5 7 "" NOTE_INSN_DELETED)
(note 7 6 8 ("bug1-prb04503-1-new.c") 122)
(note 8 7 10 0 NOTE_INSN_BLOCK_BEG)
(note 10 8 11 "" NOTE_INSN_DELETED)
(note 11 10 12 ("bug1-prb04503-1-new.c") 124)
(insn 12 11 32 (set (reg:CC 61 %cc)
(compare:CC (reg/v:SI 67)
(const_int 9 [0x9]))) 70 {*cmpsi_cc_insn} (insn_list 4 (nil))
(expr_list:REG_DEAD (reg/v:SI 67)
(nil)))
(insn 32 12 34 (set (reg:SI 71)
(const_int 20 [0x14])) 7 {*movsi_insn} (nil)
(expr_list:REG_EQUAL (const_int 20 [0x14])
(nil)))
(insn 34 32 14 (set (reg/v:SI 68)
(if_then_else (ltu (reg:CC 61 %cc)
(const_int 0 [0x0]))
(const_int 69 [0x45])
(reg:SI 71))) 29 {*movsicc_insn} (insn_list 12 (insn_list 32 (nil)))
(expr_list:REG_DEAD (reg:CC 61 %cc)
(expr_list:REG_DEAD (reg:SI 71)
(nil))))
(note 14 34 15 ("bug1-prb04503-1-new.c") 127)
(note 15 14 18 "" NOTE_INSN_DELETED)
(note 18 15 20 ("bug1-prb04503-1-new.c") 128)
(note 20 18 22 ("bug1-prb04503-1-new.c") 130)
(insn 22 20 23 (set (reg/i:SI 0 %r0)
(reg/v:SI 68)) 7 {*movsi_insn} (insn_list 34 (nil))
(expr_list:REG_DEAD (reg/v:SI 68)
(nil)))
(insn 23 22 26 (use (reg/i:SI 0 %r0)) -1 (insn_list 22 (nil))
(expr_list:REG_DEAD (reg/i:SI 0 %r0)
(nil)))
;; End of basic block 0
(note 26 23 27 ("bug1-prb04503-1-new.c") 131)
(note 27 26 0 0 NOTE_INSN_BLOCK_END)
;; Function main
68 registers.
Register 67 used 2 times across 2 insns in block 0; set 1 time.
3 basic blocks.
Basic block 0: first insn 29, last 13.
Predecessors: ENTRY (fallthru)
Successors: 1 (fallthru) 2
Registers live at start: 28
Registers live at end: 28
Basic block 1: first insn 31, last 30.
Predecessors: 0 (fallthru)
Successors:
Registers live at start: 28
Registers live at end:
Basic block 2: first insn 19, last 32.
Predecessors: 0
Successors:
Registers live at start: 28
Registers live at end:
(note 1 0 2 ("bug1-prb04503-1-new.c") 145)
(note 2 1 3 "" NOTE_INSN_DELETED)
(note 3 2 4 "" NOTE_INSN_FUNCTION_BEG)
(note 4 3 5 "" NOTE_INSN_DELETED)
(note 5 4 6 ("bug1-prb04503-1-new.c") 156)
(note 6 5 29 "" NOTE_INSN_DELETED)
;; Start of basic block 0, registers live: 28 [%sp]
(note 29 6 8 [bb 0] NOTE_INSN_BASIC_BLOCK)
(insn 8 29 9 (set (reg:SI 0 %r0)
(const_int 9 [0x9])) 7 {*movsi_insn} (nil)
(expr_list:REG_EQUAL (const_int 9 [0x9])
(nil)))
(call_insn 9 8 11 (parallel[
(set (reg:SI 0 %r0)
(call (mem:SI (symbol_ref/v:SI ("uifprb04503_A")) 0)
(const_int 0 [0x0])))
(clobber (reg:SI 31 %blink))
] ) -1 (insn_list 8 (nil))
(expr_list:REG_UNUSED (reg:SI 31 %blink)
(nil))
(expr_list (use (reg:SI 0 %r0))
(nil)))
(insn 11 9 12 (set (reg:SI 67)
(reg:SI 0 %r0)) 7 {*movsi_insn} (insn_list 9 (nil))
(expr_list:REG_DEAD (reg:SI 0 %r0)
(nil)))
(insn 12 11 13 (set (reg:CCZN 61 %cc)
(compare:CCZN (reg:SI 67)
(const_int 69 [0x45]))) 71 {*cmpsi_cczn_insn} (insn_list 11 (nil))
(expr_list:REG_DEAD (reg:SI 67)
(nil)))
(jump_insn 13 12 14 (set (pc)
(if_then_else (eq (reg:CCZN 61 %cc)
(const_int 0 [0x0]))
(label_ref 19)
(pc))) 96 {*branch_insn} (insn_list 12 (nil))
(expr_list:REG_DEAD (reg:CCZN 61 %cc)
(nil)))
;; End of basic block 0
(note 14 13 31 ("bug1-prb04503-1-new.c") 157)
;; Start of basic block 1, registers live: 28 [%sp]
(note 31 14 16 [bb 1] NOTE_INSN_BASIC_BLOCK)
(insn 16 31 17 (set (reg:SI 0 %r0)
(const_int 1 [0x1])) 7 {*movsi_insn} (nil)
(expr_list:REG_EQUAL (const_int 1 [0x1])
(nil)))
(call_insn 17 16 30 (parallel[
(set (reg:SI 0 %r0)
(call (mem:SI (symbol_ref/v:SI ("exit")) 0)
(const_int 0 [0x0])))
(clobber (reg:SI 31 %blink))
] ) -1 (insn_list 16 (nil))
(expr_list:REG_UNUSED (reg:SI 0 %r0)
(expr_list:REG_UNUSED (reg:SI 31 %blink)
(nil)))
(expr_list (use (reg:SI 0 %r0))
(nil)))
(insn 30 17 18 (use (const_int 0 [0x0])) -1 (nil)
(nil))
;; End of basic block 1
(barrier 18 30 19)
;; Start of basic block 2, registers live: 28 [%sp]
(code_label 19 18 33 5 "" [num uses: 1])
(note 33 19 20 [bb 2] NOTE_INSN_BASIC_BLOCK)
(note 20 33 22 ("bug1-prb04503-1-new.c") 159)
(insn 22 20 23 (set (reg:SI 0 %r0)
(const_int 0 [0x0])) 7 {*movsi_insn} (nil)
(expr_list:REG_EQUAL (const_int 0 [0x0])
(nil)))
(call_insn 23 22 32 (parallel[
(set (reg:SI 0 %r0)
(call (mem:SI (symbol_ref/v:SI ("exit")) 0)
(const_int 0 [0x0])))
(clobber (reg:SI 31 %blink))
] ) -1 (insn_list 22 (nil))
(expr_list:REG_UNUSED (reg:SI 0 %r0)
(expr_list:REG_UNUSED (reg:SI 31 %blink)
(nil)))
(expr_list (use (reg:SI 0 %r0))
(nil)))
(insn 32 23 24 (use (const_int 0 [0x0])) -1 (nil)
(nil))
;; End of basic block 2
(barrier 24 32 25)
(note 25 24 0 ("bug1-prb04503-1-new.c") 160)