------- Comment #5 from hutchinsonandy at gcc dot gnu dot org  2009-09-24 03:30 
-------
Forget previous post, I misunderstood PHI node. However, I was close

The PHI in block 5 has incoming ZERO constant. With "detailed" expansion dump
file , it can be seen that this constant value copy is inserted on BB edge 4-5
but the RTL shows it is actually added one instruction before end of block 4.
The edge 4->5 falls through and insertion should be after jump that is last
insn of BB 4 (and the end of memcpy do loop  expansion)

Hopefully, I right this time.


;; Function main (main)


Pass statistics:
----------------


CFG Statistics for main

---------------------------------------------------------
                                Number of        Memory
                                instances         used 
---------------------------------------------------------
Basic blocks                              9        576b
Edges                                     8        352b
---------------------------------------------------------
Total memory used by CFG data                      928b
---------------------------------------------------------

Coalesced label blocks: 0 (Max so far: 0)

main ()
{
  unsigned intD.3 src.29D.2127;
  unsigned intD.3 D.2128;
  unsigned charD.10 D.2124;
  unsigned charD.10 D.2126;
  unsigned intD.3 ivtmp.25D.2120;
  unsigned intD.3 ivtmp.20D.2115;
  unsigned charD.10 dstD.1321[100];
  unsigned charD.10 srcD.1320[100];
  unsigned intD.3 iD.1319;
  unsigned charD.10 D.2091;
  unsigned charD.10 D.2090;

  # BLOCK 2 freq:100
  # PRED: ENTRY [100.0%]  (fallthru,exec)
  ivtmp.20D.2115_23 = (unsigned intD.3) &srcD.1320[0];
  ivtmp.25D.2120_26 = (unsigned intD.3) &dstD.1321[0];
  src.29D.2127_31 = (unsigned intD.3) &srcD.1320;
  D.2128_32 = src.29D.2127_31 + 100;
  # SUCC: 3 [100.0%]  (fallthru,exec)

  # BLOCK 3 freq:9900
  # PRED: 3 [99.0%]  (true,exec) 2 [100.0%]  (fallthru,exec)
  # ivtmp.20D.2115_2 = PHI <ivtmp.20D.2115_16(3), ivtmp.20D.2115_23(2)>
  # ivtmp.25D.2120_24 = PHI <ivtmp.25D.2120_25(3), ivtmp.25D.2120_26(2)>
  D.2124_27 = (unsigned charD.10) ivtmp.20D.2115_2;
  D.2126_29 = (unsigned charD.10) ivtmp.20D.2115_23;
  D.2090_30 = D.2124_27 - D.2126_29;
  # .MEMD.2094_12 = VDEF <.MEMD.2094_20>
  MEM[index: ivtmp.20D.2115_2] = D.2090_30;
  ivtmp.20D.2115_16 = ivtmp.20D.2115_2 + 1;
  # .MEMD.2094_13 = VDEF <.MEMD.2094_12>
  MEM[index: ivtmp.25D.2120_24] = 0;
  ivtmp.25D.2120_25 = ivtmp.25D.2120_24 + 1;
  if (ivtmp.20D.2115_16 != D.2128_32)
    goto <bb 3>;
  else
    goto <bb 4>;
  # SUCC: 3 [99.0%]  (true,exec) 4 [1.0%]  (false,exec)

  # BLOCK 4 freq:100
  # PRED: 3 [1.0%]  (false,exec)
  # .MEMD.2094_14 = VDEF <.MEMD.2094_13>
  dstD.1321 = srcD.1320;
  # SUCC: 5 [100.0%]  (fallthru,exec)

  # BLOCK 5 freq:1815
  # PRED: 7 [98.9%]  (true,exec) 4 [100.0%]  (fallthru,exec)
  # iD.1319_19 = PHI <iD.1319_9(7), 0(4)>
  # ivtmp.25D.2120_17 = PHI <ivtmp.25D.2120_10(7), ivtmp.25D.2120_26(4)>
  # VUSE <.MEMD.2094_14>
  D.2091_7 = MEM[index: ivtmp.25D.2120_17];
  ivtmp.25D.2120_10 = ivtmp.25D.2120_17 + 1;
  D.2090_22 = (unsigned charD.10) iD.1319_19;
  if (D.2091_7 != D.2090_22)
    goto <bb 6>;
  else
    goto <bb 7>;
  # SUCC: 6 [4.5%]  (true,exec) 7 [95.5%]  (false,exec)

  # BLOCK 6 freq:82
  # PRED: 5 [4.5%]  (true,exec)
  # VUSE <.MEMD.2094_14>
  abortD.823 ();
  # SUCC:

  # BLOCK 7 freq:1733
  # PRED: 5 [95.5%]  (false,exec)
  iD.1319_9 = iD.1319_19 + 1;
  if (iD.1319_9 != 100)
    goto <bb 5>;
  else
    goto <bb 8>;
  # SUCC: 5 [98.9%]  (true,exec) 8 [1.1%]  (false,exec)

  # BLOCK 8 freq:18
  # PRED: 7 [1.1%]  (false,exec)
  # VUSE <.MEMD.2094_14>
  exitD.869 (0);
  # SUCC:

}



