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

--- Comment #5 from Uros Bizjak <ubizjak at gmail dot com> 2010-11-23 10:01:03 
UTC ---
It looks that sched2 pass is to blame. For the original case, we have:

_.split4:

;; Function main1 (main1)
...
  207 [sp:DI+0x30]=xmm8:V16QI
      REG_DEAD: xmm8:V16QI
 1158 xmm1:V16QI=xmm6:V16QI
  208 xmm1:V16QI=vec_select
      REG_EQUIV: [frame:DI-0x60]
  209 [sp:DI+0x40]=xmm1:V16QI
      REG_DEAD: xmm1:V16QI
  210 xmm6:V16QI=vec_select
      REG_DEAD: xmm5:V16QI
      REG_EQUIV: [frame:DI-0x50]
  211 [sp:DI+0x50]=xmm6:V16QI
      REG_DEAD: xmm6:V16QI
...
  468 NOTE_INSN_BASIC_BLOCK
 1327 r12:SI=zero_extend([di:DI+0x35])
 1328 r13:SI=zero_extend([sp:DI+0x50])
  471 {bp:SI=bp:SI+r12:SI;clobber flags:CC;}
...

_.sched2:

;; Function main1 (main1)
...
 1406 NOTE_INSN_PROLOGUE_END
  223 dx:QI=[di:DI+0x2]
  221 ax:QI=[di:DI+0x1]
    8 xmm2:V16QI=unspec[[di:DI+0x11]] 40
 1339 r12:SI=zero_extend([sp:DI+0x48])
 1328 r13:SI=zero_extend([sp:DI+0x50])
    6 xmm1:V16QI=unspec[[di:DI+0x1]] 40
...
  211 [sp:DI+0x50]=xmm6:V16QI
      REG_DEAD: xmm6:V16QI
 1383 r10:SI=zero_extend([sp:DI+0x28])
  209 [sp:DI+0x40]=xmm1:V16QI
      REG_DEAD: xmm1:V16QI
...

See how (insn 1339) and (insn 1328) passed (insn 209) and (insn 211).

Reply via email to