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

Kewen Lin <linkw at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |linkw at gcc dot gnu.org
          Component|testsuite                   |rtl-optimization

--- Comment #4 from Kewen Lin <linkw at gcc dot gnu.org> ---
The culprit change did cause some code gen regression, take a function
testbc_var from fold-vec-extract-char.p7.c as example:

// compiled with -O2 -mcpu=power7

#include <altivec.h>

unsigned char
testbc_var (vector bool char vbc2, signed int si)
{
  return vec_extract (vbc2, si);
}

on both Linux and aix 64-bit, or aix 32-bit, it generates one more addi than
before:

sub-optimal:

.L.testbc_var:
        li 9,48
        addi 10,1,-64
        stxvw4x 34,10,9
        rldicl 5,5,0,60
        addi 9,5,-64    // these two insns
        add 5,9,1       // can be optimized (see below)
        lbz 3,48(5)
        blr

vs. the previous:

.L.testbc_var:
        addi 10,1,-64
        li 9,48
        stxvw4x 34,10,9
        rldicl 5,5,0,60
        add 5,10,5
        lbz 3,48(5)
        blr

Reply via email to