Partition map 

Partition 2 (ivtmp.20_2 - 2 )
Partition 7 (D.2091_7 - 7 )
Partition 9 (i_9 - 9 )
Partition 10 (ivtmp.25_10 - 10 )
Partition 11 (.MEM_11(D) - 11 )
Partition 12 (.MEM_12 - 12 )
Partition 13 (.MEM_13 - 13 )
Partition 14 (.MEM_14 - 14 )
Partition 16 (ivtmp.20_16 - 16 )
Partition 17 (ivtmp.25_17 - 17 )
Partition 19 (i_19 - 19 )
Partition 22 (D.2090_22 - 22 )
Partition 23 (ivtmp.20_23 - 23 )
Partition 24 (ivtmp.25_24 - 24 )
Partition 25 (ivtmp.25_25 - 25 )
Partition 26 (ivtmp.25_26 - 26 )
Partition 27 (D.2124_27 - 27 )
Partition 29 (D.2126_29 - 29 )
Partition 30 (D.2090_30 - 30 )
Partition 31 (src.29_31 - 31 )
Partition 32 (D.2128_32 - 32 )


Partition map 

Partition 0 (ivtmp.20_2 - 2 )
Partition 1 (i_9 - 9 )
Partition 2 (ivtmp.25_10 - 10 )
Partition 3 (ivtmp.20_16 - 16 )
Partition 4 (ivtmp.25_17 - 17 )
Partition 5 (i_19 - 19 )
Partition 6 (ivtmp.20_23 - 23 )
Partition 7 (ivtmp.25_24 - 24 )
Partition 8 (ivtmp.25_25 - 25 )
Partition 9 (ivtmp.25_26 - 26 )


Live on entry to BB2 : 

Live on entry to BB3 : ivtmp.20_23  ivtmp.25_26  

Live on entry to BB4 : ivtmp.25_26  

Live on entry to BB5 : 

Live on entry to BB6 : 

Live on entry to BB7 : ivtmp.25_10  i_19  

Live on entry to BB8 : 

Conflict graph:
0: 6
3: 6
6: 0, 3
7: 9
8: 9
9: 7, 8

After sorting:
Sorted Coalesce list:
(2) ivtmp.20_2 <-> ivtmp.20_16
(2) i_9 <-> i_19
(2) ivtmp.25_10 <-> ivtmp.25_17
(2) ivtmp.25_24 <-> ivtmp.25_25
(1) ivtmp.20_2 <-> ivtmp.20_23
(1) ivtmp.25_17 <-> ivtmp.25_26
(1) ivtmp.25_24 <-> ivtmp.25_26

Partition map 

Partition 0 (ivtmp.20_2 - 2 )
Partition 1 (i_9 - 9 )
Partition 2 (ivtmp.25_10 - 10 )
Partition 3 (ivtmp.20_16 - 16 )
Partition 4 (ivtmp.25_17 - 17 )
Partition 5 (i_19 - 19 )
Partition 6 (ivtmp.20_23 - 23 )
Partition 7 (ivtmp.25_24 - 24 )
Partition 8 (ivtmp.25_25 - 25 )
Partition 9 (ivtmp.25_26 - 26 )

Coalesce list: (2)ivtmp.20_2 & (16)ivtmp.20_16 [map: 0, 3] : Success -> 0
Coalesce list: (9)i_9 & (19)i_19 [map: 1, 5] : Success -> 1
Coalesce list: (10)ivtmp.25_10 & (17)ivtmp.25_17 [map: 2, 4] : Success -> 2
Coalesce list: (24)ivtmp.25_24 & (25)ivtmp.25_25 [map: 7, 8] : Success -> 7
Coalesce list: (2)ivtmp.20_2 & (23)ivtmp.20_23 [map: 0, 6] : Fail due to
conflict
Coalesce list: (17)ivtmp.25_10 & (26)ivtmp.25_26 [map: 2, 9] : Success -> 2
Coalesce list: (24)ivtmp.25_24 & (26)ivtmp.25_10 [map: 7, 2] : Fail due to
conflict
After Coalescing:

Partition map 

