https://bugs.llvm.org/show_bug.cgi?id=35108

            Bug ID: 35108
           Summary: Polly miscompile when using array accesses with
                    different sizes
           Product: Polly
           Version: unspecified
          Hardware: All
                OS: All
            Status: NEW
          Severity: release blocker
          Priority: P
         Component: Optimizer
          Assignee: polly-...@googlegroups.com
          Reporter: l...@meinersbur.de
                CC: llvm-bugs@lists.llvm.org

$ cat updateDimensionality.c
#include <stdint.h>
#include <stdio.h>

int main() {
  uint64_t A[1][256] = {0};

  for (int i = 0; i < 64; i += 1) {
    A[0][i] = 42;
  }

  for (int i = 0; i < 128; i += 1) {
    ((uint32_t*)&A[0][0])[65 + i*2] = 21;
  }

  for (int i = 0; i < 64; i += 1) {
    A[0][i*2] = 2;
  }

  printf("Result: %lu\n", A[0][64]);
  return 0;
}


$ clang updateDimensionality.c -O3 -o updateDimensionality-O3 &&
./updateDimensionality-O3
Result: 2

$ clang updateDimensionality.c -O3 -o updateDimensionality-polly -mllvm -polly
-mllvm -polly-process-unprofitable -mllvm -polly-position=early  -mllvm
-polly-opt-fusion=max && ./updateDimensionality-polly
Result: 90194313218

The fault is in MemoryAccess::updateDimensionality(). It is the same issue that
keeps Polly from optimizing Polybench's gramschmidt from being optimized.
Tobias was already working on a patch.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to