[PATCH] D50474: [LV] Vectorize header phis that feed from if-convertable latch phis

Eli Friedman via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 9 14:00:03 PDT 2018


efriedma added a comment.

Your patch miscompiles the following:

  void f(int n, int *p, int *z) {
  int x = 100;
  #pragma clang loop vectorize(enable)
  for (int i = 0; i < n; ++i) {
  if (p[i] > 0) x *= p[i];
  else x /= p[i];
  z[i]=x;
  }
  }
  typedef void fty(int,int*,int*);
  fty*volatile ff=f;
  int main() {
    int p[] = {1,-2,3,-4};
    int z[] = {1,2,3,4};
    ff(4, p, z);
    printf("%d %d %d %d\n", z[0], z[1], z[2], z[3]);
  }


Repository:
  rL LLVM

https://reviews.llvm.org/D50474





More information about the llvm-commits mailing list