Partition 0 (ivtmp.20_2 - 2 16 )
Partition 1 (D.2091_7 - 7 )
Partition 2 (i_9 - 9 19 )
Partition 3 (ivtmp.25_10 - 10 17 26 )
Partition 4 (D.2090_22 - 22 )
Partition 5 (ivtmp.20_23 - 23 )
Partition 6 (ivtmp.25_24 - 24 25 )
Partition 7 (D.2124_27 - 27 )
Partition 8 (D.2126_29 - 29 )
Partition 9 (D.2090_30 - 30 )
Partition 10 (src.29_31 - 31 )
Partition 11 (D.2128_32 - 32 )


Replacing Expressions
D.2090_22 replace with --> D.2090_22 = (unsigned char) i_19;

D.2124_27 replace with --> D.2124_27 = (unsigned char) ivtmp.20_2;

D.2126_29 replace with --> D.2126_29 = (unsigned char) ivtmp.20_23;

D.2090_30 replace with --> D.2090_30 = D.2124_27 - D.2126_29;

src.29_31 replace with --> src.29_31 = (unsigned int) &src;



CFG Statistics for main

---------------------------------------------------------
                                Number of        Memory
                                instances         used 
---------------------------------------------------------
Basic blocks                              9        576b
Edges                                     8        352b
---------------------------------------------------------
Total memory used by CFG data                      928b
---------------------------------------------------------

Coalesced label blocks: 0 (Max so far: 0)

main ()
{
  unsigned intD.3 src.29D.2127;
  unsigned intD.3 D.2128;
  unsigned charD.10 D.2124;
  unsigned charD.10 D.2126;
  unsigned intD.3 ivtmp.25D.2120;
  unsigned intD.3 ivtmp.20D.2115;
  unsigned charD.10 dstD.1321[100];
  unsigned charD.10 srcD.1320[100];
  unsigned intD.3 iD.1319;
  unsigned charD.10 D.2091;
  unsigned charD.10 D.2090;

  # BLOCK 2 freq:100
  # PRED: ENTRY [100.0%]  (fallthru,exec)
  ivtmp.20D.2115_23 = (unsigned intD.3) &srcD.1320[0];
  ivtmp.25D.2120_26 = (unsigned intD.3) &dstD.1321[0];
  src.29D.2127_31 = (unsigned intD.3) &srcD.1320;
  D.2128_32 = src.29D.2127_31 + 100;
  # SUCC: 3 [100.0%]  (fallthru,exec)

  # BLOCK 3 freq:9900
  # PRED: 3 [99.0%]  (true,exec) 2 [100.0%]  (fallthru,exec)
  # ivtmp.20D.2115_2 = PHI <ivtmp.20D.2115_16(3), ivtmp.20D.2115_23(2)>
  # ivtmp.25D.2120_24 = PHI <ivtmp.25D.2120_25(3), ivtmp.25D.2120_26(2)>
  D.2124_27 = (unsigned charD.10) ivtmp.20D.2115_2;
  D.2126_29 = (unsigned charD.10) ivtmp.20D.2115_23;
  D.2090_30 = D.2124_27 - D.2126_29;
  # .MEMD.2094_12 = VDEF <.MEMD.2094_20>
  MEM[index: ivtmp.20D.2115_2] = D.2090_30;
  ivtmp.20D.2115_16 = ivtmp.20D.2115_2 + 1;
  # .MEMD.2094_13 = VDEF <.MEMD.2094_12>
  MEM[index: ivtmp.25D.2120_24] = 0;
  ivtmp.25D.2120_25 = ivtmp.25D.2120_24 + 1;
  if (ivtmp.20D.2115_16 != D.2128_32)
    goto <bb 3>;
  else
    goto <bb 4>;
  # SUCC: 3 [99.0%]  (true,exec) 4 [1.0%]  (false,exec)

  # BLOCK 4 freq:100
  # PRED: 3 [1.0%]  (false,exec)
  # .MEMD.2094_14 = VDEF <.MEMD.2094_13>
  dstD.1321 = srcD.1320;
  # SUCC: 5 [100.0%]  (fallthru,exec)

  # BLOCK 5 freq:1815
  # PRED: 7 [98.9%]  (true,exec) 4 [100.0%]  (fallthru,exec)
  # iD.1319_19 = PHI <iD.1319_9(7), 0(4)>
  # ivtmp.25D.2120_17 = PHI <ivtmp.25D.2120_10(7), ivtmp.25D.2120_26(4)>
  # VUSE <.MEMD.2094_14>
  D.2091_7 = MEM[index: ivtmp.25D.2120_17];
  ivtmp.25D.2120_10 = ivtmp.25D.2120_17 + 1;
  D.2090_22 = (unsigned charD.10) iD.1319_19;
  if (D.2091_7 != D.2090_22)
    goto <bb 6>;
  else
    goto <bb 7>;
  # SUCC: 6 [4.5%]  (true,exec) 7 [95.5%]  (false,exec)

  # BLOCK 6 freq:82
  # PRED: 5 [4.5%]  (true,exec)
  # VUSE <.MEMD.2094_14>
  abortD.823 ();
  # SUCC:

  # BLOCK 7 freq:1733
  # PRED: 5 [95.5%]  (false,exec)
  iD.1319_9 = iD.1319_19 + 1;
  if (iD.1319_9 != 100)
    goto <bb 5>;
  else
    goto <bb 8>;
  # SUCC: 5 [98.9%]  (true,exec) 8 [1.1%]  (false,exec)

  # BLOCK 8 freq:18
  # PRED: 7 [1.1%]  (false,exec)
  # VUSE <.MEMD.2094_14>
  exitD.869 (0);
  # SUCC:

}


