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)