https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49203

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Resolution|---                         |FIXED
             Status|NEW                         |RESOLVED
      Known to work|                            |7.0
   Target Milestone|---                         |7.0
      Known to fail|                            |4.8.5

--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Fixed in at least in GCC 7.0:

.L2:
        leaq    16(%r8), %rsi
        movq    %r8, %rdx
        xorl    %eax, %eax
        .p2align 4,,10
        .p2align 3
.L3:
        movzbl  (%rdx), %ecx
        sall    $2, %eax
        addq    $1, %rdx
        andl    $3, %ecx
        orl     %ecx, %eax
        cmpq    %rsi, %rdx
        jne     .L3
        movl    %eax, %edx
        addq    $4, %r8
        movb    %ah, 2(%rdi)
        shrl    $24, %edx
        movb    %al, 3(%rdi)
        addq    $4, %rdi
        movb    %dl, -4(%rdi)
        movl    %eax, %edx
        shrl    $16, %edx
        movb    %dl, -3(%rdi)
        cmpq    %r8, %r9
        jne     .L2



  <bb 3> [94.12%]:
  # tmp_37 = PHI <tmp_23(3), 0(5)>
  # ivtmp.17_17 = PHI <ivtmp.17_15(3), ivtmp.28_79(5)>
  _1 = tmp_37 << 2;
  _87 = (void *) ivtmp.17_17;
  _3 = MEM[base: _87, offset: 0B];
  _20 = _3 & 3;
  _4 = (unsigned int) _20;
  tmp_23 = _1 | _4;
  ivtmp.17_15 = ivtmp.17_17 + 1;
  if (ivtmp.17_15 != _83)
    goto <bb 3>; [93.75%]
  else
    goto <bb 4>; [6.25%]

  <bb 4> [5.88%]:
  _5 = tmp_23 >> 24;
  _6 = (unsigned char) _5;
  _76 = (void *) ivtmp.27_82;
  MEM[base: _76, offset: 0B] = _6;
  _7 = tmp_23 >> 16;
  _9 = (unsigned char) _7;
  MEM[base: _76, offset: 1B] = _9;
  _10 = tmp_23 >> 8;
  _12 = (unsigned char) _10;
  MEM[base: _76, offset: 2B] = _12;
  _14 = (unsigned char) tmp_23;
  MEM[base: _76, offset: 3B] = _14;
  ivtmp.27_81 = ivtmp.27_82 + 4;
  ivtmp.28_78 = ivtmp.28_79 + 4;
  if (_71 != ivtmp.28_78)
    goto <bb 5>; [87.51%]
  else
    goto <bb 6>; [12.49%]

  <bb 5> [5.88%]:
  # ivtmp.27_82 = PHI <ivtmp.27_81(4), ivtmp.27_80(2)>
  # ivtmp.28_79 = PHI <ivtmp.28_78(4), ivtmp.28_77(2)>
  _83 = ivtmp.28_79 + 16;
  goto <bb 3>; [100.00%]

Reply via email to