Partition 0: size 100 align 1
        srcD.1320, offset 0
Partition 1: size 100 align 1
        dstD.1321, offset 0
Inserting a partition copy on edge BB2->BB3 :PART.6 = PART.3
Inserting a partition copy on edge BB2->BB3 :PART.0 = PART.5
Inserting a value copy on edge BB4->BB5 : PART.2 = 0

;; Generating RTL for gimple basic block 2

;; ivtmp.20_23 = (unsigned int) &src[0];

(insn 114 113 0 memcpy-1.c:19 (set (reg:HI 152 [ ivtmp.20 ])
        (reg/f:HI 37 virtual-stack-vars)) -1 (nil))

;; ivtmp.25_26 = (unsigned int) &dst[0];

(insn 115 114 0 memcpy-1.c:19 (set (reg:HI 150 [ ivtmp.25 ])
        (plus:HI (reg/f:HI 37 virtual-stack-vars)
            (const_int 100 [0x64]))) -1 (nil))

;; D.2128_32 = src.29_31 + 100;

(insn 116 115 0 memcpy-1.c:5 (set (reg:HI 158 [ D.2128 ])
        (plus:HI (reg/f:HI 37 virtual-stack-vars)
            (const_int 100 [0x64]))) -1 (nil))

;; Generating RTL for gimple basic block 3

;; MEM[index: ivtmp.20_2] = D.2090_30;

(insn 118 117 119 memcpy-1.c:13 (set (reg:QI 160)
        (minus:QI (subreg:QI (reg:HI 147 [ ivtmp.20 ]) 0)
            (subreg:QI (reg:HI 152 [ ivtmp.20 ]) 0))) -1 (nil))

(insn 119 118 0 memcpy-1.c:13 (set (mem/s/j:QI (reg:HI 147 [ ivtmp.20 ]) [0 src
S1 A8])
        (reg:QI 160)) -1 (nil))

;; ivtmp.20_16 = ivtmp.20_2 + 1;

(insn 120 119 0 memcpy-1.c:13 (set (reg:HI 147 [ ivtmp.20 ])
        (plus:HI (reg:HI 147 [ ivtmp.20 ])
            (const_int 1 [0x1]))) -1 (nil))

;; MEM[index: ivtmp.25_24] = 0;

(insn 121 120 0 memcpy-1.c:14 (set (mem/s/j:QI (reg:HI 153 [ ivtmp.25 ]) [0 dst
S1 A8])
        (const_int 0 [0x0])) -1 (nil))

;; ivtmp.25_25 = ivtmp.25_24 + 1;

(insn 122 121 0 memcpy-1.c:14 (set (reg:HI 153 [ ivtmp.25 ])
        (plus:HI (reg:HI 153 [ ivtmp.25 ])
            (const_int 1 [0x1]))) -1 (nil))

;; if (ivtmp.20_16 != D.2128_32)

(insn 124 122 125 memcpy-1.c:11 (parallel [
            (set (cc0)
                (compare (reg:HI 147 [ ivtmp.20 ])
                    (reg:HI 158 [ D.2128 ])))
            (clobber (scratch:QI))
        ]) -1 (nil))

(jump_insn 125 124 0 memcpy-1.c:11 (set (pc)
        (if_then_else (ne (cc0)
                (const_int 0 [0x0]))
            (label_ref 123)
            (pc))) -1 (expr_list:REG_BR_PROB (const_int 9899 [0x26ab])
        (nil)))

;; Generating RTL for gimple basic block 4

;; dst = src;

(insn 127 126 128 memcpy-1.c:17 (set (reg/f:HI 161)
        (plus:HI (reg/f:HI 37 virtual-stack-vars)
            (const_int 100 [0x64]))) -1 (nil))

(insn 128 127 129 memcpy-1.c:17 (set (reg:HI 162)
        (reg/f:HI 161)) -1 (nil))

