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

            Bug ID: 126788
           Summary: __builtin_convertvector upconvert + downconvert
                    doesn't cancel out
           Product: gcc
           Version: 17.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: liuhongt at gcc dot gnu.org
  Target Milestone: ---

This is from pr126784, below is the tectase:

typedef int  v2si __attribute__((vector_size (8)));
typedef long long v2di __attribute__((vector_size (16)));
v2si
f2 (v2si a, v2si b)
{

  v2di z = __builtin_convertvector (a, v2di);
  return __builtin_convertvector (z, v2si);
}


v2si f2 (v2si a, v2si b)
{
  v2di z;
  v2si _3;

  <bb 2> [local count: 1073741824]:
  # DEBUG BEGIN_STMT
  z_2 = (v2di) a_1(D);
  # DEBUG z => z_2
  # DEBUG BEGIN_STMT
  _3 = (v2si) z_2;
  return _3;

}


a_1 can be returned directly.

Reply via email to