Quuxplusone / LLVMBugzillaTest

0 stars 0 forks source link

wrong code in Polly on x86_64-linux-gnu with "opt -newgvn -jump-threading -polly-mse -polly-opt-isl -polly-codegen" #33410

Open Quuxplusone opened 7 years ago

Quuxplusone commented 7 years ago
Bugzilla Link PR34439
Status NEW
Importance P enhancement
Reported by Zhendong Su (su@cs.ucdavis.edu)
Reported on 2017-09-03 09:13:29 -0700
Last modified on 2017-09-03 14:15:21 -0700
Version unspecified
Hardware PC All
CC ditaliano@apple.com, llvm-bugs@lists.llvm.org, llvm@meinersbur.de, tobias@grosser.es
Fixed by commit(s)
Attachments
Blocks
Blocked by
See also
$ clangpolly -v
clang version 6.0.0 (http://llvm.org/git/clang.git
3c2d979f2f63e55ba81da21814ab6451aa26c117) (http://llvm.org/git/llvm.git
d37603c94cc6fc100afbe5940f813f60e959dff4)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/su/bin
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/5
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/i686-linux-gnu/6.0.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.4
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.4.7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.6.4
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.7
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.7.4
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.8.5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/4.9.3
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.0
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6
Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/6.0.0
Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/5.4.0
Candidate multilib: .;@m64
Candidate multilib: 32;@m32
Candidate multilib: x32;@mx32
Selected multilib: .;@m64
$
$ clangpolly -O3 -mllvm -disable-llvm-optzns -c -emit-llvm -o small.bc small.c
$ optpolly -newgvn -jump-threading -polly-mse -polly-opt-isl -polly-codegen -o
small-opt.bc small.bc
$ clangpolly small-opt.bc
$ ./a.out
0
$
$ clangpolly -O0 small.c
$ ./a.out
15
$

------------------------------------

int printf (const char *, ...);

int a, b;

int main ()
{
  int c, d = 0;
  for (; d < 16; d++)
    {
      c = d;
      if (!d)
        c = c / 2;
      a = c;
      b = a;
    }
  printf ("%d\n", b);
  return 0;
}
Quuxplusone commented 7 years ago

The implementation of -polly-mse (Maximal Scalar Expansion) is not yet complete. At least copy-in and copy-out is currently missing and leads to miscompilation on code that relies on it. In the case below, it is probably 'b' which accesses non-initialized memory because copy-out is missing.