(insn 129 128 130 memcpy-1.c:17 (set (reg:HI 163)
        (reg/f:HI 37 virtual-stack-vars)) -1 (nil))

(insn 130 129 131 memcpy-1.c:17 (set (reg:QI 164)
        (const_int 100 [0x64])) -1 (nil))

(code_label 131 130 132 3 "" [0 uses])

(insn 132 131 133 memcpy-1.c:17 (set (reg:QI 0 r0)
        (mem:QI (reg:HI 163) [0 S1 A8])) -1 (nil))

(insn 133 132 134 memcpy-1.c:17 (set (reg:HI 163)
        (plus:HI (reg:HI 163)
            (const_int 1 [0x1]))) -1 (nil))

(insn 134 133 135 memcpy-1.c:17 (set (mem:QI (reg:HI 162) [0 S1 A8])
        (reg:QI 0 r0)) -1 (nil))

(insn 135 134 136 memcpy-1.c:17 (set (reg:HI 162)
        (plus:HI (reg:HI 162)
            (const_int 1 [0x1]))) -1 (nil))

(insn 136 135 137 memcpy-1.c:17 (set (reg:QI 164)
        (plus:QI (reg:QI 164)
            (const_int -1 [0xffffffff]))) -1 (nil))

(insn 137 136 138 memcpy-1.c:17 (set (cc0)
        (compare (reg:QI 164)
            (const_int 0 [0x0]))) -1 (nil))

(jump_insn 138 137 0 memcpy-1.c:17 (set (pc)
        (if_then_else (ne (cc0)
                (const_int 0 [0x0]))
            (label_ref 131)
            (pc))) -1 (expr_list:REG_BR_PROB (const_int 9900 [0x26ac])
        (nil)))

;; Generating RTL for gimple basic block 5

;; D.2091_7 = MEM[index: ivtmp.25_17];

(insn 140 139 0 memcpy-1.c:20 (set (reg:QI 148 [ D.2091 ])
        (mem/s/j:QI (reg:HI 150 [ ivtmp.25 ]) [0 dst S1 A8])) -1 (nil))

;; ivtmp.25_10 = ivtmp.25_17 + 1;

(insn 141 140 0 memcpy-1.c:20 (set (reg:HI 150 [ ivtmp.25 ])
        (plus:HI (reg:HI 150 [ ivtmp.25 ])
            (const_int 1 [0x1]))) -1 (nil))

;; if (D.2091_7 != D.2090_22)

(insn 142 141 143 memcpy-1.c:20 (set (cc0)
        (compare (reg:QI 148 [ D.2091 ])
            (subreg:QI (reg/v:HI 149 [ i ]) 0))) -1 (nil))

(jump_insn 143 142 0 memcpy-1.c:20 (set (pc)
        (if_then_else (eq (cc0)
                (const_int 0 [0x0]))
            (label_ref 0)
            (pc))) -1 (expr_list:REG_BR_PROB (const_int 9550 [0x254e])
        (nil)))

;; Generating RTL for gimple basic block 6

;; abort ();

(insn 145 144 146 memcpy-1.c:21 (set (reg:HI 165)
        (reg/f:HI 39 virtual-outgoing-args)) -1 (nil))

(call_insn 146 145 147 memcpy-1.c:21 (call (mem:HI (symbol_ref:HI ("abort")
[flags 0x41] <function_decl 0xb7d3ee00 abort>) [0 S2 A8])
        (const_int 0 [0x0])) -1 (expr_list:REG_NORETURN (const_int 0 [0x0])
        (expr_list:REG_EH_REGION (const_int 0 [0x0])
            (nil)))
    (nil))

(barrier 147 146 0)

;; Generating RTL for gimple basic block 7

;; 

(code_label 148 147 149 4 "" [0 uses])

(note 149 148 0 NOTE_INSN_BASIC_BLOCK)

;; i_9 = i_19 + 1;

(insn 150 149 0 memcpy-1.c:19 (set (reg/v:HI 149 [ i ])
        (plus:HI (reg/v:HI 149 [ i ])
            (const_int 1 [0x1]))) -1 (nil))

;; if (i_9 != 100)

(insn 152 150 153 memcpy-1.c:19 (parallel [
            (set (cc0)
                (compare (reg/v:HI 149 [ i ])
                    (const_int 100 [0x64])))
            (clobber (scratch:QI))
        ]) -1 (nil))

(jump_insn 153 152 0 memcpy-1.c:19 (set (pc)
        (if_then_else (ne (cc0)
                (const_int 0 [0x0]))
            (label_ref 151)
            (pc))) -1 (expr_list:REG_BR_PROB (const_int 9894 [0x26a6])
        (nil)))

