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)

Reply via email to