;; Generating RTL for gimple basic block 8

;; exit (0);

(insn 155 154 156 memcpy-1.c:23 (set (reg:HI 166)
        (reg/f:HI 39 virtual-outgoing-args)) -1 (nil))

(insn 156 155 157 memcpy-1.c:23 (set (reg:HI 24 r24)
        (const_int 0 [0x0])) -1 (nil))

(call_insn 157 156 158 memcpy-1.c:23 (call (mem:HI (symbol_ref:HI ("exit")
[flags 0x41] <function_decl 0xb7d43500 exit>) [0 S2 A8])
        (const_int 0 [0x0])) -1 (expr_list:REG_NORETURN (const_int 0 [0x0])
        (expr_list:REG_EH_REGION (const_int 0 [0x0])
            (nil)))
    (expr_list:REG_DEP_TRUE (use (reg:HI 24 r24))
        (nil)))

(barrier 158 157 0)


;;
;; Full RTL generated for this function:
;;

Pass statistics:
----------------

(note 107 0 112 NOTE_INSN_DELETED)

;; Start of basic block ( 0) -> 2
;; Pred edge  ENTRY [100.0%]  (fallthru)
(note 112 107 108 2 [bb 2] NOTE_INSN_BASIC_BLOCK)

(note 108 112 113 2 NOTE_INSN_FUNCTION_BEG)
;; End of basic block 2 -> ( 3)

;; Succ edge  3 [100.0%]  (fallthru)

;; Start of basic block ( 2) -> 3
;; Pred edge  2 [100.0%]  (fallthru)
(note 113 108 114 3 [bb 3] NOTE_INSN_BASIC_BLOCK)

(insn 114 113 115 3 memcpy-1.c:19 (set (reg:HI 152 [ ivtmp.20 ])
        (reg/f:HI 37 virtual-stack-vars)) -1 (nil))

(insn 115 114 116 3 memcpy-1.c:19 (set (reg:HI 150 [ ivtmp.25 ])
        (plus:HI (reg/f:HI 37 virtual-stack-vars)
            (const_int 100 [0x64]))) -1 (nil))

(insn 116 115 109 3 memcpy-1.c:5 (set (reg:HI 158 [ D.2128 ])
        (plus:HI (reg/f:HI 37 virtual-stack-vars)
            (const_int 100 [0x64]))) -1 (nil))

(insn 109 116 110 3 memcpy-1.c:5 (set (reg:HI 153 [ ivtmp.25 ])
        (reg:HI 150 [ ivtmp.25 ])) -1 (nil))

(insn 110 109 123 3 memcpy-1.c:5 (set (reg:HI 147 [ ivtmp.20 ])
        (reg:HI 152 [ ivtmp.20 ])) -1 (nil))
;; End of basic block 3 -> ( 4)

;; Succ edge  4 [100.0%]  (fallthru)

;; Start of basic block ( 4 3) -> 4
;; Pred edge  4 [99.0%] 
;; Pred edge  3 [100.0%]  (fallthru)
(code_label 123 110 117 4 2 "" [1 uses])

(note 117 123 118 4 [bb 4] NOTE_INSN_BASIC_BLOCK)

(insn 118 117 119 4 memcpy-1.c:13 (set (reg:QI 160)
        (minus:QI (subreg:QI (reg:HI 147 [ ivtmp.20 ]) 0)
            (subreg:QI (reg:HI 152 [ ivtmp.20 ]) 0))) -1 (nil))

(insn 119 118 120 4 memcpy-1.c:13 (set (mem/s/j:QI (reg:HI 147 [ ivtmp.20 ]) [0
src S1 A8])
        (reg:QI 160)) -1 (nil))

(insn 120 119 121 4 memcpy-1.c:13 (set (reg:HI 147 [ ivtmp.20 ])
        (plus:HI (reg:HI 147 [ ivtmp.20 ])
            (const_int 1 [0x1]))) -1 (nil))

(insn 121 120 122 4 memcpy-1.c:14 (set (mem/s/j:QI (reg:HI 153 [ ivtmp.25 ]) [0
dst S1 A8])
        (const_int 0 [0x0])) -1 (nil))

(insn 122 121 124 4 memcpy-1.c:14 (set (reg:HI 153 [ ivtmp.25 ])
        (plus:HI (reg:HI 153 [ ivtmp.25 ])
            (const_int 1 [0x1]))) -1 (nil))

(insn 124 122 125 4 memcpy-1.c:11 (parallel [
            (set (cc0)
                (compare (reg:HI 147 [ ivtmp.20 ])
                    (reg:HI 158 [ D.2128 ])))
            (clobber (scratch:QI))
        ]) -1 (nil))

(jump_insn 125 124 126 4 memcpy-1.c:11 (set (pc)
        (if_then_else (ne (cc0)
                (const_int 0 [0x0]))
            (label_ref 123)
            (pc))) -1 (expr_list:REG_BR_PROB (const_int 9899 [0x26ab])
        (nil))
 -> 123)
;; End of basic block 4 -> ( 4 5)

;; Succ edge  4 [99.0%] 
;; Succ edge  5 [1.0%]  (fallthru)

;; Start of basic block ( 4) -> 5
;; Pred edge  4 [1.0%]  (fallthru)
(note 126 125 127 5 [bb 5] NOTE_INSN_BASIC_BLOCK)

(insn 127 126 128 5 memcpy-1.c:17 (set (reg/f:HI 161)
        (plus:HI (reg/f:HI 37 virtual-stack-vars)
            (const_int 100 [0x64]))) -1 (nil))

(insn 128 127 129 5 memcpy-1.c:17 (set (reg:HI 162)
        (reg/f:HI 161)) -1 (nil))

(insn 129 128 130 5 memcpy-1.c:17 (set (reg:HI 163)
        (reg/f:HI 37 virtual-stack-vars)) -1 (nil))

(insn 130 129 131 5 memcpy-1.c:17 (set (reg:QI 164)
        (const_int 100 [0x64])) -1 (nil))
;; End of basic block 5 -> ( 6)

;; Succ edge  6 [100.0%]  (fallthru)

;; Start of basic block ( 5 6) -> 6
;; Pred edge  5 [100.0%]  (fallthru)
;; Pred edge  6 [99.0%] 
(code_label 131 130 165 6 3 "" [1 uses])

(note 165 131 132 6 [bb 6] NOTE_INSN_BASIC_BLOCK)

(insn 132 165 133 6 memcpy-1.c:17 (set (reg:QI 0 r0)
        (mem:QI (reg:HI 163) [0 S1 A8])) -1 (nil))

(insn 133 132 134 6 memcpy-1.c:17 (set (reg:HI 163)
        (plus:HI (reg:HI 163)
            (const_int 1 [0x1]))) -1 (nil))

(insn 134 133 135 6 memcpy-1.c:17 (set (mem:QI (reg:HI 162) [0 S1 A8])
        (reg:QI 0 r0)) -1 (nil))

(insn 135 134 136 6 memcpy-1.c:17 (set (reg:HI 162)
        (plus:HI (reg:HI 162)
            (const_int 1 [0x1]))) -1 (nil))

(insn 136 135 137 6 memcpy-1.c:17 (set (reg:QI 164)
        (plus:QI (reg:QI 164)
            (const_int -1 [0xffffffff]))) -1 (nil))

(insn 137 136 111 6 memcpy-1.c:17 (set (cc0)
        (compare (reg:QI 164)
            (const_int 0 [0x0]))) -1 (nil))

(insn 111 137 138 6 memcpy-1.c:19 (set (reg/v:HI 149 [ i ])
        (const_int 0 [0x0])) -1 (nil))

(jump_insn 138 111 151 6 memcpy-1.c:17 (set (pc)
        (if_then_else (ne (cc0)
                (const_int 0 [0x0]))
            (label_ref 131)
            (pc))) -1 (expr_list:REG_BR_PROB (const_int 9900 [0x26ac])
        (nil))
 -> 131)
;; End of basic block 6 -> ( 7 6)

;; Succ edge  7 [1.0%]  (fallthru)
;; Succ edge  6 [99.0%] 

;; Start of basic block ( 9 6) -> 7
;; Pred edge  9 [98.9%] 
;; Pred edge  6 [1.0%]  (fallthru)
(code_label 151 138 139 7 5 "" [1 uses])

(note 139 151 140 7 [bb 7] NOTE_INSN_BASIC_BLOCK)

(insn 140 139 141 7 memcpy-1.c:20 (set (reg:QI 148 [ D.2091 ])
        (mem/s/j:QI (reg:HI 150 [ ivtmp.25 ]) [0 dst S1 A8])) -1 (nil))

(insn 141 140 142 7 memcpy-1.c:20 (set (reg:HI 150 [ ivtmp.25 ])
        (plus:HI (reg:HI 150 [ ivtmp.25 ])
            (const_int 1 [0x1]))) -1 (nil))

(insn 142 141 143 7 memcpy-1.c:20 (set (cc0)
        (compare (reg:QI 148 [ D.2091 ])
            (subreg:QI (reg/v:HI 149 [ i ]) 0))) -1 (nil))

(jump_insn 143 142 144 7 memcpy-1.c:20 (set (pc)
        (if_then_else (eq (cc0)
                (const_int 0 [0x0]))
            (label_ref 148)
            (pc))) -1 (expr_list:REG_BR_PROB (const_int 9550 [0x254e])
        (nil))
 -> 148)
;; End of basic block 7 -> ( 8 9)

;; Succ edge  8 [4.5%]  (fallthru)
;; Succ edge  9 [95.5%] 

;; Start of basic block ( 7) -> 8
;; Pred edge  7 [4.5%]  (fallthru)
(note 144 143 145 8 [bb 8] NOTE_INSN_BASIC_BLOCK)

(insn 145 144 146 8 memcpy-1.c:21 (set (reg:HI 165)
        (reg/f:HI 39 virtual-outgoing-args)) -1 (nil))

(call_insn 146 145 147 8 memcpy-1.c:21 (call (mem:HI (symbol_ref:HI ("abort")
[flags 0x41] <function_decl 0xb7d3ee00 abort>) [0 S2 A8])
        (const_int 0 [0x0])) -1 (expr_list:REG_NORETURN (const_int 0 [0x0])
        (expr_list:REG_EH_REGION (const_int 0 [0x0])
            (nil)))
    (nil))
;; End of basic block 8 -> ()


(barrier 147 146 148)

;; Start of basic block ( 7) -> 9
;; Pred edge  7 [95.5%] 
(code_label 148 147 149 9 4 "" [1 uses])

(note 149 148 150 9 [bb 9] NOTE_INSN_BASIC_BLOCK)

(insn 150 149 152 9 memcpy-1.c:19 (set (reg/v:HI 149 [ i ])
        (plus:HI (reg/v:HI 149 [ i ])
            (const_int 1 [0x1]))) -1 (nil))

(insn 152 150 153 9 memcpy-1.c:19 (parallel [
            (set (cc0)
                (compare (reg/v:HI 149 [ i ])
                    (const_int 100 [0x64])))
            (clobber (scratch:QI))
        ]) -1 (nil))

(jump_insn 153 152 154 9 memcpy-1.c:19 (set (pc)
        (if_then_else (ne (cc0)
                (const_int 0 [0x0]))
            (label_ref 151)
            (pc))) -1 (expr_list:REG_BR_PROB (const_int 9894 [0x26a6])
        (nil))
 -> 151)
;; End of basic block 9 -> ( 7 10)

;; Succ edge  7 [98.9%] 
;; Succ edge  10 [1.1%]  (fallthru)

;; Start of basic block ( 9) -> 10
;; Pred edge  9 [1.1%]  (fallthru)
(note 154 153 155 10 [bb 10] NOTE_INSN_BASIC_BLOCK)

(insn 155 154 156 10 memcpy-1.c:23 (set (reg:HI 166)
        (reg/f:HI 39 virtual-outgoing-args)) -1 (nil))

(insn 156 155 157 10 memcpy-1.c:23 (set (reg:HI 24 r24)
        (const_int 0 [0x0])) -1 (nil))

(call_insn 157 156 158 10 memcpy-1.c:23 (call (mem:HI (symbol_ref:HI ("exit")
[flags 0x41] <function_decl 0xb7d43500 exit>) [0 S2 A8])
        (const_int 0 [0x0])) -1 (expr_list:REG_NORETURN (const_int 0 [0x0])
        (expr_list:REG_EH_REGION (const_int 0 [0x0])
            (nil)))
    (expr_list:REG_DEP_TRUE (use (reg:HI 24 r24))
        (nil)))
;; End of basic block 10 -> ()


(barrier 158 157 164)

;; Start of basic block () -> 11
(note 164 158 161 11 [bb 11] NOTE_INSN_BASIC_BLOCK)

(insn 161 164 162 11 memcpy-1.c:24 (clobber (reg/i:HI 24 r24)) -1 (nil))

(insn 162 161 159 11 memcpy-1.c:24 (clobber (reg:HI 159 [ <retval> ])) -1
(nil))
;; End of basic block 11 -> ( 12)

;; Succ edge  12 [100.0%]  (fallthru)

;; Start of basic block ( 11) -> 12
;; Pred edge  11 [100.0%]  (fallthru)
(code_label 159 162 166 12 1 "" [0 uses])

(note 166 159 160 12 [bb 12] NOTE_INSN_BASIC_BLOCK)

(insn 160 166 163 12 memcpy-1.c:24 (set (reg/i:HI 24 r24)
        (reg:HI 159 [ <retval> ])) -1 (nil))

(insn 163 160 0 12 memcpy-1.c:24 (use (reg/i:HI 24 r24)) -1 (nil))
;; End of basic block 12 -> ( 1)

;; Succ edge  EXIT [100.0%]  (fallthru)


-- 

hutchinsonandy at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |hutchinsonandy at gcc dot
                   |                            |gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41440

Reply via email to